Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Rom Hacking: hukka | 2 guests
Acmlm's Board - I2 Archive - Rom Hacking - Yoshi's Island Data | |
Pages: 1 2 3Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
cpubasic13
17 years old now. Time to buy some M rated games by myself!
Level: 54

Posts: 412/1346
EXP: 1206934
For next: 26936

Since: 03-15-04
From: Blame my parents, Eddy

Since last post: 2 days
Last activity: 1 day
Posted on 08-02-04 04:35 AM Link | Quote
I have a problem. I am editing the "Welcome to Yoshi's Island" level and can't move the ground up one...



As you can see, I made the edge move up one, but I can't make the ledge move up one also. I tried the "guess and check" method and nothing was affected. Someone please help me find the offset of the ground? I don't need the offset for X\Y coordinates, as I could find them myself after that.

EDIT: Fixed some grammer.


(edited by cpubasic13 on 08-01-04 07:37 PM)
Cellar Dweller

Flurry
!!!
Level: 27

Posts: 100/269
EXP: 107817
For next: 8342

Since: 03-15-04
From: Arkansas

Since last post: 16 days
Last activity: 34 min.
Posted on 08-02-04 10:23 AM Link | Quote
Here is a dump of the objects in the welcome level. I quickly hacked in a dumper. Don't trust the width, height, and description fields too much.

I hope that this helps.


