ROM Header: Difference between revisions
→Support by flashcarts
m (Corrected savetype support on flashcart tools) |
|||
(13 intermediate revisions by 4 users not shown) | |||
Line 18:
These fields could be tuned in replica cartridges to adapt to the actual maximum physical speed that the ROM can be accessed, but please pay attention that many emulators expect to find the 4 "standard" values here and actually use them as a "fixed ID" to detect if the ROM dump was byte-swapped.
If you are an emulator author, please make sure that your emulator can load a ROM with arbitrary values in these first 4 bytes, and assume the ROM is in plain "big-endian" format (not byte swapped, not endian swapped). All modern homebrew ROMs should ship in plain format anyway, as the other formats are obsolete and strongly discouraged.
|-
|0x04
|0x4
|Clock Rate
|Constant value used by libultra versions 2.0I and earlier, to naively calculate how much real-time has passed based on the CPU's Count register.
The value is masked by 0xFFFFFFF0, then multiplied by 0.75 to account for the CPU clock's multiplier (1.5x) and that the Count register increments every 2 CPU cycles.
However, if the masked value equals zero, libultra defaults to 0x03B9ACA0 (62,500,000) before multiplying by 0.75.
All known ROMs, except those listed below, have this field set to 0x0000000F.
{| class="wikitable"
! Clock Rate !! libultra ver. !! Game Code !! Title
|-
| 0x03B9ACAF || 2.0D || NCUP || Cruis'n USA (Europe)
|-
| 0x03B9ACAF || 2.0D || NCUE || Cruis'n USA (USA) (Rev A)
|-
| 0x03B9ACAF || 2.0D || NCUE || Cruis'n USA (USA) (Rev B)
|-
| 0x03B9ACAF || 2.0D || NCUE || Cruis'n USA (USA)
|-
| 0x03A07F5F || 2.0G || NDMP || Doom 64 (Europe)
|-
| 0x03A07F5F || 2.0H || NDMJ || Doom 64 (Japan)
|-
| 0x03A07F5F || 2.0G || NDME || Doom 64 (USA) (Rev A)
|-
| 0x03A07F5F || 2.0G || NDME || Doom 64 (USA)
|-
| 0x03B9ACAF || 2.0G || NXGP || NBA Hangtime (Europe)
|-
| 0x03B9ACAF || 2.0G || NXGE || NBA Hangtime (USA)
|-
| 0x03A07F5F || 2.0I || NRIP || New Tetris, The (Europe)
|-
| 0x03A07F5F || 2.0I || NRIE || New Tetris, The (USA)
|-
| 0x03A07F5F || 2.0H || NQKP || Quake 64 (Europe)
|-
| 0x03A07F5F || 2.0H || NQKE || Quake 64 (USA)
|-
| 0x03A07F5F || 2.0F || NFXJ || Star Fox 64 (Japan)
|-
| 0x03A07F5F || 2.0H || NFXE || Star Fox 64 (USA) (Rev A)
|-
| 0x03A07F5F || 2.0H || NFXE || Star Fox 64 (USA)
|-
| 0x03A07F5F || 2.0D || NSWP || Star Wars - Shadows of the Empire (Europe)
|-
| 0x03A07F5F || 2.0D || NSWE || Star Wars - Shadows of the Empire (USA) (Beta)
|-
| 0x03A07F5F || 2.0D || NSWE || Star Wars - Shadows of the Empire (USA) (Rev A)
|-
| 0x03A07F5F || 2.0D || NSWE || Star Wars - Shadows of the Empire (USA) (Rev B)
|-
| 0x03A07F5F || 2.0D || NSWE || Star Wars - Shadows of the Empire (USA)
|-
| 0x03A07F5F || 2.0D || NSWJ || Star Wars - Teikoku no Kage (Japan)
|-
| 0x03A07F5F || 2.0I || NEPP || Star Wars Episode I - Racer (Europe) (En,Fr,De)
|-
| 0x03A07F5F || 2.0I || NEPJ || Star Wars Episode I - Racer (Japan)
|-
| 0x03A07F5F || 2.0I || NEPE || Star Wars Episode I - Racer (USA)
|}
Using Doom 64 as an example, 0x03A07F5F is masked to 0x03A07F50 (60,850,000), and then multiplied by 0.75 equals 0x02B85F7C (45,637,500).
Keep in mind that there is no known way for software to change the clock frequency used by either the RCP or CPU. So if/when games use the Count register divided by 46,875,000 to measure a real-time second, the calculated result will be inaccurate.
[[User:Polprzewodnikowy|Polprzewodnikowy]] from the N64brew Discord, experimented with Doom 64 and Star Fox 64 on real hardware. They found that increasing this value increases the delay before the copyright screen or Nintendo logo (respectively) shows up on screen.
|-
|0x08
|0x4
|Boot Address
|Initial PC in RDRAM. IPL3 will
Line 336 ⟶ 397:
|+
!Emulator
!Savetype
!Controllers
|-
|Ares
|Yes
|Yes
|-
|cen64
|Yes
|No
|-
|Parallel Launcher
|Yes
|Yes
|-
|mupen64plus (core)
|Yes
|No
|-
|Rosalie's Mupen GUI
|Yes
|No
|}
Line 355 ⟶ 431:
| rowspan="4" |64drive
|64drive official C tool
|None
|-
|64drive menu
|None
|-
|g64drive
Line 372 ⟶ 448:
|ed64
|None
|-
|UNFLoader
|Savetype supported
|-
| rowspan="3" |SummerCart64
|N64FlashcartMenu
|Savetype supported
|-
|sc64deployer
|Savetype supported
|-
|UNFLoader
|