Register | Login | Logout | Edit profile
Views: 1397612
Main | Memberlist | Calendar | Online users
Ranks | FAQ | Search | Photo album
11-13-07 11:42 PM
rustedmagick forums - The ROM Hacking Data Repository - MegaMan5 (Nes) |
Next newer thread | Next older thread
Bag of Stinky Weeds
Level: 8

Posts: 6/11
EXP: 1574
For next: 613

Since: 10-07-02
From: Back in Philadelphia

Since last post: 1775 days
Last activity: 1861 days
Posted on 11-29-02 11:54 PMQuote

~ TEKhacks ~ TEKhacks Board ~ROMHacking School ~ Solid-tbone

Number of Posts
Days Registered
Experience Points
Current Rank
Bag of Stinky Weeds

I was working and I found jump data.

360BE - if you change the byte higher, you jump higher. Try it out. The original byte is 05. I haven't gone higher than 07. Might mess up. Have fun.

©2002 solid-tbone ~ Layout Design by NEONswift

Bag of Stinky Weeds
Level: 3

Posts: 2/2
EXP: 122
For next: 6

Since: 10-08-02
From: Dreamland

Since last post: 1524 days
Last activity: 1409 days
Posted on 09-11-03 03:39 PMQuote
Level Format

Each level uses a bank on $2000 bytes in the rom. Each level can read
Tile-Assembler-Data (TAD) from any bank in the rom. TAD includes Block Data,
Structure Data, and Screen Data. At $3D4D2 there's data on wich bank to read
TAD from for each level.

Bank offsets

Those are data offsets in a level bank, with nes header ($10 bytes) excluded.
For example, Grivityman's Screen Usage data starts at $910 in the rom,
and Waveman's Screen Usage data starts at $2910 etc..

$900 ($50): Screen Usage
$950 ($18): Scroll Data: Direction Type/Lenght for each Position
$968 ($20): Scroll Data: Sprite Palette Preset for each Position
$980 ($1): CHR-Pointer 0 (Tile 00-7F)
$981 ($1): CHR-Pointer 1 (Tile 80-FF)
$988 (?): Palette & Palette-Effect sets
$9E0 ($20): Multi-Path data
$A00 ($80): Sprite Data: Screen Position for each Enemy
$A80 ($80): Sprite Data: X Position for each Enemy
$B00 ($80): Sprite Data: Y Position for each Enemy
$B80 ($80): Sprite Data: Type for each Enemy
$C00 (?): Sprite Number Position for each Screen


$D00 ($400): Tiles used in each Block (TSA Block Data)
$1100 ($100): Type/Palette for each Block (TSA Block Data)
$1200 ($100): Blocks used in each Structure
$1600 ($100): Structures used in each Screen Preset

I wont explain how the data works, as it's pretty complex.
Perhaps ill post about that later.

When the program reads level data, it loads the level bank
in the $A000-$BFFF region of the nes memory map.

00 (00): Gravityman
01 (01): Waveman
02 (02): Stoneman
03 (03): Gyroman
04 (04): Starman
05 (05): Chargeman
06 (06): Napalmman
07 (07): Crystalman
08 (08): Darkman 1
09 (09): Darkman 2
0A (0A): Darkman 3
0B (08): Darkman 4
0C (0C): Wily 1
0D (0D): Wily 2
0E (0E): Wily 3
0F (0C): Wily 4

The value in paranthesis is the TAD bank used by
default for that level.

Various Data

$AE: ($1F8): Sprite Palette Presets
From preset 1 and up.
Preset 0 is default and is located at $3D4CA.
8 bytes for each preset. If byte 0 in the set
is more than $7F, then the BG Palette set will
be switched to that value - $80.
$E279: Gravityman's Movement Speeds
$E556: Movement Speed for Waveman's Hook Attack
$E5DB: Time Waveman uses for his waterwave attack
$2EDB4 ($9): Level Select Screen Level Order
$2F179 : Level Mid/Boss-Point datas
Offset = $2F179 + (level x 6)
From there are 6 bytes of data:
0: Mid-Point Screen Position
1: Mid-Point Scroll Map Position
2: Mid-Point CHR/Palette Preset (dunno how it works)
3: Boss-Point Screen Position
4: Boss-Point Scroll Map Position
5: Boss-Point CHR/Palette Preset (dunno how it works)
$38590: Waveman's Y Movement Speeds
$3859A: Waveman's X Movement Speeds
$3D4CA: Location of Sprite Palette Set #0
$3D4D2 ($10): TAD Bank for each Level
$3D4E2 ($10): Music Track for each Level
$3DC36: Palette Effect Frames (3-byte palettes)
$3DD11: Offset Table in for each Palette Effect
$3DD31: Palette Effect Data
Offset = $3DD31 + offset in Offset Table
From there, the following data are placed:
x Number of frames (1 byte)
x Animation speed (1 byte)
x Palette Number to use for each frame
(Palette Offset = $3DC36 + (Palette Number x 3))