OFFSET RECORD SIZE COMMAND X POS Y POS WIDTH HEIGHT DESCRIPTION
0x0000 EXT 4 BYTE 0xfd 0x0f 0x6f 0x00 0x00 prevent downward scroll into same screen
0x0004 EXT 4 BYTE 0xfd 0x10 0x6f 0x00 0x00 prevent downward scroll into same screen
0x0008 EXT 4 BYTE 0x82 0x00 0x77 0x00 0x00
0x000c 5 BYTE 0xeb 0x18 0x76 0x00 0x02 left edge
0x0011 5 BYTE 0x67 0x18 0x78 0x00 0x07 filler block
0x0016 EXT 4 BYTE 0xdf 0x25 0x71 0x00 0x00
0x001a 5 BYTE 0x67 0x25 0x77 0x05 0x08 filler block
0x001f EXT 4 BYTE 0xfd 0x20 0x6f 0x00 0x00 prevent downward scroll into same screen
0x0023 5 BYTE 0xeb 0x2f 0x70 0x00 0x05 left edge
0x0028 EXT 4 BYTE 0xda 0x2d 0x6e 0x00 0x00
0x002c 5 BYTE 0xe8 0x2b 0x74 0x03 0x0b
0x0031 5 BYTE 0x67 0x2f 0x76 0x01 0x09 filler block
0x0036 5 BYTE 0x67 0x30 0x73 0x00 0x02 filler block
0x003b 5 BYTE 0xeb 0x4a 0x69 0x00 0x16 left edge
0x0040 EXT 4 BYTE 0xdb 0x47 0x64 0x00 0x00
0x0044 5 BYTE 0xeb 0x52 0x54 0x00 0x10 left edge
0x0049 EXT 4 BYTE 0xda 0x50 0x52 0x00 0x00
0x004d 5 BYTE 0x67 0x53 0x57 0x00 0x0d filler block
0x0052 5 BYTE 0xe4 0x54 0x53 0x0b 0x2c horz. flower platform
0x0057 EXT 4 BYTE 0x50 0x58 0x51 0x00 0x00 right arrow sign
0x005b EXT 4 BYTE 0xfd 0x3f 0x4f 0x00 0x00 prevent downward scroll into same screen
0x005f EXT 4 BYTE 0xfd 0x40 0x4f 0x00 0x00 prevent downward scroll into same screen
0x0063 EXT 4 BYTE 0xfd 0x30 0x5f 0x00 0x00 prevent downward scroll into same screen
0x0067 EXT 4 BYTE 0xfd 0x20 0x5f 0x00 0x00 prevent downward scroll into same screen
0x006b EXT 4 BYTE 0xfd 0x10 0x50 0x00 0x00 prevent downward scroll into same screen
0x006f EXT 4 BYTE 0xfd 0x00 0x50 0x00 0x00 prevent downward scroll into same screen
0x0073 5 BYTE 0xeb 0x3f 0x6b 0x00 0x14 left edge
0x0078 EXT 4 BYTE 0xd9 0x3d 0x69 0x00 0x00
0x007c 5 BYTE 0xec 0x43 0x6b 0x00 0x14 right edge
0x0081 5 BYTE 0xe4 0x41 0x6b 0x01 0x14 horz. flower platform
0x0086 4 BYTE 0x63 0x43 0x6c 0x07 0x00 horz. wooden platform
0x008a 5 BYTE 0x67 0x4b 0x7c 0x08 0x03 filler block
0x008f 5 BYTE 0xe7 0x49 0x6e 0xff 0x11
0x0094 5 BYTE 0xea 0x44 0x6e 0x01 0x11
0x0099 5 BYTE 0xe4 0x46 0x72 0x01 0x0d horz. flower platform
0x009e 5 BYTE 0x67 0x43 0x6e 0x00 0x11 filler block
0x00a3 5 BYTE 0x67 0x4a 0x6e 0x00 0x11 filler block
0x00a8 5 BYTE 0x67 0x52 0x65 0x01 0x1a filler block
0x00ad 5 BYTE 0x67 0x40 0x6e 0x00 0x11 filler block
0x00b2 EXT 4 BYTE 0xfd 0x40 0x50 0x00 0x00 prevent downward scroll into same screen
0x00b6 EXT 4 BYTE 0xfd 0x4f 0x4f 0x00 0x00 prevent downward scroll into same screen
0x00ba EXT 4 BYTE 0xfd 0x50 0x4f 0x00 0x00 prevent downward scroll into same screen
0x00be EXT 4 BYTE 0xfd 0x3f 0x4f 0x00 0x00 prevent downward scroll into same screen
0x00c2 4 BYTE 0xc5 0x4e 0x50 0x00 0x01
0x00c6 4 BYTE 0xc5 0x4f 0x4e 0x00 0x00
0x00ca 4 BYTE 0xc5 0x51 0x4d 0x00 0x00
0x00ce 4 BYTE 0xc5 0x53 0x4e 0x00 0x00
0x00d2 4 BYTE 0xc5 0x27 0x6e 0x00 0x00
0x00d6 4 BYTE 0xc4 0x29 0x6c 0x02 0x00 coin
0x00da 4 BYTE 0xc5 0x2d 0x6d 0x00 0x00
0x00de 4 BYTE 0xc5 0x35 0x6d 0x00 0x00
0x00e2 4 BYTE 0xc5 0x36 0x6c 0x00 0x00
0x00e6 4 BYTE 0xc4 0x38 0x6b 0x02 0x00 coin
0x00ea 4 BYTE 0xc5 0x45 0x64 0x05 0x00
0x00ee 5 BYTE 0x68 0x46 0x62 0x01 0x00 coins
0x00f3 5 BYTE 0xeb 0x0d 0x77 0x00 0x08 left edge
0x00f8 5 BYTE 0xe8 0x0e 0x77 0x01 0x08
0x00fd 5 BYTE 0x6b 0x00 0x78 0x0c 0x07
0x0102 4 BYTE 0xc4 0x1f 0x6c 0x03 0x00 coin
0x0106 4 BYTE 0xc4 0x1f 0x6f 0x02 0x00 coin
0x010a 5 BYTE 0xe8 0x1b 0x76 0x01 0x09
0x010f 5 BYTE 0xe4 0x1d 0x77 0x07 0x08 horz. flower platform
0x0114 5 BYTE 0xe4 0x19 0x76 0x01 0x09 horz. flower platform
0x0119 4 BYTE 0xc4 0x11 0x73 0x05 0x00 coin
0x011d 5 BYTE 0xec 0x32 0x70 0x00 0x0f right edge
0x0122 EXT 4 BYTE 0xd8 0x32 0x6f 0x00 0x00
0x0126 5 BYTE 0xe4 0x31 0x6f 0x01 0x02 horz. flower platform
0x012b 5 BYTE 0x67 0x31 0x72 0x00 0x0d filler block
0x0130 5 BYTE 0x6c 0x4d 0x65 0x02 0x00
0x0135 5 BYTE 0xe4 0x4b 0x65 0x01 0x1a horz. flower platform
0x013a 5 BYTE 0xe4 0x50 0x65 0x01 0x16 horz. flower platform
0x013f 5 BYTE 0x67 0x4d 0x66 0x02 0x15 filler block
0x0144 5 BYTE 0xeb 0x17 0x78 0x00 0x07 left edge
0x0149 5 BYTE 0xec 0x10 0x78 0x00 0x07 right edge
0x014e 4 BYTE 0x63 0x10 0x78 0x07 0x00 horz. wooden platform
0x0152 EXT 4 BYTE 0x50 0x0a 0x76 0x00 0x00 right arrow sign
0x0156 5 BYTE 0xe4 0x33 0x78 0x0b 0x07 horz. flower platform
0x015b 5 BYTE 0x67 0x32 0x78 0x00 0x07 filler block
0x0160 5 BYTE 0x67 0x3f 0x78 0x00 0x07 filler block
0x0165 5 BYTE 0x6c 0x39 0x74 0x01 0x00
0x016a 5 BYTE 0x6c 0x36 0x74 0x01 0x00
0x016f 5 BYTE 0x6c 0x1e 0x73 0x01 0x00
0x0174 5 BYTE 0x6c 0x21 0x73 0x01 0x00


