onemind
This commit is contained in:
@@ -91,6 +91,9 @@ db #$20, #$19, #$08, #$31 ; year/month/day
|
||||
;!REG_MUSIC_CONTROL = $012C
|
||||
!REG_MUSIC_CONTROL_REQUEST = $012C
|
||||
|
||||
!ONEMIND_ID = $7F5072
|
||||
!ONEMIND_TIMER = $7F5073
|
||||
|
||||
;================================================================================
|
||||
|
||||
incsrc hooks.asm
|
||||
@@ -182,7 +185,7 @@ incsrc endingsequence.asm
|
||||
incsrc cuccostorm.asm
|
||||
incsrc compression.asm
|
||||
incsrc retro.asm
|
||||
incsrc dpadinvert.asm
|
||||
incsrc controllerjank.asm
|
||||
incsrc boots.asm
|
||||
incsrc events.asm
|
||||
incsrc fileselect.asm
|
||||
|
||||
@@ -5,9 +5,31 @@
|
||||
; Filtered Joypad 1 Register: [AXLR | ????]
|
||||
; Filtered Joypad 1 Register: [BYST | udlr] [AXLR | ????]
|
||||
!INVERT_DPAD = "$7F50CB"
|
||||
|
||||
InvertDPad:
|
||||
LDA !INVERT_DPAD : BNE + : JMP .normal : +
|
||||
DEC : BEQ .dpadOnly
|
||||
LDA.l OneMindPlayerCount : BEQ .crowd_control
|
||||
|
||||
LDA.l !ONEMIND_ID
|
||||
AND.b #$03
|
||||
TAX
|
||||
LDA.l .onemind_controller_offset, X
|
||||
TAX
|
||||
|
||||
LDA.w $4218,X : STA.w $00
|
||||
LDA.w $4219,X : STA.w $01
|
||||
|
||||
LDA #$80 : STA $4201 ; reset this so latch can read it, otherwise RNG breaks
|
||||
|
||||
JML.l InvertDPadReturn
|
||||
|
||||
.crowd_control
|
||||
LDA !INVERT_DPAD : BNE +
|
||||
|
||||
LDA $4218 : STA $00
|
||||
LDA $4219 : STA $01
|
||||
JML.l InvertDPadReturn
|
||||
|
||||
+ DEC : BEQ .dpadOnly
|
||||
DEC : BEQ .buttonsOnly
|
||||
DEC : BEQ .invertBoth
|
||||
.swapSides
|
||||
@@ -45,8 +67,61 @@ JML.l InvertDPadReturn
|
||||
BIT.b #$03 : BEQ + : EOR.b #$03 : + ; swap left/right
|
||||
STA $01
|
||||
JML.l InvertDPadReturn
|
||||
.normal
|
||||
LDA $4218 : STA $00
|
||||
LDA $4219 : STA $01
|
||||
JML.l InvertDPadReturn
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
.onemind_controller_offset
|
||||
db 0 ; player 0 - $4218 - joy1d1
|
||||
db 0 ; player 1 - $4218 - joy1d1
|
||||
db 2 ; player 2 - $421A - joy2d1
|
||||
db 6 ; player 3 - $421E - joy2d2
|
||||
db 2 ; player 4 - $421A - joy2d1
|
||||
db 6 ; player 5 - $421E - joy2d2
|
||||
|
||||
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
HandleOneMindController:
|
||||
LDA.l OneMindPlayerCount
|
||||
BEQ .no_onemind
|
||||
|
||||
REP #$20
|
||||
|
||||
LDA.l !ONEMIND_TIMER
|
||||
DEC
|
||||
BPL .no_switch
|
||||
|
||||
SEP #$20
|
||||
LDA.l !ONEMIND_ID
|
||||
INC
|
||||
CMP.l OneMindPlayerCount
|
||||
BCC .no_wrap
|
||||
|
||||
LDA.b #$01 ; reset to player 1
|
||||
|
||||
.no_wrap
|
||||
STA.l !ONEMIND_ID
|
||||
|
||||
REP #$20
|
||||
LDA.l OneMindTimer
|
||||
|
||||
.no_switch
|
||||
STA.l !ONEMIND_TIMER
|
||||
|
||||
SEP #$20
|
||||
LDA.l !ONEMIND_ID
|
||||
|
||||
CMP.b #$04 ; is it player 4 or 5?
|
||||
BCC .no_multitap_switch
|
||||
|
||||
STZ.w $4201
|
||||
|
||||
.no_multitap_switch
|
||||
|
||||
.no_onemind
|
||||
STZ.b $12
|
||||
|
||||
JML $008034 ; reset frame loop
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ dl Init_PostRAMClear
|
||||
org $008056 ; <- 56 - Bank00.asm : 77
|
||||
JSL.l FrameHookAction
|
||||
;--------------------------------------------------------------------------------
|
||||
org $00805D
|
||||
JML HandleOneMindController
|
||||
|
||||
;================================================================================
|
||||
; NMI Hook
|
||||
@@ -48,8 +50,8 @@ ReturnCheckZSNES:
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $0083D9 ; <- 3D9 - Bank00.asm : 611 (LDA $4219 : STA $01)
|
||||
;JSL.l InvertDPad : NOP
|
||||
org $0083D4 ; <- 3D4 - Bank00.asm : 610 (LDA $4218 : STA $00)
|
||||
JML.l InvertDPad : SKIP 6
|
||||
org $0083D1 ; <- 3D1 - Bank00.asm (STZ.w JOYPAD - useless instruction here)
|
||||
JML.l InvertDPad : SKIP 9
|
||||
InvertDPadReturn:
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
7
init.asm
7
init.asm
@@ -40,8 +40,13 @@ Init_Primary:
|
||||
INX
|
||||
CPX #$15 : !BLT -
|
||||
.done
|
||||
|
||||
|
||||
REP #$20
|
||||
LDA.l OneMindTimer : STA.l !ONEMIND_TIMER
|
||||
SEP #$20
|
||||
|
||||
LDA.b #$01 : STA $420D ; enable fastrom access on upper banks
|
||||
STA.l !ONEMIND_ID
|
||||
|
||||
LDA.b #$10 : STA $BC ; set default player sprite bank
|
||||
|
||||
|
||||
15
tables.asm
15
tables.asm
@@ -412,7 +412,16 @@ db #$02 ; #$02 - 2 Bows (default)
|
||||
ProgressiveBowReplacement:
|
||||
db #$47 ; #$47 - 20 Rupees (default)
|
||||
;--------------------------------------------------------------------------------
|
||||
; 0x18009A - 0x18009F (unused)
|
||||
; 0x18009A - 0x18009C one mind
|
||||
;--------------------------------------------------------------------------------
|
||||
org $30809A ; PC 0x18009A
|
||||
OneMindPlayerCount:
|
||||
db 0
|
||||
org $30809B ; PC 0x18009B - 0x18009C
|
||||
OneMindTimer:
|
||||
dw 0
|
||||
;--------------------------------------------------------------------------------
|
||||
; 0x18009D - 0x18009F (unused)
|
||||
;--------------------------------------------------------------------------------
|
||||
org $3080A0 ; PC 0x1800A0 - 0x1800A4
|
||||
Bugfix_MirrorlessSQToLW:
|
||||
@@ -1481,7 +1490,9 @@ dw #9999 ; Rupee Limit
|
||||
; $7F5050 - $7F506F - Shop Block
|
||||
; $7F5070 - Reserved for OneMind
|
||||
; $7F5071 - Reserved for OneMind
|
||||
; $7F5072 - $7F507D - Unused
|
||||
; $7F5072 - OneMind player ID
|
||||
; $7F5073 - $7F5074 - OneMind timer
|
||||
; $7F5075 - $7F507D - Unused
|
||||
; $7F507E - Clock Status
|
||||
; $7F507F - Always Zero
|
||||
; $7F5080 - $7F5083 - Clock Hours
|
||||
|
||||
Reference in New Issue
Block a user