Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Wonderboy III: Monster Lair (Genesis)/Notes: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(Created page with "{{notes|game=Wonderboy III: Monster Lair (Genesis)}} == Gfx format == == Sprites == == Tilemaps == == Palettes ==")
 
Line 2: Line 2:


== Gfx format ==
== Gfx format ==
Gfx data (tiles) are organized by levels (0 to 11). Pointers to each level data are stored from 0x43000 to 0x4302c. Then, for each level, gfx are stored by chunk.
For example, pointer to level 3 chunks is 0x432cc (read at 0x4300c). Then, at 0x432cc, there are pointers to 4 chunks : 0x00000000 (null chunk), 0x432e0, 0x43188, 0x433aa, 0x433aa.
Each chunk is a list of 16 bytes entries, terminated by a 0000 :
* 1 word: number of tiles - 1
* 1 long: pointer to actual data
* 1 word: 1 if gfx uses color indices 0 to 7 (x = 0 in the following), -1 if gfx uses color indices 8 to 15 (x = 1 in the following).
Actual tile data is stored in 3bpp interleaved format:
* 1 byte: a7 a6 a5 a4 a3 a2 a1 a0
* 1 byte: b7 b6 b5 b4 b3 b2 b1 b0
* 1 byte: c7 c6 c5 c4 c3 c2 c1 c0
gives :
* 1 byte (2 pixels): (x a7 b7 c7) (x a6 b6 c6)
* 1 byte (2 pixels): (x a5 b5 c5) (x a4 b4 c4)
* 1 byte (2 pixels): (x a3 b3 c3) (x a2 b2 c2)
* 1 byte (2 pixels): (x a1 b1 c1) (x a0 b0 c0)
{| class="wikitable" style="margin:auto"
!||Chunk 0||Chunk 1||Chunk 2||Chunk 3||Chunk 4||Chunk 5
|-
| Level 0
| 0x4303e
| 0x43060
| 0x43092
|
|
|
|-
| Level 1
| 0x430d6
| 0x43188
| 0x43192
| 0x43192
|
|
|-
| Level 2
| 00000000
| 0x431e0
| 0x43188
| 0x4328a
| 0x4328a
|
|-
| Level 3
| 00000000
| 0x432e0
| 0x43188
| 0x433aa
| 0x433aa
|
|-
| Level 4
| 00000000
| 0x433fc
| 0x4347e
| 0x43188
| 0x43188
| 0x434a8
|-
| Level 5
| 00000000
| 0x434f6
| 0x43188
| 0x43598
| 0x43598
|
|-
| Level 6
| 00000000
| 0x435e6
| 0x43188
| 0x43698
| 0x43698
|
|-
| Level 7
| 00000000
| 0x436e6
| 0x43188
| 0x43790
| 0x43790
|
|-
| Level 8
| 00000000
| 0x437ee
| 0x43188
| 0x438c0
| 0x438c0
|
|-
| Level 9
| 00000000
| 0x43916
| 0x439a8
| 0x439b2
| 0x439b2
|
|-
| Level 10
| 00000000
| 0x439fe
|
|
|
|
|-
| Level 11
| 0x43034
|
|
|
|
|
|}
|}


== Sprites ==
== Sprites ==

Revision as of 22:36, 4 March 2024

Chip tiny.png The following article is a Notes Page for Wonderboy III: Monster Lair (Genesis).

Gfx format

Gfx data (tiles) are organized by levels (0 to 11). Pointers to each level data are stored from 0x43000 to 0x4302c. Then, for each level, gfx are stored by chunk.

For example, pointer to level 3 chunks is 0x432cc (read at 0x4300c). Then, at 0x432cc, there are pointers to 4 chunks : 0x00000000 (null chunk), 0x432e0, 0x43188, 0x433aa, 0x433aa.

Each chunk is a list of 16 bytes entries, terminated by a 0000 :

  • 1 word: number of tiles - 1
  • 1 long: pointer to actual data
  • 1 word: 1 if gfx uses color indices 0 to 7 (x = 0 in the following), -1 if gfx uses color indices 8 to 15 (x = 1 in the following).

Actual tile data is stored in 3bpp interleaved format:

  • 1 byte: a7 a6 a5 a4 a3 a2 a1 a0
  • 1 byte: b7 b6 b5 b4 b3 b2 b1 b0
  • 1 byte: c7 c6 c5 c4 c3 c2 c1 c0

gives :

  • 1 byte (2 pixels): (x a7 b7 c7) (x a6 b6 c6)
  • 1 byte (2 pixels): (x a5 b5 c5) (x a4 b4 c4)
  • 1 byte (2 pixels): (x a3 b3 c3) (x a2 b2 c2)
  • 1 byte (2 pixels): (x a1 b1 c1) (x a0 b0 c0)
Chunk 0 Chunk 1 Chunk 2 Chunk 3 Chunk 4 Chunk 5
Level 0 0x4303e 0x43060 0x43092
Level 1 0x430d6 0x43188 0x43192 0x43192
Level 2 00000000 0x431e0 0x43188 0x4328a 0x4328a
Level 3 00000000 0x432e0 0x43188 0x433aa 0x433aa
Level 4 00000000 0x433fc 0x4347e 0x43188 0x43188 0x434a8
Level 5 00000000 0x434f6 0x43188 0x43598 0x43598
Level 6 00000000 0x435e6 0x43188 0x43698 0x43698
Level 7 00000000 0x436e6 0x43188 0x43790 0x43790
Level 8 00000000 0x437ee 0x43188 0x438c0 0x438c0
Level 9 00000000 0x43916 0x439a8 0x439b2 0x439b2
Level 10 00000000 0x439fe
Level 11 0x43034

|}

Sprites

Tilemaps

Palettes