Skip to content

Commit 5ddab95

Browse files
committed
Add nrom
1 parent ea5f57a commit 5ddab95

File tree

11 files changed

+80
-24
lines changed

11 files changed

+80
-24
lines changed

MapperChecklist.md

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,29 @@
22

33
| Mapper |Menu |Level|Game |Rcket| DKS |Score|Legal|Reset|TpRll|Save |
44
|------------------------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
5-
| auto mesen | | |||||||| |
6-
| auto mesen cnrom | | |||||||| |
7-
| auto everdrive | ||| |||||| |
8-
| auto everdrive cnrom | || ||||||| |
9-
| auto krzysio | ||||||||| |
10-
| auto krzysio cnrom | ||||||||| |
11-
| auto cnrom pcb | ||| |||| | | N/A |
5+
| auto mesen | | | | | | | | | | |
6+
| auto mesen cnrom | | | | | | | | | | |
7+
| auto everdrive | | | | | | | | | | |
8+
| auto everdrive cnrom | | | | | | | | | | |
9+
| auto krzysio | | | | | | | | | | |
10+
| auto krzysio cnrom | | | | | | | | | | |
11+
| auto cnrom pcb | | | | | | | | | | N/A |
1212
| auto eric | | | | | | | | | | |
1313
| auto gunter | | | | | | | | | | |
1414
| auto allen | | | | | | | | | | |
1515
| auto non pro everdrive | | | | | | | | | | |
16+
| nrom mesen | | | | | | | | | | |
1617
| mmc1 mesen | | | | | | | | | | |
1718
| cnrom mesen | | | | | | | | | | |
1819
| mmc3 mesen | | | | | | | | | | |
1920
| mmc5 mesen | | | | | | | | | | |
20-
| mmc1 everdrive |||||||||||
21-
| cnrom everdrive |||||||||||
22-
| mmc3 everdrive |||||||||||
23-
| mmc5 everdrive |||||||||||
24-
| mmc1 krzysio |||||||||||
25-
| cnrom krzysio |||||||||||
26-
| mmc3 krzysio |||||||||||
21+
| nrom everdrive | | | | | | | | | | |
22+
| mmc1 everdrive | | | | | | | | | | |
23+
| cnrom everdrive | | | | | | | | | | |
24+
| mmc3 everdrive | | | | | | | | | | |
25+
| mmc5 everdrive | | | | | | | | | | |
26+
| nrom krzysio | | | | | | | | | | |
27+
| mmc1 krzysio | | | | | | | | | | |
28+
| cnrom krzysio | | | | | | | | | | |
29+
| mmc3 krzysio | | | | | | | | | | |
2730
| mmc5 krzysio | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |

build.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ console.log('TetrisGYM buildscript');
77
console.time('build');
88

