ROM header: Difference between revisions

From WSdev Wiki
Jump to navigationJump to search
m (fix typo)
(add missing developer/publisher IDs (from up-n-atom))
Line 52: Line 52:
|+ Known official developer/publisher IDs
|+ Known official developer/publisher IDs
|-
|-
! ID !! Publisher
! ID !! Publisher code !! Publisher
|-
|-
| $01 || Bandai
| $01 || BAN || Bandai
|-
|-
| $02 || Taito
| $02 || TAT || Taito
|-
|-
| $03 || ?
| $03 || TMY || Tomy
|-
|-
| $04 || Koei
| $04 || KEX || Koei
|-
|-
| $05 || Data East
| $05 || DTE || Data East
|-
|-
| $06 || Asmik Ace
| $06 || AAE || Asmik Ace
|-
|-
| $07 || Media Entertainment
| $07 || MDE || Media Entertainment
|-
|-
| $08 || Nichibutsu
| $08 || NHB || Nichibutsu
|-
|-
| $0A || Coconuts Japan
| $0A || CCJ || Coconuts Japan
|-
|-
| $0B || Sammy
| $0B || SUM || Sammy
|-
|-
| $0C || Sunsoft
| $0C || SUN || Sunsoft
|-
|-
| $0D || ?
| $0D || PAW || Mebius
|-
|-
| $0E || Banpresto
| $0E || BPR || Banpresto
|-
|-
| $10 || Jaleco
| $10 || JLC || Jaleco
|-
|-
| $11 || Imagineer
| $11 || MGA || Imagineer
|-
|-
| $12 || Konami
| $12 || KNM || Konami
|-
|-
| $16 || Kobunsha
| $16 || KBS || Kobunsha
|-
|-
| $17 || Bottom Up
| $17 || BTM || Bottom Up
|-
|-
| $18 || ?
| $18 || KGT || Kaga Tech
|-
|-
| $19 || Sunrise
| $19 || SRV || Sunrise
|-
|-
| $1A || Cyber Front
| $1A || CFT || Cyber Front
|-
|-
| $1B || Megahouse
| $1B || MGH || Megahouse
|-
|-
| $1D || Interbec
| $1D || BEC || Interbec
|-
|-
| $1E || ?
| $1E || NAP || Nihon Application
|-
|-
| $1F || ?
| $1F || BVL || Bandai Visual
|-
|-
| $20 || Athena
| $20 || ATN || Athena
|-
|-
| $21 || KID
| $21 || KDX || KID
|-
|-
| $22 || ?
| $22 || HAL || HAL Corporation
|-
|-
| $23 || ?
| $23 || YKE || Yuki Enterprise
|-
|-
| $24 || Omega Micott
| $24 || OMN || Omega Micott
|-
|-
| $25 || ?
| $25 || LAY || Layup
|-
|-
| $26 || ?
| $26 || KDK || Kadokawa Shoten
|-
|-
| $27 || ?
| $27 || SHL || Shall Luck
|-
|-
| $28 || Squaresoft
| $28 || SQR || Squaresoft
|-
|-
| $2A || ?
| $2A || SCC || ?
|-
|-
| $2B || ?
| $2B || TMC || Tom Create
|-
|-
| $2D || Namco
| $2D || NMC || Namco
|-
|-
| $2E || ?
| $2E || SES || ?
|-
|-
| $2F || ?
| $2F || HTR || ?
|-
|-
| $31 || ?
| $31 || VGD || Vanguard
|-
|-
| $32 || ?
| $32 || MGT || Megatron
|-
|-
| $33 || ?
| $33 || WIZ || Wiz
|-
|-
| $36 || ?
| $35 || TAN || Tanita
|-
| $36 || CPC || Capcom
|}
|}



Revision as of 08:42, 18 August 2023

Every WonderSwan ROM contains a header. It is stored at the end - final sixteen bytes - of the ROM image.

ROM header

Parts of this header are validated or otherwise used by the console's boot ROM - they are marked in bold.

Header contents
Offset Length Contents
$0 5 Far jump instruction: 0xEA, offset, segment.
$5 1 Maintenance
$6 1 Developer/Publisher ID
$7 1 Color
$8 1 Game ID (binary-coded decimal)
$9 1 Game version? / Safe mode
$A 1 ROM size
$B 1 Save type/size
$C 1 Flags
$D 1 Mapper type
$E 2 Checksum (sum of all ROM bytes excluding the checksum)

