Talk:Make sram: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
(get the rules on the wiki for when I decide to make the changes) |
m (parodius is out of business) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
== Super NES support == | == Super NES support == | ||
Blargg and others [http://nesdev. | Blargg and others [http://forums.nesdev.org/viewtopic.php?p=59070#p59070 requested] adding support for Super NES games to make_sram.py. | ||
In order to determine when to create a .sav or .srm file, follow these rules: | In order to determine when to create a .sav or .srm file, follow these rules: | ||
* filename.lower().endswith(('.sfc', '.smc', '.swc', '.fig')) | * filename.lower().endswith(('.sfc', '.smc', '.swc', '.fig')) | ||
* ROM image size is a multiple of 32768 bytes. If the size is 512 bytes more than this, a copier header is present, and the ROM image proper starts at $200 in the file. Presence of a copier header is not correlated with the file name suffix. | * ROM image size is a multiple of 32768 bytes. If the size is 512 bytes more than this, a copier header is present, and the ROM image proper starts at $200 in the file. Presence of a copier header is not correlated with the file name suffix. | ||
* The internal header is 32 bytes at $7FC0 (plus copier header) for LoROM or $FFC0 (plus copier header) for | * The internal header is 32 bytes at $7FC0 (plus copier header) for LoROM or $FFC0 (plus copier header) for HiROM. | ||
* To make sure the header is a valid Super NES ROM image, at least two out of three should match: | * To make sure the header is a valid Super NES ROM image, at least two out of three should match: | ||
** internal_header[$15] is $20/$30 for LoROM or $21/$31 for HiROM. | ** internal_header[$15] is $20/$30 for LoROM or $21/$31 for HiROM. | ||
** TV system is internal_header[$19] and should be less than $10. | ** TV system is internal_header[$19] and should be less than $10. | ||
** internal_header[$1e] = internal_header[$1c] EOR $FF, and internal_header[$1f] = internal_header[$1d] EOR $FF. | ** internal_header[$1e] = internal_header[$1c] EOR $FF, and internal_header[$1f] = internal_header[$1d] EOR $FF. | ||
** The header contains a checksum of the entire ROM (subject to mirroring if the ROM is not a power of 2 bytes in size). But ROM hacks often fail this checksum, and ROM hacks are part of PowerPak's reason for existence, so just ignore it. | ** The header contains a checksum of the entire ROM (subject to mirroring if the ROM is not a power of 2 bytes in size). But ROM hacks often fail this checksum especially when stacked, and ROM hacks are part of PowerPak's reason for existence, so just ignore it. | ||
* internal_header[$16] tells what components are on the board. Value $02 indicates a battery-backed PRG RAM and no coprocessor. | * internal_header[$16] tells what components are on the board. Value $02 indicates a battery-backed PRG RAM and no coprocessor. | ||
* Size of PRG RAM is 1024 << internal_header[$18] bytes; this byte must be in range $01 through $05. | * Size of PRG RAM is 1024 << internal_header[$18] bytes; this byte must be in range $01 through $05. | ||
--[[User:Tepples|Tepples]] 14:37, 27 March 2010 (UTC) | --[[User:Tepples|Tepples]] 14:37, 27 March 2010 (UTC) |
Latest revision as of 12:30, 19 December 2012
Super NES support
Blargg and others requested adding support for Super NES games to make_sram.py. In order to determine when to create a .sav or .srm file, follow these rules:
- filename.lower().endswith(('.sfc', '.smc', '.swc', '.fig'))
- ROM image size is a multiple of 32768 bytes. If the size is 512 bytes more than this, a copier header is present, and the ROM image proper starts at $200 in the file. Presence of a copier header is not correlated with the file name suffix.
- The internal header is 32 bytes at $7FC0 (plus copier header) for LoROM or $FFC0 (plus copier header) for HiROM.
- To make sure the header is a valid Super NES ROM image, at least two out of three should match:
- internal_header[$15] is $20/$30 for LoROM or $21/$31 for HiROM.
- TV system is internal_header[$19] and should be less than $10.
- internal_header[$1e] = internal_header[$1c] EOR $FF, and internal_header[$1f] = internal_header[$1d] EOR $FF.
- The header contains a checksum of the entire ROM (subject to mirroring if the ROM is not a power of 2 bytes in size). But ROM hacks often fail this checksum especially when stacked, and ROM hacks are part of PowerPak's reason for existence, so just ignore it.
- internal_header[$16] tells what components are on the board. Value $02 indicates a battery-backed PRG RAM and no coprocessor.
- Size of PRG RAM is 1024 << internal_header[$18] bytes; this byte must be in range $01 through $05.
--Tepples 14:37, 27 March 2010 (UTC)