99
const mappers = { // https://www.nesdev.org/wiki/Mapper
10+
0: 'NROM',
1011
1: 'MMC1',
1112
3: 'CNROM',
1213
4: 'MMC3',

src/chr.asm

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
.segment "CHR"
22
; CHRBankSet0:
33
.incbin "chr/title_menu_tileset.chr"
4-
.incbin "chr/rocket_tileset.chr"
5-
; CHRBankSet1:
64
.incbin "chr/game_tileset.chr"
5+
; CHRBankSet1:
6+
.if INES_MAPPER <> 0 ; exclude for NROM
7+
.incbin "chr/rocket_tileset.chr"
8+
.endif

src/gamemode/speedtest.asm

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ gameMode_speedTest:
2121
sta PPUADDR
2222
lda #$30
2323
sta PPUDATA
24-
lda #CHRBankSet1
24+
lda #CHRBankSet0
25+
lda #NMIEnable|BGPattern1|SpritePattern1
26+
sta currentPpuCtrl
2527
jsr changeCHRBanks
2628

2729
jsr waitForVBlankAndEnableNmi

src/gamemode/waitscreen.asm

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@ waitScreenLoad:
66
sta renderMode
77
jsr updateAudioWaitForNmiAndDisablePpuRendering
88
jsr disableNmi
9-
lda #NMIEnable|BGPattern1|SpritePattern1
9+
lda #NMIEnable
1010
sta currentPpuCtrl
11-
lda #CHRBankSet0
11+
.if INES_MAPPER <> 0
12+
; NROM (and possibly FDS in the future) won't load the 2nd bankset
13+
; and will instead use the title/menu chrset letters. This won't be noticeable
14+
; unless a graphic is added
15+
lda #CHRBankSet1
16+
.endif
1217
jsr changeCHRBanks
1318
jsr bulkCopyToPpu
1419
.addr wait_palette

src/gamemodestate/initbackground.asm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
gameModeState_initGameBackground:
22
jsr updateAudioWaitForNmiAndDisablePpuRendering
33
jsr disableNmi
4-
lda #CHRBankSet1
4+
lda #CHRBankSet0
55
jsr changeCHRBanks
66
jsr bulkCopyToPpu
77
.addr game_palette
@@ -38,7 +38,7 @@ gameModeState_initGameBackground:
3838
sta PPUDATA
3939
@heartEnd:
4040

41-
lda #NMIEnable
41+
lda #NMIEnable|BGPattern1|SpritePattern1
4242
sta PPUCTRL
4343
sta currentPpuCtrl
4444
jsr resetScroll

src/palettes.asm

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,13 @@ menu_palette:
1313
.byte $17,$27,$37,$0F,$30,MENU_HIGHLIGHT_COLOR,$00,$0F
1414
.byte $16,$2A,$28,$0F,$16,$26,$27,$0f,$2A,$FF
1515
rocket_palette:
16-
.byte $3F,$11,$7,$16,$2A,$28,$0f,$37,$18,$38 ; sprite
16+
.byte $3F,$11,$7
17+
.if INES_MAPPER = 0
18+
.byte $2D,$30,$27 ; Ufo colors
19+
.else
20+
.byte $16,$2A,$28 ; Cathedral colors
21+
.endif
22+
.byte $0f,$37,$18,$38 ; sprite
1723
.byte $3F,$00,$8,$0f,$3C,$38,$00,$0F,$20,$12,$15 ; bg
1824
.byte $FF
1925
wait_palette:

src/playstate/gameover_rocket.asm

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,12 @@ sleep_gameplay:
7676
endingAnimation: ; rocket_screen
7777
jsr updateAudioWaitForNmiAndDisablePpuRendering
7878
jsr disableNmi
79-
lda #CHRBankSet0
79+
.if INES_MAPPER <> 0
80+
; NROM will use a smaller ufo in the game tileset
81+
lda #CHRBankSet1
82+
.endif
8083
jsr changeCHRBanks
81-
lda #NMIEnable|BGPattern1|SpritePattern1
84+
lda #NMIEnable
8285
sta currentPpuCtrl
8386
jsr copyRleNametableToPpu
8487
.addr rocket_nametable
@@ -221,12 +224,14 @@ handleRocket:
221224
sta $1
222225
jsr loadRectIntoOamStaging
223226

227+
.if INES_MAPPER <> 0 ; leave offsets the same when using smaller nrom ufo
224228
lda #$3F
225229
adc spriteYOffset
226230
sta spriteYOffset
227231
lda #$78
228232
adc endingRocketX
229233
sta spriteXOffset
234+
.endif
230235
lda #<spriteCathedralFire0
231236
sta $0
232237
lda #>spriteCathedralFire0

src/reset.asm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ mapperInit:
6464
inc mapperId ; 1 for MMC1, otherwise 0 for CNROM
6565
not_mmc1:
6666

67+
; NROM (no init)
68+
.elseif INES_MAPPER = 0
69+
6770
; MMC1
6871
.elseif INES_MAPPER = 1
6972
setMMC1PRG

src/sprites/drawrect.asm

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
.if INES_MAPPER = 0
2+
; compact graphic for smaller tileset capacity
3+
spriteCathedral: ; top of UFO
4+
.byte $00, $00, $02, $01, $00, $94, $FF
5+
6+
spriteCathedralFire0: ; bottom of UFO 1
7+
.byte $00, $08, $02, $01, $00, $A4, $FF
8+
9+
spriteCathedralFire1: ; bottom of UFO 2
10+
.byte $00, $08, $02, $01, $00, $64, $FF
11+
12+
.else
13+
114
spriteCathedral:
215
.byte $20, $0, $1, $1, $20, $30
316
.byte $8, $8, $7, $1, $20, $31
@@ -9,6 +22,7 @@ spriteCathedralFire0:
922

1023
spriteCathedralFire1:
1124
.byte $0, $0, $4, $2, $1, $A2, $FF
25+
.endif
1226

1327
rectBuffer := generalCounter
1428
rectX := rectBuffer+0
@@ -45,13 +59,15 @@ loadRectIntoOamStaging:
4559
ldx oamStagingLength
4660

4761
lda rectY
62+
clc
4863
adc spriteYOffset
4964
sta oamStaging,x
5065
lda rectAddr
5166
sta oamStaging+1,x
5267
lda rectAttr
5368
sta oamStaging+2,x
5469
lda rectX
70+
clc
5571
adc spriteXOffset
5672
sta oamStaging+3,x
5773

@@ -63,6 +79,7 @@ loadRectIntoOamStaging:
6379

6480
; next rightwards tile
6581
lda #$8
82+
clc
6683
adc rectX
6784
sta rectX
6885
inc rectAddr
@@ -78,11 +95,14 @@ loadRectIntoOamStaging:
7895
sta rectW
7996

8097
lda rectAddr
98+
sec
8199
sbc rectW
100+
clc
82101
adc #$10
83102
sta rectAddr
84103

85104
lda #$8
105+
clc
86106
adc rectY
87107
sta rectY
88108

0 commit comments

Comments
 (0)