It's my 100th post!!
cpubasic13
17 years old now. Time to buy some M rated games by myself!
Level: 54

Posts: 414/1346
EXP: 1206934
For next: 26936

Since: 03-15-04
From: Blame my parents, Eddy

Since last post: 2 days
Last activity: 1 day
Posted on 08-03-04 04:10 AM Link | Quote
Yeah. I could use that. Thanks, Cellar Dweller.

And congrats for your 100th post.
Cellar Dweller

Flurry
!!!
Level: 27

Posts: 111/269
EXP: 107817
For next: 8342

Since: 03-15-04
From: Arkansas

Since last post: 16 days
Last activity: 34 min.
Posted on 08-13-04 06:25 AM Link | Quote
Here is some information on a couple of tables related to the map screen and primary level entries.

There is a 4 byte per record table at 0x7E6D0(0F:E4D0) containing information on the entry positions from the map screen. The first byte is the level number, the second is the starting X, the third is the starting Y, and I don't know what the last byte is.

There is a table at 0x7E646(0F:E446) that contains 16 bit offsets, not indices, into the table at 0x7E6D0. Each entry in this table is a multiple of four. This table is 69(dec) entries long.

I'm not sure how these fit in with the map screen.

This information is based on the information that Iggy posted and the following trace excerpt:
$01:AFF7 AD 1A 02    LDA $021A  [$01:021A]   A:0001 X:FFFE Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:392 VC:254 00
$01:AFFA 0A ASL A A:0000 X:FFFE Y:0000 D:0000 DB:01 S:01FB P:envmxdiZc HC:432 VC:254 00
$01:AFFB AA TAX A:0000 X:FFFE Y:0000 D:0000 DB:01 S:01FB P:envmxdiZc HC:446 VC:254 00
$01:AFFC BF 46 E4 0F LDA $0FE446,x[$0F:E446] A:0000 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdiZc HC:460 VC:254 00
$01:B000 AA TAX A:0000 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdiZc HC:508 VC:254 00
$01:B001 BF D1 E4 0F LDA $0FE4D1,x[$0F:E4D1] A:0000 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdiZc HC:522 VC:254 00
$01:B005 29 FF 00 AND #$00FF A:7707 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:570 VC:254 00
$01:B008 0A ASL A A:0007 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:594 VC:254 00
$01:B009 0A ASL A A:000E X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:608 VC:254 00
$01:B00A 0A ASL A A:001C X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:622 VC:254 00
$01:B00B 0A ASL A A:0038 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:636 VC:254 00
$01:B00C 8D 8C 60 STA $608C [$01:608C] A:0070 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:650 VC:254 00
$01:B00F BF D2 E4 0F LDA $0FE4D2,x[$0F:E4D2] A:0070 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:690 VC:254 00
$01:B013 29 FF 00 AND #$00FF A:0177 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:738 VC:254 00
$01:B016 0A ASL A A:0077 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:762 VC:254 00
$01:B017 0A ASL A A:00EE X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:776 VC:254 00
$01:B018 0A ASL A A:01DC X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:790 VC:254 00
$01:B019 0A ASL A A:03B8 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:804 VC:254 00
$01:B01A 8D 90 60 STA $6090 [$01:6090] A:0770 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:818 VC:254 00
$01:B01D BF D0 E4 0F LDA $0FE4D0,x[$0F:E4D0] A:0770 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:858 VC:254 00
$01:B021 4C 8D B0 JMP $B08D [$01:B08D] A:0700 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:906 VC:254 00
$01:B08D 29 FF 00 AND #$00FF A:0700 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:930 VC:254 00
$01:B090 0A ASL A A:0000 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdiZc HC:954 VC:254 00
$01:B091 85 00 STA $00 [$00:0000] A:0000 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdiZc HC:968 VC:254 00
$01:B093 0A ASL A A:0000 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdiZc HC:1000 VC:254 00
$01:B094 65 00 ADC $00 [$00:0000] A:0000 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdiZc HC:1014 VC:254 00
$01:B096 AA TAX A:0000 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdiZc HC:1046 VC:254 00
$01:B097 BF 22 E8 0F LDA $0FE822,x[$0F:E822] A:0000 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdiZc HC:1060 VC:254 00
$01:B09B 85 32 STA $32 [$00:0032] A:81C7 X:0000 Y:0000 D:0000 DB:01 S:01FB P:eNvmxdizc HC:1108 VC:254 00
$01:B09D BF 23 E8 0F LDA $0FE823,x[$0F:E823] A:81C7 X:0000 Y:0000 D:0000 DB:01 S:01FB P:eNvmxdizc HC:1140 VC:254 00
$01:B0A1 85 33 STA $33 [$00:0033] A:1681 X:0000 Y:0000 D:0000 DB:01 S:01FB P:envmxdizc HC:1188 VC:254 00
cpubasic13
17 years old now. Time to buy some M rated games by myself!
Level: 54

