(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
05-20-24 01:35 PM
Acmlm's Board - I3 Archive - - Posts by Cellar Dweller +
Pages: 1 2 3 4 5 6 7
User Post
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 12-13-05 05:32 PM, in Need some online C++ quizzes to help study for final! Link
http://online-judge.uva.es/

The site lists problems from ACM contests. I haven't tried it myself, but you can submit solutions to be automatically compiled and tested.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 12-14-05 04:17 PM, in Who Has SuperTux 0.12? Link
http://supertux.berlios.de/

That site has a description of the game, screenshots, and downloads.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 12-21-05 01:13 AM, in A nice slew of difficulty. Link
There should be an SQL file that came with AcmlmBoard. Run it using PMA.

Then use PMA, or one of the admin panels some people have made, to create categories and forums.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 12-31-05 12:45 AM, in FILE SHARING!!! Link
neotransotaku's solution will not work. Home edition has an annoying "feature" that forceguest can not be turned off. It is designed to prevent files shared from it from being accessed over the network with any account other than "Guest". So, any file on a computer running home edition can not be accessed over the network unless the guest account can access it.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-02-06 05:16 PM, in How??? Link
Originally posted by Elric
Anything v1.Ax is not official, and not supported. Simple as that.

Any version of AcmlmBoard is not official, and not supported for that matter.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-03-06 12:27 AM, in Thank you, but one slash is enough Link
I am using the regular without number/bar graphics scheme, but a graphical slash appears in post counts in addition to the text one.

I would have submited this to the bug tracker, but...
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-05-06 05:41 PM, in General Super Mario 64 hacking / TT64 Progress thread Link
I'm finally getting back to reverse engineering SM64 now that I have an emulator working on my new computer. I'm now running Debian on AMD64, which doesn't have 32 bit libraries. I installed Mupen64 in a chroot jail with 32 bit libraries because there are too many 32 bit-isms to fix before it will compile to a 64 bit binary.

I think that it would be quicker and easier to create a flat text format instead if an XML format for level data.

I have been working on a couple of small programs for listing data in the SM64 ROM. One formats GBI(Graphics Binary Interface, the commands that draw graphics) commands as plain text in a format like a developer might use for manual input. The other formats level data as plain text, seperating the raw hex into one command per line, printing a description, and extracting parameters.

I have also updated my simple command line MIPS disassembler, which, unlike Jovis's disaembler, uses symbolic register names and can export output to a text file with standard command line redirection. If anyone wants a copy, I can upload the most recent version, but it will need to be compiled.

VL-Tone: I've noticed that your SM64 hacking doc uses a mixture of zero based and one based indexing to describe the location of parameters within commands. I recommend zero based indexing for all commands, even though I posted some command descriptions with one based indexing. Also, the music command should have two 16 bit parameters, one for music and one unknown.

EDIT: I have found only one parameter that is specified using zero based indexing: the address parameter to command 0x11.

I have found that command 0x31 has two one byte parameters. It is only valid inside an area specific block of commands. The first parameter(3rd byte) is an index into a two byte array in the area data structure, and the second parameter(4th byte) is the value that will be placed in the array. If it is used outside an area speific block or with a value greater than one in the first parameter, it will have no effect. I don't yet know what ultimate effect it has.


(edited by Cellar Dweller on 01-05-06 10:24 PM)
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-07-06 10:57 PM, in c++ - repeating mouse btn Link
I haven't done much with the Windows API in ages, but may I suggest a timer. I don't remember if Windows provdes one shot, peroidic, or both kinds of timers. It sounds like you need a periodic timer, where you can start it when the mouse button is pressed, perform an action when a timer message is received, and stop it when the button is released. If you can only find a one shot timer, restart it on every timer message.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-09-06 03:00 AM, in General Super Mario 64 hacking / TT64 Progress thread Link
I lost posts that way too. Also, I once lost a slightly longer than average post because the thread I was replying to (a thread about locking SMW hacks, LM source code, or both) was closed while I was typing.

The level lister tool produces output much like the debug output you described, lines of raw hex, but it also prints a short description of certain commands and formats some of the parameters. For example:
(08) 2e 08 00 00 07 00 e9 58 / set solidity data / 07:00e958

This makes the output easy to read, and highlights commands that need more study(with blankness).

The little tools I have been writing are written in C and highly portable, so they should compile fine on Windows, Linux, Mac, etc..

A few months ago, I experimented some with GTK+ with OpenGL via GTKGlExt. I wrote a little test app with a mix of C and C++ on my brother's Windows computer and it compiled with no changes to the source files on my 64 bit Linux computer, but I couldn't use the Windows makefile generated by Dev-C++. This looks like a promising approach for a cross platform editor.

I did some experimenting with the 0x31 command after my previous post in this thread. I did observe some of the effects, but I did not see the sand. For some reason I can't get textures to appear when using the glN64 plugin, and the only other graphics plugin I have is an unoptimized software rendering plugin that gets only a few fps. If I changed the first parameter, the the terrain would still behave differently, but this could because the game engine is seeing an uninitialized byte that would have been set when using zero as the first parameter.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-13-06 02:33 AM, in General Super Mario 64 hacking / TT64 Progress thread Link
oops.

I made a mistake while looking for command 0x31 in the command table. I was off by one and the information I previously posted actually pertained to command 0x30.

Command 0x31 actually has a single 16 bit parameter that gets ORd with the existing setting in the area structure used by the game engine. (eg. "31 04 00 0f" followed by "31 04 00 f0" will result in the setting being 0x00ff, not 0x00f0) This suggests that the setting consists at least partly of bit flags. The setting also controls what mario does when idle. (eg. 0x0002 makes him rub his hands together for warmth)

I just hacked a primitive tracer into Mupen 64. I used the instruction formatting code and tables from the disassembler I wrote. The only way to control it is by editing the CPU core and recompiling Mupen 64. I have the function that handles the SW instruction check if it is executing the SW instruction in the level loading code that stores the pointer to the solidity data. The LW instruction function checks to see if it is reading from the saved solidity address and if it is, it starts a 512 instruction trace to stdout. Now I need to start looking at the output...

I have already found out that the file select menu sets off the trace, so it must have a level script and, oddly, some kind of solidity data.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-13-06 02:58 PM, in General Super Mario 64 hacking / TT64 Progress thread Link
Tracing turned up the following function, which I decompiled. arg2 points to the solidity data and arg4 points to to the command 0x39 objects. I seems to process 16 bit commands.

0x803833b8(int arg1, short *arg2, int arg3, short *arg4)

{
long lv2; /* sp + 0x20 */
short lv1; /* sp + 0x26 */
short lv3; /* sp + 0x2a */

*(0x80361184) = 0;
*(0x8038be90) = 0;
*(0x8036116c) = 0;
*(0x80361170) = 0;
0x803825d0(); /* this initalizes an array of 256 0x18(24)-byte structs at 0x8038be98 */
for (;; ) {
lv1 = *arg2;
arg2 ++;

if (lv1 < 0x40) {
0x80383068(&arg2, lv2, lv1, &arg3);
} else if (lv1 == 0x40) {
lv2 = 0x803831d0(&arg2);
} else if (lv1 == 0x43) {
0x802e28ec(lv3, &arg2)
} else if (lv1 == 0x44) {
0x80383228(&arg2)
} else if (lv1 == 0x41) {
continue;
} else if (lv1 == 0x42) {
break;
} else if (lv1 < 0x65) {
0x80383068(&arg2, lv2, lv1, &arg3);
}
}


if (arg4 && *arg4 != -1) {
if (*arg4 >= 0 && *arg4 < 0x1e) {
0x802e2690(arg1, arg4);
} else {
0x802e2414(arg1, arg4);
}
}
*(0x80361174) = *(0x8036116c);
*(0x80361178) = *(0x80361170);
}


EDIT: here is another:
/* returns pointer to virts */

void * 0x803831d0(short **pwp)
{
short *rv; /* sp + 0x00 */
int n; /* sp + 0x14 -- number or virts */

n = (int)(*pwp); /* load nbr of virts */
*pwp++;
rv = *pwp;
*pwp += n*3;
return rv;
}



(edited by Cellar Dweller on 01-13-06 04:03 PM)
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-20-06 12:23 AM, in General Super Mario 64 hacking / TT64 Progress thread Link
I added a thing to Mupen 64 to print the command and its location in memory when it encounters the load instruction of the "lv1 = *arg2" line. (ie. it prints the values for lv1 and arg2) A number of solidity commands are processed between the 0x40 command and the 0x41 command.
Solidity command is:40 at 801098e8

d60
Solidity command is:0 at 8010a648
8e0
Solidity command is:5 at 8010af28
10
Solidity command is:b at 8010af38
14e
Solidity command is:13 at 8010b086
22
Solidity command is:14 at 8010b0a8
178
Solidity command is:15 at 8010b220
3ee
Solidity command is:28 at 8010b60e
4a8
Solidity command is:29 at 8010bab6
352
Solidity command is:2a at 8010be08
106
Solidity command is:65 at 8010bf0e
22
Solidity command is:70 at 8010bf30
1c
Solidity command is:41 at 8010bf4c
2
Solidity command is:43 at 8010bf4e
8c
Solidity command is:42 at 8010bfda


The above is output from the modification with some stuff removed and the differences between the addresses manualy added.

Most of the level loading commands setup pointers and stuff. I have even mapped out most of the per area data structure. An array of them exists in memory, and each one holds stuff like the music number, a head pointer to a linked list of objects in the area, a head pointer to a linked list of exits in the area, a pointer to the solidity data for the area, etc. It seems that the data in the per area structures are further processed by the game engine when entering an area.

EDIT: OOPS! I should have used a calculator for the first difference. It is 0xd60 not 0x12a0. Fixed.


(edited by Cellar Dweller on 01-20-06 12:48 AM)
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-20-06 03:59 AM, in General Super Mario 64 hacking / TT64 Progress thread Link
Yes.

"verts" should have been spelled "virts". The 0x803831d0 function advances the current processing location to the end of the virtices, and returns a pointer to start of the said virtices. The 0x803833b8 function saves the returned pointer and passes it to the 0x80383068 function, which process the commands containing triangles.

Solidity data VISUALIZED:


Here is what I know now. Command 0x0040 sets the vertex data as previously described. Commands 0x0000 - 0x003f and 0x0064 - ??? contain triangles. After the command number is the number of triangles. Each triangle is defined by a triple of point indices. After the triangles is the next command. Command 0x0041 is a noop. Command 0x0042 ends the list.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-24-06 07:25 PM, in General Super Mario 64 hacking / TT64 Progress thread Link
VL-Tone: There is no need to worry about taking too much credit. you have done more than anyone else. Also, you do not apperar to be trying minimizing my effort, and even if you did I'd probably just shrug it off.

I have located the function table for the geometry layout commands and have started disassembling some functions. I have already learned more about the 0x02 command.

02 01 00 00 0e 00 0b f0

|/ |/ |---/ |---------/
| | | |
| | | \-- Segmented address to decode from
| | |
| | \-- Ignored
| |
| \-- If is 01 save current location for return
|
\-- Command 02: Call/jump other layout data


I found some tutorials about Quake/Doom 3 editing, and I don't think that it will be similar. Wheras Quake levels are constructed with solid "brushes", SM64 editing is likely to revolve editing individual vertices and triangles, but there still could be tools that operate on groups of items(vertices, triangles, objects).

A while back I found some info about a N64 graphics export plugin for Alias. I also found a similar document about the same plugin, but with more info.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-30-06 02:11 AM, in General Super Mario 64 hacking / TT64 Progress thread Link
The code for layout command 0x13 is somewhat complicated, but I can tell you how the 7 unknown bytes are divided up into parameters. They are divided up as a single byte parameter, followed by an array of three 16 bit values.

I am starting to get a (still fuzzy) picture of how the layout decoding works. The 0x15 and 0x13 commands both add nodes to some kind of linked tree/list combo structure that I still need to work on. Unfortunetly, I need to work on my calculus homework too.

SetGeometryMode and ClearGeometryMode are 0xb7 and 0xb6 respectively. There are no parameters in the first 32 bits. The lower 32 bits contain the flags that are to be set or cleared.

0x00000001 - use Z buffering
0x00000004 - use shading
0x00000200 - enable smooth shading(otherwise use flat shading)
0x00001000 - cull front facing triangles
0x00002000 - cull back facing triangles
0x00010000 - enable fog
0x00020000 - enable lighting
0x00040000 - generate texture coords using the normal
0x00080000 - generate texture coords (not sure how this works)




(edited by Cellar Dweller on 01-30-06 01:13 AM)
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-30-06 03:37 AM, in Stat usefullness Idea! Link
I found a copy of it, with source code, in a rather obvious location. It is indeed written in C++ and uses SDL. It is so portable that I was able to compile it under Linux on AMD64 with no changes to the code.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 01-31-06 06:05 PM, in Question about an encoded (?) font Link
I'm no tile editing expert, but it looks like a linear 16x16 1bpp bitmap. I do not have the ROM (or have a tile editor handy) so I have not tested it myself.

Have you tried to dump the font with FEIDIAN?

http://feidian.sourceforge.net/
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 02-03-06 03:41 AM, in The testing/spamming thread Link
Testing a tarball upload...

Attachments

dumpmips0.4.1.tar.gz (12084b) - views: 16
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 02-05-06 11:12 PM, in OpenGL: Display lists vs. Vertex pointers ? Link
Originally posted by BGNG
I might be mistaken, but aren't Vertex Array's an extension? I like to avoid extensions for the sake of allowing utmost compatibility.


From the OpenGL Programming Guide(4th edition): The Official Guide to Learning OpenGL, version 1.4 page 67:
"Vertex arrays became standard in Version 1.1 of OpenGL. Version 1.4 added support for storing fog coordinates and secondary colors in vertex arrays."



(edited by Cellar Dweller on 02-05-06 10:15 PM)
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6310 days
Last view: 6301 days
Posted on 02-17-06 01:03 AM, in Programming UNIX GUIs Link
Yes.
Pages: 1 2 3 4 5 6 7
Acmlm's Board - I3 Archive - - Posts by Cellar Dweller +


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.013 seconds; used 455.41 kB (max 587.47 kB)