RAM Table

000: Indirect Indexed Adressing 1 Low
Temporary Memory 00
001: Indirect Indexed Adressing 1 High
002: Temporary Memory 02
00F: Temporary Memory 0F
010: Intro Loop Low Counter
011: Intro Loop Hight Counter
016: Joypad Button Status Bits
018: Palette Write Control Register A
00: Do nothing
01: Write to PPU BG Palette from RAM (Check $60 first)
024: Next Screen Position
025: Screen Tile Scrolling X
026: Current Level
| +---- Current Scroll Map Position
+------- Last/Current Scroll Map Direction
02A: Current Screen Preset (?) / Number of screens in Scroll Map Position (?)
02B: Screens Passed in current Scroll Map Position?
030: Megaman's Move
00: Normal
01: Jump
02: Slide
031: Megaman's Direction
00: No specific direction
01: Right
02: Left
03C: MegaMan X Position (Copy of $330)
03D: Current Screen Position (Unknown Usage)
03E: MegaMan Y Position (Copy of $378)
044: Screen Scrolling X
045: Screen Scrolling Y
061-066: Unused
068: Alt-CHR set to set if > 0
06C: Current Level
070-072: Unused
076-077: Unused
092: Frame Counter (Incerased every frame)
0A1: Jump Gravity Power for Megaman
0A2: Vertical Scroliing, copy of $0FA
0A4: Horizontal Scrolling, copy of $0FC
0AB: Counter for 4-color palette to handle in animation
0AC: Megaman's Direction (Probably used in enemy initalizing)
01: Right
02: Left
0AD: Next Enemy to Initialize
0AE: Previous Enemy to Initialize
0B0: Megaman's HP ($80-$9F)
0E4-0E7: Random Numbers?
0EA: BG CHR $00-$7F Bank to write to mapper
0EB: BG CHR $80-$FF Bank to write to mapper
0EC: SPR CHR $00-$3F Bank to write to mapper
0ED: SPR CHR $40-$7F Bank to write to mapper
0EE: SPR CHR $80-$BF Bank to write to mapper
0EF: SPR CHR $C0-$FF Bank to write to mapper
0F2: Copy of value written to $8000 (MMC3 Mapper Register 1)
0F9: Current Screen Position / Something Else
0FA: Vertical Scrolling
0FC: Horizontal Scrolling

200-2FF: Sprite-DMA-RAM

300: ID for each Object?
330: X Position for each Object
348: Screen Positions for each Object
378: Y Position for each Object
3C0: X Movement Speed for each Object
3D8: Y Movement Speed Inceraser Counter?
3F0: Y Movement Speed for each Object

408: ID (-1 or something else) for each Object?
438: Level Enemy Number for each Object
440-44F: Screen Positions visible in the current Scroll Map Position (?)
458: HP for each on-screen Enemy
448: Copy of Megaman's X Position for each Object? or Memory 0 for each Object?
498: Object number produced by each Object?

510: Enemy Type for each Object
5F0-5F3: Palette Animation for each Palette
5F4-5F7: Palette Animation Frame Counters for each Palette
5F8-5FB: Palette Animation PPU Frame Counters for each Palette
5FC-5FF: Unused?

600-61F: Palette (to write to PPU)
620-63F: Palette (Copy?)
640-67F: Attribute Table (to write to PPU)
680-6FF: unused?

700-7FF: Sound RAM

More to come.

(edited by Matrixz on 09-11-03 06:43 PM)
Next newer thread | Next older thread
rustedmagick forums - The ROM Hacking Data Repository - MegaMan5 (Nes) |

AcmlmBoard v1.8a BMF Hax0r Special™
© 2000-2002 Acmlm
Board additions/modifications by:

Page rendered in 0.01 seconds.