Skip to content

Commit ff560a5

Browse files
committed
centralize mapper duties
1 parent abcb395 commit ff560a5

21 files changed

+221
-95
lines changed

MapperChecklist.md

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
# MMC1 Mesen
2+
3+
- [ ] qual legal/title
4+
- [ ] qual rocket screen game
5+
- [ ] qual reset
6+
- [ ] regular high score game
7+
- [ ] reset
8+
- [ ] tap roll screen
9+
10+
# MMC1 Everdrive
11+
12+
- [ ] qual legal/title
13+
- [ ] qual rocket screen game
14+
- [ ] qual reset
15+
- [ ] regular high score game
16+
- [ ] reset
17+
- [ ] tap roll screen
18+
19+
# MMC1 Krzysio
20+
21+
- [ ] qual legal/title
22+
- [ ] qual rocket screen game
23+
- [ ] qual reset
24+
- [ ] regular high score game
25+
- [ ] reset
26+
- [ ] tap roll screen
27+
28+
# CNROM Mesen
29+
30+
- [ ] qual legal/title
31+
- [ ] qual rocket screen game
32+
- [ ] qual reset
33+
- [ ] regular high score game
34+
- [ ] reset
35+
- [ ] tap roll screen
36+
37+
# CNROM Everdrive
38+
39+
- [ ] qual legal/title
40+
- [ ] qual rocket screen game
41+
- [ ] qual reset
42+
- [ ] regular high score game
43+
- [ ] reset
44+
- [ ] tap roll screen
45+
46+
# CNROM Krzysio
47+
48+
- [ ] qual legal/title
49+
- [ ] qual rocket screen game
50+
- [ ] qual reset
51+
- [ ] regular high score game
52+
- [ ] reset
53+
- [ ] tap roll screen
54+
55+
# CNROM PCB
56+
57+
- [ ] qual legal/title
58+
- [ ] qual rocket screen game
59+
- [ ] qual reset
60+
- [ ] regular high score game
61+
- [ ] reset
62+
- [ ] tap roll screen
63+
64+
# CNROM Allen
65+
66+
- [ ] qual legal/title
67+
- [ ] qual rocket screen game
68+
- [ ] qual reset
69+
- [ ] regular high score game
70+
- [ ] reset
71+
- [ ] tap roll screen
72+
73+
# CNROM Eric
74+
75+
- [ ] qual legal/title
76+
- [ ] qual rocket screen game
77+
- [ ] qual reset
78+
- [ ] regular high score game
79+
- [ ] reset
80+
- [ ] tap roll screen
81+
82+
# CNROM Gunter
83+
84+
- [ ] qual legal/title
85+
- [ ] qual rocket screen game
86+
- [ ] qual reset
87+
- [ ] regular high score game
88+
- [ ] reset
89+
- [ ] tap roll screen
90+
91+
# MMC3 Mesen
92+
93+
- [ ] qual legal/title
94+
- [ ] qual rocket screen game
95+
- [ ] qual reset
96+
- [ ] regular high score game
97+
- [ ] reset
98+
- [ ] tap roll screen
99+
100+
# MMC3 Everdrive
101+
102+
- [ ] qual legal/title
103+
- [ ] qual rocket screen game
104+
- [ ] qual reset
105+
- [ ] regular high score game
106+
- [ ] reset
107+
- [ ] tap roll screen
108+
109+
# MMC3 Krzysio
110+
111+
- [ ] qual legal/title
112+
- [ ] qual rocket screen game
113+
- [ ] qual reset
114+
- [ ] regular high score game
115+
- [ ] reset
116+
- [ ] tap roll screen
117+
118+
# MMC5 Mesen
119+
120+
- [ ] qual legal/title
121+
- [ ] qual rocket screen game
122+
- [ ] qual reset
123+
- [ ] regular high score game
124+
- [ ] reset
125+
- [ ] tap roll screen
126+
127+
# MMC5 Everdrive
128+
129+
- [ ] qual legal/title
130+
- [ ] qual rocket screen game
131+
- [ ] qual reset
132+
- [ ] regular high score game
133+
- [ ] reset
134+
- [ ] tap roll screen
135+
136+
# MMC5 Krzysio
137+
138+
- [ ] qual legal/title
139+
- [ ] qual rocket screen game
140+
- [ ] qual reset
141+
- [ ] regular high score game
142+
- [ ] reset
143+
- [ ] tap roll screen

bm.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/usr/bin/bash
2+
node build.js -m1
3+
mv tetris.nes tetrismmc1.nes
4+
node build.js -m3
5+
mv tetris.nes tetriscnrom.nes
6+
node build.js -m4
7+
mv tetris.nes tetrismmc3.nes
8+
node build.js -m5
9+
mv tetris.nes tetrismmc5.nes
10+

src/chr.asm

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
chrTitle = 0
2-
chrRocket = 1
3-
chrGame = 2
4-
51
.segment "CHR"
2+
; CHRBankSet0:
63
.incbin "chr/title_menu_tileset.chr"
74
.incbin "chr/rocket_tileset.chr"
5+
; CHRBankSet1:
86
.incbin "chr/game_tileset.chr"

