If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Blades of Steel (NES, Famicom Disk System)/ROM map: Difference between revisions
Jump to navigation
Jump to search
Rainwarrior (talk | contribs) (PPU RLE bundle format) |
Rainwarrior (talk | contribs) (returning breadcrumb) |
||
Line 1: | Line 1: | ||
{{rommap|game=Blades of Steel}} | |||
==PPU data bundles== | ==PPU data bundles== | ||
This game has a simple RLE compressed format for PPU data. The ROM stores 15 PPU data bundles, decoded by a subroutine at $1C:C818, taking X as an index (x2) to tables that locate the data: | This game has a simple RLE compressed format for PPU data. The ROM stores 15 PPU data bundles, decoded by a subroutine at $1C:C818, taking X as an index (x2) to tables that locate the data: |
Revision as of 05:29, 6 March 2019
The following article is a ROM map for Blades of Steel (NES, Famicom Disk System).
PPU data bundles
This game has a simple RLE compressed format for PPU data. The ROM stores 15 PPU data bundles, decoded by a subroutine at $1C:C818, taking X as an index (x2) to tables that locate the data:
$1C:C89D - pointer table to packet data (2-byte address, little-endian, X as index) $1C:C8BB - bank table for packet data (1-byte UNROM bank numbers, X/2 as index)
After setting the specified bank, and loading the pointer, the data stream encoded at this pointer is as follows:
1. 2-byte PPU write address (little endian) 2. Control byte: 2.1. $FF - end of bundle stop decoding 2.2. $7F - new write address return to step 1 2.3. $01-$7E - run-length for next byte $xx - byte to be repeated for the duration of the run length return to step 2 2.4. $81-$FE - & $7F = length of uncompressed data that follows ... - uncompressed data (length given above) return to step 2 2.4. $00 - "invalid" run-length value of 256 (never used) $xx - byte to be repeated 256 times return to step 2 2.5. $80 - invalid uncompressed length value (never used) ... - 255 bytes of uncompressed data $80 is written as the 256th byte data pointer doesn't advance, return to step 2.5