Partial C portage of initialization code

This commit is contained in:
mkendora
2003-10-28 08:07:51 +00:00
parent e70dd7620e
commit 52333ba9c8
2 changed files with 994 additions and 561 deletions

View File

@@ -112,7 +112,7 @@ EXTSYM sramaccessbankr8s,sramaccessbankw16,sramaccessbankw16s
EXTSYM sramaccessbankw8,sramaccessbankw8s,GenerateBank0TableSA1
EXTSYM ScrDispl,wramreadptr,wramwriteptr
EXTSYM pl1Ltk,pl1Rtk,pl2Ltk,pl2Rtk,pl3Ltk,pl3Rtk,pl4Ltk,pl4Rtk,pl5Ltk,pl5Rtk
EXTSYM loadstate2
EXTSYM loadstate2, headerhack
%ifdef __LINUX__
EXTSYM LoadDir, popdir, pushdir
%endif
@@ -1468,566 +1468,6 @@ SECTION .text
EXTSYM ewj2hack
EXTSYM latchyr
NEWSYM headerhack
mov byte[disablehdma],0
mov byte[Offby1line],0
mov byte[CacheCheckSkip],0
mov word[IRQHack],0
mov byte[HIRQSkip],0
mov byte[hdmaearlstart],0
mov dword[WindowDisables],0
mov byte[ClearScreenSkip],0
mov byte[ENVDisable],0
mov esi,[romdata]
add esi,0FFC0h
cmp dword[esi],'HORA'
jne .nothoraigakuen
cmp dword[esi+4],'I-GA'
jne .nothoraigakuen
cmp dword[esi+8],'KUEN'
jne .nothoraigakuen
cmp dword[esi+12],' '
jne .nothoraigakuen
mov al,0h
mov edi,spcRam
mov ecx,65472
rep stosb
ret
.nothoraigakuen
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],0DFCAB0BDh
jne .notfamista1
cmp dword[esi+4],0D0A7CCB0h
jne .notfamista1
cmp dword[esi+8],02020C0BDh
jne .notfamista1
cmp dword[esi+12],20202020h
jne .notfamista1
mov esi,[romdata]
add esi,2762Fh
mov word [esi],0EAEAh ; Skip a check for value FF at 2140 when spc not
; initialized yet?!?
.notfamista1
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],0DFCAB0BDh
jne .notfamista2
cmp dword[esi+4],0D0A7CCB0h
jne .notfamista2
cmp dword[esi+8],03220C0BDh
jne .notfamista2
cmp dword[esi+12],20202020h
jne .notfamista2
mov esi,[romdata]
add esi,6CEDh
mov word [esi],0EAEAh ; Skip a check for value FF at 2140 when spc not
; initialized yet?!?
mov esi,[romdata]
add esi,6CF9h
mov word [esi],0EAEAh ; Skip a check for value FF at 2140 when spc not
; initialized yet?!?
.notfamista2
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],20434653h
jne .notkamenrider
cmp dword[esi+4],0D7DDD2B6h
jne .notkamenrider
cmp dword[esi+8],0B0DEC0B2h
jne .notkamenrider
cmp dword[esi+12],20202020h
jne .notkamenrider
mov byte[latchyr],2
.notkamenrider
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'EURO'
jne .noteuropeanprimegoal
cmp dword[esi+4],'PEAN'
jne .noteuropeanprimegoal
cmp dword[esi+8],' PRI'
jne .noteuropeanprimegoal
cmp dword[esi+12],'ME G'
jne .noteuropeanprimegoal
mov al,0h
mov edi,spcRam
mov ecx,65472
rep stosb
ret
.noteuropeanprimegoal
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'CYBE'
jne .notcyberknight2
cmp dword[esi+4],'R KN'
jne .notcyberknight2
cmp dword[esi+8],'IGHT'
jne .notcyberknight2
cmp dword[esi+12],' 2 '
jne .notcyberknight2
mov byte[cycpb268],75
mov byte[cycpb358],77
mov byte[cycpbl2],75
mov byte[cycpblt2],75
mov byte[cycpbl],75
mov byte[cycpblt],75
.notcyberknight2
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],0B4B1DEC3h
jne .notdeasomething
cmp dword[esi+4],0CFBBC9C4h
jne .notdeasomething
cmp dword[esi+8],0CAAFB120h
jne .notdeasomething
mov esi,[romdata]
add esi,017837Ch
mov word [esi],0EAEAh
.notdeasomething
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'HUMA'
jne .nothumangrandprix3
cmp dword[esi+4],'N GR'
jne .nothumangrandprix3
cmp dword[esi+8],'ANDP'
jne .nothumangrandprix3
mov byte[cycpb268],135
mov byte[cycpb358],157
mov byte[cycpbl2],125
mov byte[cycpblt2],125
mov byte[cycpbl],125
mov byte[cycpblt],125
.nothumangrandprix3
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'ACCE'
jne .notaccelebrid
cmp dword[esi+4],'LEBR'
jne .notaccelebrid
cmp dword[esi+8],'ID '
jne .notaccelebrid
mov esi,[romdata]
add esi,034DA2h
mov byte[esi],000h
mov esi,[romdata]
add esi,034DA3h
mov byte[esi],000h
.notaccelebrid
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'BATT'
jne .notbattlegp
cmp dword[esi+4],'LE G'
jne .notbattlegp
cmp dword[esi+8],'RAND'
jne .notbattlegp
mov esi,[romdata]
add esi,018089h
mov byte[esi],0FBh
mov esi,[romdata]
add esi,006C95h
mov byte[esi],0FBh
.notbattlegp
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'Neug'
jne .notneugiertrans
cmp dword[esi+4],'ier '
jne .notneugiertrans
cmp dword[esi+8],'(tr.'
jne .notneugiertrans
mov esi,[romdata]
add esi,0D4150h
mov byte[esi],0F9h
.notneugiertrans
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'NEUG'
jne .notneugier
cmp dword[esi+4],'IER '
jne .notneugier
cmp dword[esi+8],' '
jne .notneugier
mov esi,[romdata]
add esi,0D4150h
mov byte[esi],0F9h
.notneugier
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'HOME'
jne .nothomealone
cmp dword[esi+4],' ALO'
jne .nothomealone
mov esi,[romdata]
add esi,0666Bh
mov byte[esi],0EEh ; RTS instead of jumping to a rts
mov byte[esi+1],0BCh ; RTS instead of jumping to a rts
.nothomealone
mov esi,[romdata]
add esi,0FFC0h
cmp dword[esi],'EMER'
jne .notemeralddragon
cmp dword[esi+4],'ALD '
jne .notemeralddragon
cmp dword[esi+8],'DRAG'
jne .notemeralddragon
mov byte[ENVDisable],1
.notemeralddragon
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'YOSH'
jne .notyoshi
cmp dword[esi+8],'ISLA'
jne .notyoshi
jmp .yoshi
.notyoshi
cmp dword[esi],'YOSS'
jne .notyoshi2
cmp dword[esi+8],'ISLA'
jne .notyoshi2
.yoshi
mov byte[hdmaearlstart],2
mov byte[opexec268],116
mov byte[opexec358],126
.notyoshi2
mov esi,[romdata]
add esi,0FFC0h
cmp dword[esi],'BUBS'
jne .notbubsy2
cmp dword[esi+4],'Y II'
jne .notbubsy2
mov byte[cycpb268],125
mov byte[cycpb358],147
mov byte[cycpbl2],125
mov byte[cycpblt2],125
mov byte[cycpbl],125
mov byte[cycpblt],125
.notbubsy2
mov esi,[romdata]
add esi,7FC0h
cmp dword[esi],0DEB3B0CFh
je .marvelous
cmp dword[esi],'REND'
jne .notrend
mov byte[cycpb268],157
mov byte[cycpb358],157
mov byte[cycpbl2],157
mov byte[cycpblt2],157
mov byte[cycpbl],157
mov byte[cycpblt],157
jmp .notrend
.marvelous
.notrend
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'STAR'
jne .notds9
cmp dword[esi+4],' TRE'
jne .notds9
cmp dword[esi+8],'K: D'
jne .notds9
mov byte[opexec268],187
mov byte[opexec358],187
.notds9
mov esi,[romdata]
add esi,0FFC0h
cmp dword[esi],'CLAY'
jne .notclayfighter
cmp dword[esi+4],' FIG'
jne .notclayfighter
cmp dword[esi+8],'HTER'
jne .notclayfighter
cmp dword[esi+12],' '
jne .notclayfighter
mov esi,[romdata] ; In intro
add esi,01A10B9h
mov byte[esi],0DEh
mov esi,[romdata] ; In game
add esi,01A1996h
mov byte[esi],0DEh
mov esi,[romdata]
add esi,01AE563h
mov byte[esi],0DEh
mov esi,[romdata]
add esi,01AE600h
mov byte[esi],0DEh
.notclayfighter
mov esi,[romdata]
add esi,0FFC0h
cmp dword[esi],'Baha'
jne .notbahamutlagoon
cmp dword[esi+4],'mut '
jne .notbahamutlagoon
cmp dword[esi+8],'Lago'
jne .notbahamutlagoon
mov esi,[romdata]
add esi,010254h
mov byte[esi],0EEh
.notbahamutlagoon
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'MORT'
jne .notmk
cmp dword[esi+4],'AL K'
jne .notmk
cmp dword[esi+8],'OMBA'
jne .notmk
cmp dword[esi+12],'T '
jne .notmk
mov byte[disablehdma],1
.notmk
mov esi,[romdata]
add esi,0FFC0h
cmp dword[esi],'CLOC'
jne .notclocktower
cmp dword[esi+4],'K TO'
jne .notclocktower
cmp dword[esi+8],'WER '
jne .notclocktower
mov byte[opexec268],187
mov byte[opexec358],182
mov byte[opexec268cph],47
mov byte[opexec358cph],47
.notclocktower
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'DRAG'
jne .notdq5
cmp dword[esi+4],'ONQU'
jne .notdq5
cmp dword[esi+8],'EST5'
jne .notdq5
mov byte[disablehdma],1
.notdq5
; Lamborgini Challenge - -p 110
mov esi,[romdata]
add esi,07FC0h
cmp dword[esi],'DIGI'
jne .nodigitaldevil
mov byte[opexec268],187
mov byte[opexec358],187
.nodigitaldevil
mov esi,[romdata]
add esi,7FC0h
cmp dword[esi],'SP F'
jne .notfmatchtennis
mov byte[cycpb268],145
mov byte[cycpb358],147
mov byte[cycpbl2],145
mov byte[cycpblt2],145
mov byte[cycpbl],145
mov byte[cycpblt],145
.notfmatchtennis
mov esi,[romdata]
add esi,7FC0h
cmp dword[esi],'DEAD'
je .deaddance
cmp dword[esi],'TUFF'
jne .nottuffenuff
.deaddance
mov byte[cycpb268],75
mov byte[cycpb358],77
mov byte[cycpbl2],75
mov byte[cycpblt2],75
mov byte[cycpbl],75
mov byte[cycpblt],75
.nottuffenuff
cmp byte[DSP1Type],0
je .notdis
mov byte[disablehdma],1
.notdis
; Here are the individual game hacks. Some of these probably can
; be removed since many of them were created very early in ZSNES
; development.
cmp dword[esi+0FFC0h],'FINA'
jne .notff
.notff
mov esi,[romdata]
add esi,9AB0h
cmp dword[esi],0F00F2908h
jne .notff3
mov byte[opexec268],163
mov byte[opexec358],157
mov byte[opexec268cph],39
mov byte[opexec358cph],39
.notff3
; Earth Worm Jim 2 - IRQ hack (reduce sound static)
mov esi,[romdata]
add esi,0FFC0h
mov edi,.ewj2head
call Checkheadersame
cmp al,0
jne .noromhead2
mov esi,[romdata]
add esi,02A9C1Ah
mov word [esi],0
add esi, 5
mov word [esi],0
mov dword [ewj2hack],1
.noromhead2
; Lamborgini Challenge - -p 110
mov esi,[romdata]
add esi,07FC0h
mov edi,.lambhead
call Checkheadersame
cmp al,0
jne .noromheadlamb
mov byte[opexec268],187
mov byte[opexec358],187
.noromheadlamb
; Addams Family Values - -p 75
mov esi,[romdata]
add esi,07FC0h
mov edi,.adm3head
call Checkheadersame
cmp al,0
jne .noromheadadm3
mov byte[opexec268],120
mov byte[opexec358],100
.noromheadadm3
; Bubsy -p 115
mov esi,[romdata]
add esi,07FC0h
mov edi,.bubshead
call Checkheadersame
cmp al,0
jne .noromhead3
mov byte[opexec268],220
mov byte[opexec358],220
mov byte[opexec268cph],64
mov byte[opexec358cph],64
.noromhead3
; BToad vs DD - 197/192/47/47 -p 120
mov esi,[romdata]
; add esi,07FC0h
cmp dword[esi+640h],0E2FA85F6h
jne .noromhead4
mov byte[opexec268],187
mov byte[opexec358],187
mov byte[opexec268cph],47
mov byte[opexec358cph],47
mov bl,[cycpb358]
mov byte[cycpblt],bl
mov al,[opexec358]
mov byte[cycpl],al
.noromhead4
; Chrono Trigger - 187/182/47/47 -p 120 / res change clear screen disable
mov esi,[romdata]
; add esi,0FFC0h
cmp dword[esi+8640h],0E243728Dh
jne .noromhead6
cmp byte[opexec358],182
ja .noromhead6
mov byte[ClearScreenSkip],1
mov byte[opexec268],187
mov byte[opexec358],182
mov byte[opexec268cph],47
mov byte[opexec358cph],47
mov bl,[cycpb358]
mov byte[cycpblt],bl
mov al,[opexec358]
mov byte[cycpl],al
.noromhead6
; PunchOut - Disable HDMA start in middle of screen
mov esi,[romdata]
add esi,07FC0h
mov edi,.pouthead
call Checkheadersame
cmp al,0
jne .noromhead7
mov byte[disablehdma],1
.noromhead7
; Front Mission - -p 140
mov esi,[romdata]
add esi,0FFC0h
cmp dword[esi],0C4DDDBCCh
jne .noromheadfm
cmp dword[esi+4],0AEBCAFD0h
jne .noromheadfm
mov byte[opexec268],226
mov byte[opexec358],226
mov byte[opexec268cph],80
mov byte[opexec358cph],80
.noromheadfm
; Front Mission - -p 140
mov esi,[romdata]
add esi,0FFC0h
cmp dword[esi],'FRON'
jne .noromheadfm2
cmp dword[esi+4],'T MI'
jne .noromheadfm2
mov byte[opexec268],226
mov byte[opexec358],226
mov byte[opexec268cph],80
mov byte[opexec358cph],80
.noromheadfm2
; Clayfighter 2 - -p 120
mov esi,[romdata]
add esi,0FFC0h
cmp dword[esi],'Clay'
jne .noromheadcf2
cmp byte[esi+12],'2'
jne .noromheadcf2
mov byte[opexec268],187
mov byte[opexec358],182
mov byte[opexec268cph],47
mov byte[opexec358cph],47
.noromheadcf2
mov esi,[romdata]
add esi,0FFC0h
cmp dword[esi],'Donk'
jne .noromheaddk
cmp word[ramsize],2048
jne .noromheaddk
mov word[ramsize],4096
mov word[ramsizeand],4095
.noromheaddk
ret
SECTION .data
.ewj2head db 58,62,45,43,55,40,48,45,50,95,53,54,50,95,77,95,95,95,95,95

File diff suppressed because it is too large Load Diff