Posts: 455/1346
EXP: 1206934
For next: 26936

Since: 03-15-04
From: Blame my parents, Eddy

Since last post: 2 days
Last activity: 1 day
Posted on 08-17-04 07:02 AM Link | Quote
...I think there is something wrong with the text table. I tried looking up "Make" and "Eggs" using that table and there was no such thing. I copied and pasted the table if anyone wants to know. Anyone want to check to see if the table is correct? I don't know if it is just me...
Someguy

Buzzy Beetle
It seems as though the girl you've fallen for is also a pyromaniac.
Level: 32

Posts: 54/397
EXP: 193329
For next: 13113

Since: 03-15-04
From: I'm proud to be an American... I think...

Since last post: 1 day
Last activity: 5 hours
Posted on 08-17-04 07:15 AM Link | Quote
I got it to work by searching for the hex equivalent of Make(twice because the first is for a text box). You can edit up the text from there
Cellar Dweller

Flurry
!!!
Level: 27

Posts: 129/269
EXP: 107817
For next: 8342

Since: 03-15-04
From: Arkansas

Since last post: 16 days
Last activity: 34 min.
Posted on 09-01-04 12:05 PM Link | Quote
I have some more info thanks in large part to some enhacements I made to my copy of the SNES9X debugger. Note that this info pertains to the US 1.1 ROM.

First, there are a couple tables that are similar to the last two that I posted about. The difference is that they are for the midpoint enterances.

There is a 4 byte per record table at 0x7E83A(0F:E63A) that contains midpoint enterances. Iggy's notes and my previous post in this thread describe the format.

There is a table of 16 bit offsets into the previously described table at 0x7E7B0(0F:E5B0).

I found the subroutine table for the standard objects. It is at 0x903FE(12:81FE). It contiains 16 pointers to the beginings of the subroutines minus 1. Control is transfered to the subroutine by pushing the bank of the subroutine (0x12) on to the stack followed by the 16 bit value from the table and then executing an RTL instruction. Many similar objects share the same subroutine.

There is also some kind of 1 byte per entry property table at 0x906EC(12:84EC). It is refered to before the subroutine table. Many (all?) of the vertical only objects have a value of 1 in their entry in the table.

