mirror of
https://github.com/KarolS/millfork.git
synced 2026-04-20 18:16:35 +00:00
NES mapper experiments
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
; a NES MMC4 cartridge, uses iNES mapper 10
|
||||
; 8×16 kB PRGROM and 32×4kB CHRROM
|
||||
; $c000–$ffff is assumed to be fixed to prgrom7, $8000-$bfff can be switched
|
||||
; uses horizontal mirroring:
|
||||
; - to use vertical mirroring, change byte #6 of the header from $A0 to $A1
|
||||
; uses extra 8K of RAM at $6000–$7fff that is not battery-backed:
|
||||
; - to disable it, change byte #10 of the header from $07 to 0 and remove the ram segment
|
||||
; - to make it battery-backed, change byte #10 of the header from $07 to $77
|
||||
; output file size: 262160 bytes
|
||||
|
||||
[compilation]
|
||||
arch=ricoh
|
||||
modules=nes_hardware,nes_routines,default_panic,nes_mmc4
|
||||
ro_arrays=true
|
||||
|
||||
[allocation]
|
||||
zp_pointers=all
|
||||
|
||||
segments=default,ram,prgrom0,prgrom1,prgrom2,prgrom3,prgrom4,prgrom5,prgrom6,prgrom7,chrrom0,chrrom1
|
||||
default_code_segment=prgrom7
|
||||
|
||||
segment_default_start=$200
|
||||
segment_default_end=$7ff
|
||||
|
||||
segment_ram_start=$6000
|
||||
segment_ram_end=$7fff
|
||||
|
||||
segment_prgrom7_start=$c000
|
||||
segment_prgrom7_end=$ffff
|
||||
|
||||
segment_prgrom0_start=$8000
|
||||
segment_prgrom0_end=$bfff
|
||||
|
||||
segment_prgrom1_start=$8000
|
||||
segment_prgrom1_end=$bfff
|
||||
|
||||
segment_prgrom2_start=$8000
|
||||
segment_prgrom2_end=$bfff
|
||||
|
||||
segment_prgrom3_start=$8000
|
||||
segment_prgrom3_end=$bfff
|
||||
|
||||
segment_prgrom4_start=$8000
|
||||
segment_prgrom4_end=$bfff
|
||||
|
||||
segment_prgrom5_start=$8000
|
||||
segment_prgrom5_end=$bfff
|
||||
|
||||
segment_prgrom6_start=$8000
|
||||
segment_prgrom6_end=$bfff
|
||||
|
||||
segment_chrrom0_start=$0000
|
||||
segment_chrrom0_end=$ffff
|
||||
|
||||
segment_chrrom1_start=$0000
|
||||
segment_chrrom1_end=$ffff
|
||||
|
||||
[output]
|
||||
style=single
|
||||
format=$4E,$45,$53,$1A, 8,16,$A0,8, 0,0,$07,0, 2,0,0,0, prgrom0:$8000:$bfff,prgrom1:$8000:$bfff,prgrom2:$8000:$bfff,prgrom3:$8000:$bfff,prgrom4:$8000:$bfff,prgrom5:$8000:$bfff,prgrom6:$8000:$bfff,prgrom7:$c000:$ffff,chrrom0:$0000:$ffff,chrrom1:$0000:$ffff
|
||||
|
||||
extension=nes
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
asm inline void set_prg_bank(byte a) {
|
||||
STA $A000
|
||||
? RTS
|
||||
}
|
||||
|
||||
// calling with with e.g. $1E will set $0000-$0fff to $E000-$EFFF in chrrom1
|
||||
asm inline void set_chr_bank0(byte a) {
|
||||
STA $B000
|
||||
STA $C000
|
||||
? RTS
|
||||
}
|
||||
|
||||
// calling with with e.g. $1E will set $1000-$1fff to $E000-$EFFF in chrrom1
|
||||
asm inline void set_chr_bank1(byte a) {
|
||||
STA $D000
|
||||
STA $E000
|
||||
? RTS
|
||||
}
|
||||
|
||||
// TODO: FD/FE latches
|
||||
|
||||
asm inline void set_vertical_mirroring() {
|
||||
LDA #0
|
||||
STA $F000
|
||||
? RTS
|
||||
}
|
||||
asm inline void set_horizontal_mirroring() {
|
||||
LDA #1
|
||||
STA $F000
|
||||
? RTS
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
; a very simple NES cartridge format
|
||||
; uses mapper 0 and no bankswitching, so it's only good for very simple games
|
||||
; assumes CHRROM is at chrrom:$0000-$3fff and PRGROM is at prgrom:$8000-$ffff
|
||||
; assumes CHRROM is at chrrom:$0000-$1fff and PRGROM is at prgrom:$8000-$ffff
|
||||
; uses horizontal mirroring; to use vertical mirroring, change byte #6 of the header from 0 to 1
|
||||
; output file size: 40976 bytes
|
||||
|
||||
[compilation]
|
||||
arch=ricoh
|
||||
@@ -21,11 +22,11 @@ segment_prgrom_start=$8000
|
||||
segment_prgrom_end=$ffff
|
||||
|
||||
segment_chrrom_start=$0000
|
||||
segment_chrrom_end=$3fff
|
||||
segment_chrrom_end=$1fff
|
||||
|
||||
[output]
|
||||
style=single
|
||||
format=$4E,$45,$53,$1A, 2,2,0,0, 0,0,0,0, 0,0,0,0, prgrom:$8000:$ffff, chrrom:$0000:$3fff
|
||||
format=$4E,$45,$53,$1A, 2,1,0,0, 0,0,0,0, 0,0,0,0, prgrom:$8000:$ffff, chrrom:$0000:$1fff
|
||||
extension=nes
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user