File tree Expand file tree Collapse file tree 8 files changed +41
-3
lines changed Expand file tree Collapse file tree 8 files changed +41
-3
lines changed Original file line number Diff line number Diff line change 7
7
* Famicom Keyboard support
8
8
* Fixed Floor-0 disabled burns
9
9
* MMC3 Support
10
+ * MMC5 Support
11
+ * Fixed CNROM legal screen CHR bank
12
+ * Fixed CNROM legal to title flicker
13
+ * Block Tool pieces wrap around
10
14
* Added hidden score option
11
15
12
16
## [ v5 tournament]
Original file line number Diff line number Diff line change @@ -16,8 +16,8 @@ while getopts "vm:askh" flag; do
16
16
case " ${flag} " in
17
17
v) set -x ;;
18
18
m)
19
- if ! [[ " ${OPTARG} " =~ ^[134 ]$ ]]; then
20
- echo " Valid INES_MAPPER (-m) options are 1, 3 or 4 "
19
+ if ! [[ " ${OPTARG} " =~ ^[1345 ]$ ]]; then
20
+ echo " Valid INES_MAPPER (-m) options are 1, 3, 4 or 5 "
21
21
exit 1
22
22
fi
23
23
compile_flags+=(" -D INES_MAPPER=${OPTARG} " )
Original file line number Diff line number Diff line change 2
2
INES_MAPPER := 1 ; supports 1, 3 and 4 (MMC1 / CNROM / MMC3)
3
3
.endif
4
4
5
- HAS_MMC = INES_MAPPER = 1 || INES_MAPPER = 4
5
+ HAS_MMC = INES_MAPPER = 1 || INES_MAPPER = 4 || INES_MAPPER = 5
6
6
7
7
.ifndef SAVE_HIGHSCORES
8
8
SAVE_HIGHSCORES := 1
Original file line number Diff line number Diff line change @@ -21,6 +21,10 @@ gameMode_gameTypeMenu:
21
21
; Horizontal mirroring
22
22
lda #$1
23
23
sta MMC3_MIRRORING
24
+ .elseif INES_MAPPER = 5
25
+ ; Horizontal mirroring
26
+ lda #$50
27
+ sta MMC5_NT_MAPPING
24
28
.endif
25
29
lda #%10011 ; used to be $10 (enable horizontal mirroring)
26
30
jsr setMMC1Control
Original file line number Diff line number Diff line change @@ -51,6 +51,10 @@ gameModeState_initGameBackground:
51
51
; Vertical mirroring (Prevents screen glitching)
52
52
lda #$0
53
53
sta MMC3_MIRRORING
54
+ .elseif INES_MAPPER = 5
55
+ ; Single screen (Prevents screen glitching)
56
+ lda #$0
57
+ sta MMC5_NT_MAPPING
54
58
.endif
55
59
jsr resetScroll
56
60
jsr waitForVBlankAndEnableNmi
Original file line number Diff line number Diff line change @@ -51,6 +51,15 @@ MMC3_BANK_DATA := $8001
51
51
MMC3_MIRRORING := $ A000
52
52
MMC3_PRG_RAM := $ A001
53
53
54
+ ; https://www.nesdev.org/wiki/MMC5#Configuration
55
+ MMC5_PRG_MODE := $ 5100
56
+ MMC5_CHR_MODE := $ 5101
57
+ MMC5_RAM_PROTECT1 := $ 5102
58
+ MMC5_RAM_PROTECT2 := $ 5103
59
+ MMC5_NT_MAPPING := $ 5105 ; $50 horizontal, $44 vertical, $00 single
60
+ MMC5_CHR_BANK0 := $ 5123 ; 4kb page index
61
+ MMC5_CHR_BANK1 := $ 5127
62
+
54
63
.macro RESET_MMC1
55
64
.if INES_MAPPER = 1
56
65
inc $ 8000 ; initRam
Original file line number Diff line number Diff line change @@ -16,6 +16,8 @@ reset: cld
16
16
inc reset
17
17
.elseif INES_MAPPER = 4
18
18
jsr mmc3Init
19
+ .elseif INES_MAPPER = 5
20
+ jsr mmc5Init
19
21
.endif
20
22
lda #$10
21
23
jsr setMMC1Control
@@ -44,6 +46,17 @@ mmc3Init:
44
46
lda #$80 ; enable PRG RAM
45
47
sta MMC3_PRG_RAM
46
48
rts
49
+ .elseif INES_MAPPER = 5
50
+ ; https://www.nesdev.org/wiki/MMC5
51
+ mmc5Init:
52
+ ldx #$00
53
+ stx MMC5_PRG_MODE ; 0: 1 32Kb bank
54
+ inx
55
+ stx MMC5_CHR_MODE ; 1: 4kb CHR pages
56
+ stx MMC5_RAM_PROTECT2 ; 1: enable PRG RAM
57
+ inx
58
+ stx MMC5_RAM_PROTECT1 ; 2: enable PRG RAM
59
+ rts
47
60
.endif
48
61
49
62
Original file line number Diff line number Diff line change @@ -322,6 +322,8 @@ changeCHRBank0:
322
322
adc #$02
323
323
stx MMC3_BANK_SELECT
324
324
sta MMC3_BANK_DATA
325
+ .elseif INES_MAPPER = 5
326
+ sta MMC5_CHR_BANK0
325
327
.endif
326
328
rts
327
329
@@ -357,6 +359,8 @@ changeCHRBank1:
357
359
adc #$01
358
360
stx MMC3_BANK_SELECT
359
361
sta MMC3_BANK_DATA
362
+ .elseif INES_MAPPER = 5
363
+ sta MMC5_CHR_BANK1
360
364
.endif
361
365
rts
362
366
You can’t perform that action at this time.
0 commit comments