$5 - Maintenance


7  bit  0
---- ----
s... 0000
|    ||||
|    ++++- Must be zero; otherwise the console will prohibit execution.
|          Purpose unknown.
+--------- (Color) Splash bypass: 0 = Disable, 1 = Enable.
           Bypasses the custom boot splash stored in the console's
           internal EEPROM; presumably used for bricked console recovery.

$6 - Developer/Publisher ID


Known official developer/publisher IDs
ID Publisher code Publisher
$01 BAN Bandai
$02 TAT Taito
$03 TMY Tomy
$04 KEX Koei
$05 DTE Data East
$06 AAE Asmik Ace
$07 MDE Media Entertainment
$08 NHB Nichibutsu
$0A CCJ Coconuts Japan
$0B SUM Sammy
$0C SUN Sunsoft
$0D PAW Mebius
$0E BPR Banpresto
$10 JLC Jaleco
$11 MGA Imagineer
$12 KNM Konami
$16 KBS Kobunsha
$17 BTM Bottom Up
$18 KGT Kaga Tech
$19 SRV Sunrise
$1A CFT Cyber Front
$1B MGH Megahouse
$1D BEC Interbec
$1E NAP Nihon Application
$1F BVL Bandai Visual
$20 ATN Athena
$21 KDX KID
$22 HAL HAL Corporation
$23 YKE Yuki Enterprise
$24 OMN Omega Micott
$25 LAY Layup
$26 KDK Kadokawa Shoten
$27 SHL Shall Luck
$28 SQR Squaresoft
$2A SCC ?
$2B TMC Tom Create
$2D NMC Namco
$2E SES ?
$2F HTR ?
$31 VGD Vanguard
$32 MGT Megatron
$33 WIZ Wiz
$35 TAN Tanita
$36 CPC Capcom

Note that IDs $00 and $01 are used across a variety of commercial games. Homebrew is known to use arbitrary values in this field.

$7 - Color


7  bit  0
---- ----
???? ???c
        |
        +- 0 = Monochrome only, 1 = Supports Color mode.

$9 - Game version? / Safe mode


7  bit  0
---- ----
pvvv vvvv
|||| ||||
|+++ ++++- Game version?
+--------- Internal EEPROM write protect: 0 = Enable, 1 = Disable.
           This prohibits writing to the internal EEPROM for addresses
           0x60 and above (user settings, custom splash screen).
           Games are expected to enable write protection; however, the
           WonderWitch is factory configured with it disabled.

$A - ROM size


Unofficial ROM size values are marked in italic.

ROM size values
ID Size
$00 1 Mbit (128 KiB)
$01 2 Mbit (256 KiB)
$02 4 Mbit (512 KiB)
$03 8 Mbit (1 MiB)
$04 16 Mbit (2 MiB)
$05 24 Mbit (3 MiB)
$06 32 Mbit (4 MiB)
$07 48 Mbit (6 MiB)
$08 64 Mbit (8 MiB)
$09 128 Mbit (16 MiB)
$0A 256 Mbit (32 MiB)
$0B 512 Mbit (64 MiB)

Note that ROM sizes over 16 MiB are not supported by the Bandai 2001 mapper. The Bandai 2003 mapper is limited to 64 MiB.

$B - Save type/size


Save type values
ID Type Size
$00 None
$01 SRAM 64 Kbit (8 KiB)
$02 256 Kbit (32 KiB)
$03 1 Mbit (128 KiB)
$04 2 Mbit (256 KiB)
$05 4 Mbit (512 KiB)
$10 EEPROM 1 Kbit (128 B)
$20 16 Kbit (2 KiB)
$50 8 Kbit (1 KiB)

$C - Flags


7  bit  0
---- ----
???? ?SBv
      |||
      ||+- Starting screen orientation: 0 = Horizontal, 1 = Vertical.
      ||   Controls the splash screen's orientation.
      |+-- ROM bus width: 0 = 16-bit, 1 = 8-bit.
      +--- ROM access time: 0 = 3 CPU cycles, 1 = 1 CPU cycle.

$D - Mapper type


Known mapper types
ID Mapper
$00 Bandai 2001
$01 Bandai 2003
$02 KARNAK (Pocket Challenge V2)