For shits and giggles, try changing 0x906F8 from 0x01 to 0x00. Then go look for a poundable post.

I also messed around with the decoded level in RAM. Objects are decoded to a area of RAM that appears to start at $7F:8000. Each 16x16 block is specified by a 16 bit value. The blocks are grouped into screens, and the screens are in an order that I have not figured out.

I bumped into the font data with TLP(it doesn't work well with my old version WINE ). The glyph bitmaps start at 0x4BF30. The glyphs are 8 pixels by 12 pixels and 1 bit per pixel. There is also a glyph width table at 0x4BE30. The format is one byte per glyph. The character codes that Iggy posted are indices into both the width and glyph data.

EDIT: Added font info
EDIT2: The glyph data seems to start at 0x4BF2FF. I can dump the font with FEIDIAN using the settings "-r 8,12,16,16,0x4bf2f".



(edited by Cellar Dweller on 09-03-04 03:59 AM)
cpubasic13
17 years old now. Time to buy some M rated games by myself!
Level: 54

Posts: 612/1346
EXP: 1206934
For next: 26936

Since: 03-15-04
From: Blame my parents, Eddy

Since last post: 2 days
Last activity: 1 day
Posted on 10-07-04 04:03 AM Link | Quote
These are my notes on Entrances/Midway points for v1.0 (U) of the rom. These were based on Cellar Dweller's very helpful info which I used to find these offsets.

xBF671: 00 07 77 00

00 is level number, 07 is the X screen and position number, and 77 is Y screen and coordinate number... last thing is probably when you complete the level it goes to the next level... I am not sure...

Changing 00 to 01 loads up level 1-2 with same starting position as 1-1. Change 07 to 12 makes X coordinate 12. Change 77 to 12 makes Y coordinate 12 (therefore, starting position is (12, 12) if both X and Y are changed)

xbf7dc 00 78 76 00

If 00 is changed, it will do exactly like above. Same applies to the others.

There is one major difference on how these are arranged: if a level has 2 midway points (for example, 1-2) it will do what the level is assigned to first and then the next midway point (usually is not level specific, but... eh). Lets say you put down 2 midway points in 1-1. What would the second one do? Put you in 1-2, right? Right. It will put you to the first midway point of 1-2. Well, change offset 0xBF7DF from 01 to 00 and what happens? Duh! It puts you in 1-1! There is one drawback... you cannot use the first midway point in 1-2. That is when in the header that last unknown value is used. I haven't touched this yet, but this is enough info to make midway points.

There are a lot of unused midways. Remember how 1-3 has one midway point? It can actually have 2 midway points, just that the first (yes, first) one leads to level 00 at coordinate (0, 0). Change it to have a completly different midway point if you change the level's second unknown value. Uhhh... I think...

x783847 is the data that Cellar Dweller posted about with the level entrances (Quote: "There is a table at 0x7E646(0F:E446) that contains 16 bit offsets, not indices, into the table at 0x7E6D0. Each entry in this table is a multiple of four. This table is 69(dec) entries long." [this pertains to the version 1.1, although 1.0 has different offsets...])

Finally, for the last thing, xBF751 is the thing with the midway points (Quote from Cellar Dweller (info for 1.1, although the same except for offsets): "There is a table of 16 bit offsets into the previously described table at 0x7E7B0(0F:E5B0)")

Pardon anything that may seem weird or I didn't know it, but then again, I am no SNES ASM expert... just a basic hex editing rom hacker...
Either way, anyone can do this. Even if you don't know ASM. Play around with this and see what happens. Although I would only apply the following, as that is all that is needed to do this stuff...

Entrances:
xBF671: 00 07 77 00
00 is level number, 07 is the X screen and position number, and 77 is Y screen and coordinate number... last thing is probably when you complete the level it goes to the next level... I am not sure...

Midway Points:
xbf7dc 00 78 76 00
Apply above.

This should be enough info for entrance/midway points. Hope this helps.


(edited by cpubasic13 on 10-06-04 07:04 PM)
Pages: 1 2 3Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Rom Hacking - Yoshi's Island Data | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.015 seconds.