src/chr/rocket_tileset.png

-13.8 KB
Loading

src/gamemode/gametypemenu/menu.asm

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,7 @@ gameMode_gameTypeMenu:
1010
sta menuScrollY
1111
lda #0
1212
sta displayNextPiece
13-
RESET_MMC1
14-
.if HAS_MMC
15-
; switch to blank charmap
16-
; (stops glitching when resetting)
17-
; lda #$03
18-
; jsr changeCHRBank1 ; should this be all or nothing?
19-
.endif
20-
21-
.if INES_MAPPER = 4 ; centralize mirroring
22-
; Horizontal mirroring
23-
lda #$1
24-
sta MMC3_MIRRORING
25-
.elseif INES_MAPPER = 5
26-
; Horizontal mirroring
27-
lda #$50
28-
sta MMC5_NT_MAPPING
29-
.endif
30-
lda #%10011 ; used to be $10 (enable horizontal mirroring)
31-
jsr setMMC1Control
13+
jsr setHorizontalMirroring
3214
lda #$1
3315
sta renderMode
3416
jsr updateAudioWaitForNmiAndDisablePpuRendering
@@ -41,9 +23,9 @@ gameMode_gameTypeMenu:
4123
sta tmp3
4224
jsr copyRleNametableToPpuOffset
4325
.addr game_type_menu_nametable_extra
44-
lda #$00
26+
lda #CHRBankSet0
4527
jsr changeCHRBanks
46-
lda #$80
28+
lda #NMIEnable
4729
sta currentPpuCtrl
4830
jsr waitForVBlankAndEnableNmi
4931
jsr updateAudioWaitForNmiAndResetOamStaging
@@ -68,8 +50,7 @@ gameTypeLoopCheckStart:
6850
lda practiseType
6951
cmp #MODE_KILLX2
7052
bne @checkSpeedTest
71-
lda #$10
72-
jsr setMMC1Control
53+
jsr setVerticalMirroring
7354
lda #29
7455
sta startLevel
7556
sta levelNumber

src/gamemode/levelmenu.asm

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
gameMode_levelMenu:
2-
RESET_MMC1
3-
lda #$10
4-
jsr setMMC1Control
5-
; .if INES_MAPPER = 3
2+
jsr setVerticalMirroring
63
lda currentPpuCtrl
7-
and #%10000000
4+
and #NMIEnable
85
sta currentPpuCtrl
9-
; .endif
106
jsr updateAudio2
117
lda #$7
128
sta renderMode
139
jsr updateAudioWaitForNmiAndDisablePpuRendering
1410
jsr disableNmi
15-
lda #$00
11+
lda #CHRBankSet0
1612
jsr changeCHRBanks
1713
jsr bulkCopyToPpu
1814
.addr menu_palette

src/gamemode/speedtest.asm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ gameMode_speedTest:
2121
sta PPUADDR
2222
lda #$30
2323
sta PPUDATA
24-
lda #$02
24+
lda #CHRBankSet1
2525
jsr changeCHRBanks
2626

2727
jsr waitForVBlankAndEnableNmi

src/gamemode/waitscreen.asm

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ waitScreenLoad:
66
sta renderMode
77
jsr updateAudioWaitForNmiAndDisablePpuRendering
88
jsr disableNmi
9-
lda #$00
10-
sta currentPpuCtrl ; all or nothing?
9+
lda #NMIEnable|BGPattern1|SpritePattern1
10+
sta currentPpuCtrl
11+
lda #CHRBankSet0
1112
jsr changeCHRBanks
1213
jsr bulkCopyToPpu
1314
.addr wait_palette

src/gamemodestate/handlegameover.asm

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,6 @@ gameModeState_handleGameOver:
1313
@gameOver:
1414
lda #$03
1515
sta renderMode
16-
.if INES_MAPPER = 3
17-
lda qualFlag
18-
beq @CNROM_CHR_HIGHSCORE_END
19-
@CNROM_CHR_HIGHSCORE:
20-
lda #1
21-
sta @CNROM_CHR_HIGHSCORE+1
22-
@CNROM_CHR_HIGHSCORE_END:
23-
.endif
2416
jsr handleHighScoreIfNecessary
2517
lda #$01
2618
sta playState

src/gamemodestate/initbackground.asm

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

41-
42-
; .if INES_MAPPER = 3
43-
lda #%10000000
41+
lda #NMIEnable
4442
sta PPUCTRL
4543
sta currentPpuCtrl
46-
.if INES_MAPPER = 4
47-
; Vertical mirroring (Prevents screen glitching)
48-
lda #$0
49-
sta MMC3_MIRRORING
50-
.elseif INES_MAPPER = 5
51-
; Single screen (Prevents screen glitching)
52-
lda #$0
53-
sta MMC5_NT_MAPPING
54-
.endif
44+
jsr setVerticalMirroring
5545
jsr resetScroll
5646
jsr waitForVBlankAndEnableNmi
5747
jsr updateAudioWaitForNmiAndResetOamStaging

0 commit comments

Comments
 (0)