Memmapping port step 1 - easier to read, still a lot to do. Power on w/ clear SRAM now works with SA-1 games. Reverted chips/sa1proc.asm to rev 1.42 because all recent work only breaks HnK3 (the SMRPG fix is due to pagefault's subscreen/windowing logic fixes).
This commit is contained in:
@@ -39,8 +39,8 @@ CHIPSOBJ=${CHIPDIR}/sfxproc.o ${CHIPDIR}/fxemu2.o ${CHIPDIR}/dsp1proc.o\
|
|||||||
|
|
||||||
CPUOBJ=${CPUDIR}/addrni.o ${CPUDIR}/dma.o ${CPUDIR}/dsp.o ${CPUDIR}/dspproc.o\
|
CPUOBJ=${CPUDIR}/addrni.o ${CPUDIR}/dma.o ${CPUDIR}/dsp.o ${CPUDIR}/dspproc.o\
|
||||||
${CPUDIR}/execute.o ${CPUDIR}/irq.o ${CPUDIR}/memory.o\
|
${CPUDIR}/execute.o ${CPUDIR}/irq.o ${CPUDIR}/memory.o\
|
||||||
${CPUDIR}/spc700.o ${CPUDIR}/stable.o ${CPUDIR}/table.o\
|
${CPUDIR}/memtable.o ${CPUDIR}/spc700.o ${CPUDIR}/stable.o\
|
||||||
${CPUDIR}/tableb.o ${CPUDIR}/tablec.o
|
${CPUDIR}/table.o ${CPUDIR}/tableb.o ${CPUDIR}/tablec.o
|
||||||
|
|
||||||
GUIOBJ=${GUIDIR}/gui.o ${GUIDIR}/menu.o
|
GUIOBJ=${GUIDIR}/gui.o ${GUIDIR}/menu.o
|
||||||
|
|
||||||
@@ -148,6 +148,7 @@ ${CPUDIR}/stable.o: ${CPUDIR}/stable.asm ${CPUDIR}/s65816d.inc\
|
|||||||
${CPUDIR}/saddress.inc ${CPUDIR}/saddrni.inc ${CPUDIR}/se65816.inc\
|
${CPUDIR}/saddress.inc ${CPUDIR}/saddrni.inc ${CPUDIR}/se65816.inc\
|
||||||
macros.mac
|
macros.mac
|
||||||
${CPUDIR}/memory.o: ${CPUDIR}/memory.asm macros.mac
|
${CPUDIR}/memory.o: ${CPUDIR}/memory.asm macros.mac
|
||||||
|
${CPUDIR}/memtable.o: ${CPUDIR}/memtable.c
|
||||||
${CPUDIR}/dma.o: ${CPUDIR}/dma.asm macros.mac
|
${CPUDIR}/dma.o: ${CPUDIR}/dma.asm macros.mac
|
||||||
${DOSDIR}/dosintrf.o: ${DOSDIR}/dosintrf.asm macros.mac
|
${DOSDIR}/dosintrf.o: ${DOSDIR}/dosintrf.asm macros.mac
|
||||||
vcache.o:vcache.asm macros.mac
|
vcache.o:vcache.asm macros.mac
|
||||||
@@ -234,7 +235,3 @@ clean:
|
|||||||
|
|
||||||
distclean:
|
distclean:
|
||||||
rm -f ${CHIPDIR}/*.o ${CPUDIR}/*.o ${VIDEODIR}/*.o ${NETDIR}/*.o ${GUIDIR}/*.o ${DOSDIR}/*.o ${WINDIR}/*.o ${ZIPDIR}/*.o ${EFFECTSDIR}/*.o ${JMADIR}/*.o *.o @ZSNESEXE@ Makefile config.cache config.log config.status config.h
|
rm -f ${CHIPDIR}/*.o ${CPUDIR}/*.o ${VIDEODIR}/*.o ${NETDIR}/*.o ${GUIDIR}/*.o ${DOSDIR}/*.o ${WINDIR}/*.o ${ZIPDIR}/*.o ${EFFECTSDIR}/*.o ${JMADIR}/*.o *.o @ZSNESEXE@ Makefile config.cache config.log config.status config.h
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ source_files = Split("""
|
|||||||
cpu/execute.asm
|
cpu/execute.asm
|
||||||
cpu/irq.asm
|
cpu/irq.asm
|
||||||
cpu/memory.asm
|
cpu/memory.asm
|
||||||
|
cpu/memtable.c
|
||||||
cpu/spc700.asm
|
cpu/spc700.asm
|
||||||
cpu/stable.asm
|
cpu/stable.asm
|
||||||
cpu/table.asm
|
cpu/table.asm
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ NEWSYM SA1Swap
|
|||||||
; Check if IRQ is executed on SA-1
|
; Check if IRQ is executed on SA-1
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov al,dl
|
mov al,dl
|
||||||
add dh,150
|
add dh,25
|
||||||
mov edi,[SA1tablead+eax*4]
|
mov edi,[SA1tablead+eax*4]
|
||||||
mov byte[SA1Status],1
|
mov byte[SA1Status],1
|
||||||
test dword[SA1DoIRQ],0FF000003h
|
test dword[SA1DoIRQ],0FF000003h
|
||||||
@@ -157,14 +157,14 @@ NEWSYM SA1Swap
|
|||||||
mov dword[snesmap2],eax
|
mov dword[snesmap2],eax
|
||||||
mov edi,[prevedi]
|
mov edi,[prevedi]
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
add dh,34
|
add dh,11
|
||||||
inc byte[CurrentExecSA1]
|
inc byte[CurrentExecSA1]
|
||||||
mov byte[SA1Status],0
|
mov byte[SA1Status],0
|
||||||
add dword[SA1TimerVal],23
|
add dword[SA1TimerVal],23
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.speedhack
|
.speedhack
|
||||||
add dh,50
|
add dh,100
|
||||||
|
|
||||||
mov bl,[esi]
|
mov bl,[esi]
|
||||||
inc esi
|
inc esi
|
||||||
@@ -191,7 +191,7 @@ NEWSYM SA1Swap
|
|||||||
mov byte[SA1Status],0
|
mov byte[SA1Status],0
|
||||||
add dword[SA1TimerVal],23
|
add dword[SA1TimerVal],23
|
||||||
; xor dh,dh
|
; xor dh,dh
|
||||||
add dh,35
|
mov dh,18
|
||||||
cmp esi,dword[SA1LBound]
|
cmp esi,dword[SA1LBound]
|
||||||
jb .stoph
|
jb .stoph
|
||||||
cmp esi,dword[SA1UBound]
|
cmp esi,dword[SA1UBound]
|
||||||
|
|||||||
@@ -3229,50 +3229,6 @@ NEWSYM SA1UpdateDPage
|
|||||||
pop eax
|
pop eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM GenerateBank0Table
|
|
||||||
mov eax,Bank0datr8
|
|
||||||
writetobank0table membank0r8ram,20h
|
|
||||||
writetobank0table membank0r8reg,28h
|
|
||||||
writetobank0table membank0r8inv,17h
|
|
||||||
writetobank0table membank0r8chip,1Fh
|
|
||||||
writetobank0table membank0r8rom,81h
|
|
||||||
writetobank0table membank0r8romram,1h
|
|
||||||
mov eax,Bank0datw8
|
|
||||||
writetobank0table membank0w8ram,20h
|
|
||||||
writetobank0table membank0w8reg,28h
|
|
||||||
writetobank0table membank0w8inv,17h
|
|
||||||
writetobank0table membank0w8chip,1Fh
|
|
||||||
writetobank0table membank0w8rom,81h
|
|
||||||
writetobank0table membank0w8romram,1h
|
|
||||||
mov eax,Bank0datr16
|
|
||||||
writetobank0table membank0r16ram,1Fh
|
|
||||||
writetobank0table membank0r16ramh,1
|
|
||||||
writetobank0table membank0r16reg,28h
|
|
||||||
writetobank0table membank0r16inv,17h
|
|
||||||
writetobank0table membank0r16chip,1Fh
|
|
||||||
writetobank0table membank0r16rom,81h
|
|
||||||
writetobank0table membank0r16romram,1h
|
|
||||||
mov eax,Bank0datw16
|
|
||||||
writetobank0table membank0w16ram,1Fh
|
|
||||||
writetobank0table membank0w16ramh,1
|
|
||||||
writetobank0table membank0w16reg,28h
|
|
||||||
writetobank0table membank0w16inv,17h
|
|
||||||
writetobank0table membank0w16chip,1Fh
|
|
||||||
writetobank0table membank0w16rom,81h
|
|
||||||
writetobank0table membank0w16romram,1h
|
|
||||||
ret
|
|
||||||
|
|
||||||
NEWSYM GenerateBank0TableSA1
|
|
||||||
mov eax,Bank0datr8
|
|
||||||
writetobank0table membank0r8ramSA1,20h
|
|
||||||
mov eax,Bank0datw8
|
|
||||||
writetobank0table membank0w8ramSA1,20h
|
|
||||||
mov eax,Bank0datr16
|
|
||||||
writetobank0table membank0r16ramSA1,20h
|
|
||||||
mov eax,Bank0datw16
|
|
||||||
writetobank0table membank0w16ramSA1,20h
|
|
||||||
ret
|
|
||||||
|
|
||||||
; SA1 Stuff
|
; SA1 Stuff
|
||||||
NEWSYM membank0r8ramSA1 ; 0000-1FFF
|
NEWSYM membank0r8ramSA1 ; 0000-1FFF
|
||||||
cmp byte[SA1Status],0
|
cmp byte[SA1Status],0
|
||||||
|
|||||||
432
zsnes/src/cpu/memtable.c
Normal file
432
zsnes/src/cpu/memtable.c
Normal file
@@ -0,0 +1,432 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 1997-2005 ZSNES Team ( zsKnight, _Demo_, pagefault, Nach )
|
||||||
|
|
||||||
|
http://www.zsnes.com
|
||||||
|
http://sourceforge.net/projects/zsnes
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License
|
||||||
|
as published by the Free Software Foundation; either
|
||||||
|
version 2 of the License, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __LINUX__
|
||||||
|
#include "gblhdr.h"
|
||||||
|
#define DIR_SLASH "/"
|
||||||
|
#else
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#define DIR_SLASH "\\"
|
||||||
|
#endif
|
||||||
|
#include "gblvars.h"
|
||||||
|
|
||||||
|
extern unsigned int Curtableaddr, tableA[256];
|
||||||
|
|
||||||
|
void PrepareOffset()
|
||||||
|
{
|
||||||
|
Curtableaddr -= (unsigned int)tableA;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResetOffset()
|
||||||
|
{
|
||||||
|
Curtableaddr += (unsigned int)tableA;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern unsigned int snesmmap[256], snesmap2[256];
|
||||||
|
|
||||||
|
void BankSwitchSDD1C (unsigned char bankval, unsigned int offset)
|
||||||
|
{
|
||||||
|
unsigned int curbankval = bankval, i;
|
||||||
|
|
||||||
|
curbankval &= 7;
|
||||||
|
curbankval <<= 20;
|
||||||
|
curbankval += (unsigned int)romdata;
|
||||||
|
|
||||||
|
for (i=0; i<16 ; i++)
|
||||||
|
{
|
||||||
|
snesmap2[offset+i] = curbankval;
|
||||||
|
snesmmap[offset+i] = curbankval;
|
||||||
|
curbankval += 0x10000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extern unsigned char SDD1BankA, SDD1BankB, SDD1BankC, SDD1BankD;
|
||||||
|
|
||||||
|
void UpdateBanksSDD1()
|
||||||
|
{
|
||||||
|
if (SDD1BankA)
|
||||||
|
{
|
||||||
|
BankSwitchSDD1C(SDD1BankA, 0x0C0);
|
||||||
|
BankSwitchSDD1C(SDD1BankB, 0x0D0);
|
||||||
|
BankSwitchSDD1C(SDD1BankC, 0x0E0);
|
||||||
|
BankSwitchSDD1C(SDD1BankD, 0x0F0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extern void (*Bank0datr8[256])(), (*Bank0datr16[256])(), (*Bank0datw8[256])();
|
||||||
|
extern void (*Bank0datw16[256])(), *DPageR8, *DPageR16, *DPageW8, *DPageW16;
|
||||||
|
extern unsigned int xdb, xpb, xs, xx, xy, xd;
|
||||||
|
extern unsigned short oamaddrt, xat, xst, xdt, xxt, xyt;
|
||||||
|
extern unsigned char xdbt, xpbt;
|
||||||
|
|
||||||
|
void UpdateDPageC()
|
||||||
|
{
|
||||||
|
DPageR8 = Bank0datr8[(xd >> 8) & 0xFF];
|
||||||
|
DPageR16 = Bank0datr16[(xd >> 8) & 0xFF];
|
||||||
|
DPageW8 = Bank0datw8[(xd >> 8) & 0xFF];
|
||||||
|
DPageW16 = Bank0datw16[(xd >> 8) & 0xFF];
|
||||||
|
}
|
||||||
|
|
||||||
|
extern unsigned int SA1xd;
|
||||||
|
extern void *SA1DPageR8, *SA1DPageR16, *SA1DPageW8, *SA1DPageW16;
|
||||||
|
|
||||||
|
void SA1UpdateDPageC()
|
||||||
|
{
|
||||||
|
SA1DPageR8 = Bank0datr8[(SA1xd >> 8) & 0xFF];
|
||||||
|
SA1DPageR16 = Bank0datr16[(SA1xd >> 8) & 0xFF];
|
||||||
|
SA1DPageW8 = Bank0datw8[(SA1xd >> 8) & 0xFF];
|
||||||
|
SA1DPageW16 = Bank0datw16[(SA1xd >> 8) & 0xFF];
|
||||||
|
}
|
||||||
|
|
||||||
|
void unpackfunct()
|
||||||
|
{
|
||||||
|
oamaddrt = (oamaddr & 0xFFFF);
|
||||||
|
xat = (xa & 0xFFFF);
|
||||||
|
xdbt = (xdb & 0xFF);
|
||||||
|
xpbt = (xpb & 0xFF);
|
||||||
|
xst = (xs & 0xFFFF);
|
||||||
|
xdt = (xd & 0xFFFF);
|
||||||
|
xxt = (xx & 0xFFFF);
|
||||||
|
xyt = (xy & 0xFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define bit_test(byte, checkbit) (byte & (1 << checkbit)) ? 1 : 0
|
||||||
|
|
||||||
|
extern unsigned int GlobalVL, GlobalVR, EchoVL, EchoVR, EchoRate[16], MaxEcho;
|
||||||
|
extern unsigned int EchoFB, NoiseSpeeds[32], dspPAdj, NoiseInc, bg1ptrx;
|
||||||
|
extern unsigned int bg1ptry, bg2ptrx, bg2ptry, bg3ptrx, bg3ptry, bg4ptrx;
|
||||||
|
extern unsigned int bg4ptry;
|
||||||
|
extern signed int FIRTAPVal0, FIRTAPVal1, FIRTAPVal2, FIRTAPVal3, FIRTAPVal4;
|
||||||
|
extern signed int FIRTAPVal5, FIRTAPVal6, FIRTAPVal7;
|
||||||
|
extern unsigned short VolumeConvTable[32768], bg1ptr, bg1ptrb, bg1ptrc;
|
||||||
|
extern unsigned short bg2ptr, bg2ptrb, bg2ptrc, bg3ptr, bg3ptrb, bg3ptrc;
|
||||||
|
extern unsigned short bg4ptr, bg4ptrb, bg4ptrc;
|
||||||
|
extern unsigned char VolumeTableb[256], MusicVol, Voice0Status;
|
||||||
|
extern unsigned char Voice1Status, Voice2Status, Voice3Status, Voice4Status;
|
||||||
|
extern unsigned char Voice5Status, Voice6Status, Voice7Status, Voice0Noise;
|
||||||
|
extern unsigned char Voice1Noise, Voice2Noise, Voice3Noise, Voice4Noise;
|
||||||
|
extern unsigned char Voice5Noise, Voice6Noise, Voice7Noise, bgtilesz;
|
||||||
|
extern unsigned char BG116x16t, BG216x16t, BG316x16t, BG416x16t, vramincby8on;
|
||||||
|
extern unsigned char vramincr;
|
||||||
|
|
||||||
|
extern void (**regptw)();
|
||||||
|
void reg2118();
|
||||||
|
void reg2118inc();
|
||||||
|
void reg2118inc8();
|
||||||
|
void reg2118inc8inc();
|
||||||
|
void reg2119();
|
||||||
|
void reg2119inc();
|
||||||
|
void reg2119inc8();
|
||||||
|
void reg2119inc8inc();
|
||||||
|
|
||||||
|
void repackfunct()
|
||||||
|
{
|
||||||
|
signed char val;
|
||||||
|
unsigned char block;
|
||||||
|
|
||||||
|
// Global/Echo Volumes
|
||||||
|
GlobalVL = (VolumeConvTable[(MusicVol << 8) + VolumeTableb[DSPMem[0x0C]]] & 0xFF);
|
||||||
|
GlobalVR = (VolumeConvTable[(MusicVol << 8) + VolumeTableb[DSPMem[0x1C]]] & 0xFF);
|
||||||
|
EchoVL = (VolumeConvTable[(MusicVol << 8) + VolumeTableb[DSPMem[0x2C]]] & 0xFF);
|
||||||
|
EchoVR = (VolumeConvTable[(MusicVol << 8) + VolumeTableb[DSPMem[0x3C]]] & 0xFF);
|
||||||
|
|
||||||
|
// Echo Values
|
||||||
|
MaxEcho = EchoRate[(DSPMem[0x7D] & 0xF)];
|
||||||
|
EchoFB = VolumeTableb[DSPMem[0x0D]];
|
||||||
|
|
||||||
|
// FIR Filter Values
|
||||||
|
val = DSPMem[0x0F];
|
||||||
|
FIRTAPVal0 = (signed int)val;
|
||||||
|
val = DSPMem[0x1F];
|
||||||
|
FIRTAPVal1 = (signed int)val;
|
||||||
|
val = DSPMem[0x2F];
|
||||||
|
FIRTAPVal2 = (signed int)val;
|
||||||
|
val = DSPMem[0x3F];
|
||||||
|
FIRTAPVal3 = (signed int)val;
|
||||||
|
val = DSPMem[0x4F];
|
||||||
|
FIRTAPVal4 = (signed int)val;
|
||||||
|
val = DSPMem[0x5F];
|
||||||
|
FIRTAPVal5 = (signed int)val;
|
||||||
|
val = DSPMem[0x6F];
|
||||||
|
FIRTAPVal6 = (signed int)val;
|
||||||
|
val = DSPMem[0x7F];
|
||||||
|
FIRTAPVal7 = (signed int)val;
|
||||||
|
|
||||||
|
// Noise
|
||||||
|
block = DSPMem[0x6C];
|
||||||
|
DSPMem[0x6C] &= 0x7F;
|
||||||
|
|
||||||
|
if (block && 0xC0)
|
||||||
|
{
|
||||||
|
Voice0Status = Voice1Status = Voice2Status = Voice3Status = 0;
|
||||||
|
Voice4Status = Voice5Status = Voice6Status = Voice7Status = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
NoiseInc = (((NoiseSpeeds[(block & 0x1F)] * dspPAdj) >> 17) & 0xFFFFFFFF);
|
||||||
|
|
||||||
|
Voice0Noise = bit_test(DSPMem[0x3D], 0);
|
||||||
|
Voice1Noise = bit_test(DSPMem[0x3D], 1);
|
||||||
|
Voice2Noise = bit_test(DSPMem[0x3D], 2);
|
||||||
|
Voice3Noise = bit_test(DSPMem[0x3D], 3);
|
||||||
|
Voice4Noise = bit_test(DSPMem[0x3D], 4);
|
||||||
|
Voice5Noise = bit_test(DSPMem[0x3D], 5);
|
||||||
|
Voice6Noise = bit_test(DSPMem[0x3D], 6);
|
||||||
|
Voice7Noise = bit_test(DSPMem[0x3D], 7);
|
||||||
|
|
||||||
|
bg1ptrx = bg1ptrb - bg1ptr;
|
||||||
|
bg1ptry = bg1ptrc - bg1ptr;
|
||||||
|
bg2ptrx = bg2ptrb - bg2ptr;
|
||||||
|
bg2ptry = bg2ptrc - bg2ptr;
|
||||||
|
bg3ptrx = bg3ptrb - bg3ptr;
|
||||||
|
bg3ptry = bg3ptrc - bg3ptr;
|
||||||
|
bg4ptrx = bg4ptrb - bg4ptr;
|
||||||
|
bg4ptry = bg4ptrc - bg4ptr;
|
||||||
|
|
||||||
|
// 16x16 tiles
|
||||||
|
BG116x16t = bit_test(bgtilesz, 0);
|
||||||
|
BG216x16t = bit_test(bgtilesz, 1);
|
||||||
|
BG316x16t = bit_test(bgtilesz, 2);
|
||||||
|
BG416x16t = bit_test(bgtilesz, 3);
|
||||||
|
|
||||||
|
oamaddr = oamaddrt;
|
||||||
|
xa = xat;
|
||||||
|
xdb = xdbt;
|
||||||
|
xpb = xpbt;
|
||||||
|
xs = xst;
|
||||||
|
xd = xdt;
|
||||||
|
xx = xxt;
|
||||||
|
xy = xyt;
|
||||||
|
|
||||||
|
if (vramincby8on == 1)
|
||||||
|
{
|
||||||
|
if (vramincr == 1)
|
||||||
|
{
|
||||||
|
regptw[0x2118] = reg2118inc8inc;
|
||||||
|
regptw[0x2119] = reg2119inc8;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
regptw[0x2118] = reg2118inc8;
|
||||||
|
regptw[0x2119] = reg2119inc8inc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (vramincr == 1)
|
||||||
|
{
|
||||||
|
regptw[0x2118] = reg2118inc;
|
||||||
|
regptw[0x2119] = reg2119;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
regptw[0x2118] = reg2118;
|
||||||
|
regptw[0x2119] = reg2119inc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extern void (*memtabler8[256])();
|
||||||
|
extern void (*memtablew8[256])();
|
||||||
|
extern void (*memtabler16[256])();
|
||||||
|
extern void (*memtablew16[256])();
|
||||||
|
|
||||||
|
void regaccessbankr8(), regaccessbankr8SA1();
|
||||||
|
void memaccessbankr8();
|
||||||
|
void sramaccessbankr8(), SA1RAMaccessbankr8(), SA1RAMaccessbankr8b();
|
||||||
|
void wramaccessbankr8(), eramaccessbankr8();
|
||||||
|
|
||||||
|
void regaccessbankw8(), regaccessbankw8SA1();
|
||||||
|
void memaccessbankw8();
|
||||||
|
void sramaccessbankw8(), SA1RAMaccessbankw8(), SA1RAMaccessbankw8b();
|
||||||
|
void wramaccessbankw8(), eramaccessbankw8();
|
||||||
|
|
||||||
|
void regaccessbankr16(), regaccessbankr16SA1();
|
||||||
|
void memaccessbankr16();
|
||||||
|
void sramaccessbankr16(), SA1RAMaccessbankr16(), SA1RAMaccessbankr16b();
|
||||||
|
void wramaccessbankr16(), eramaccessbankr16();
|
||||||
|
|
||||||
|
void regaccessbankw16(), regaccessbankw16SA1();
|
||||||
|
void memaccessbankw16();
|
||||||
|
void sramaccessbankw16(), SA1RAMaccessbankw16(), SA1RAMaccessbankw16b();
|
||||||
|
void wramaccessbankw16(), eramaccessbankw16();
|
||||||
|
|
||||||
|
/*
|
||||||
|
rep_stosd is my name for a 'copy <num> times a function pointer <func_ptr> into
|
||||||
|
a function pointer array <dest>' function, in honour of the almighty asm
|
||||||
|
instruction rep stosd, which is able to do that (and much more).
|
||||||
|
Since ZSNES is just full of func pointer arrays, it'll probably come in handy.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void rep_stosd(void (**dest)(), void (*func_ptr), unsigned int num)
|
||||||
|
{
|
||||||
|
while (num--) { dest[num] = func_ptr; }
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetAddressingModes()
|
||||||
|
{
|
||||||
|
// set 8-bit read memory tables banks
|
||||||
|
rep_stosd(memtabler8+0x00, regaccessbankr8, 0x40); // 00 - 3F
|
||||||
|
rep_stosd(memtabler8+0x40, memaccessbankr8, 0x30); // 40 - 6F
|
||||||
|
rep_stosd(memtabler8+0x70, sramaccessbankr8, 0x08); // 70 - 77
|
||||||
|
rep_stosd(memtabler8+0x78, memaccessbankr8, 0x06); // 78 - 7D
|
||||||
|
memtabler8[0x7E] = wramaccessbankr8; // 7E
|
||||||
|
memtabler8[0x7F] = eramaccessbankr8; // 7F
|
||||||
|
rep_stosd(memtabler8+0x80, regaccessbankr8, 0x40); // 80 - BF
|
||||||
|
rep_stosd(memtabler8+0xC0, memaccessbankr8, 0x40); // C0 - FF
|
||||||
|
|
||||||
|
// set 8-bit write memory tables banks
|
||||||
|
rep_stosd(memtablew8+0x00, regaccessbankw8, 0x40); // 00 - 3F
|
||||||
|
rep_stosd(memtablew8+0x40, memaccessbankw8, 0x30); // 40 - 6F
|
||||||
|
rep_stosd(memtablew8+0x70, sramaccessbankw8, 0x08); // 70 - 77
|
||||||
|
rep_stosd(memtablew8+0x78, memaccessbankw8, 0x06); // 78 - 7D
|
||||||
|
memtablew8[0x7E] = wramaccessbankw8; // 7E
|
||||||
|
memtablew8[0x7F] = eramaccessbankw8; // 7F
|
||||||
|
rep_stosd(memtablew8+0x80, regaccessbankw8, 0x40); // 80 - BF
|
||||||
|
rep_stosd(memtablew8+0xC0, memaccessbankw8, 0x40); // C0 - FF
|
||||||
|
|
||||||
|
// set 16-bit read memory tables banks
|
||||||
|
rep_stosd(memtabler16+0x00, regaccessbankr16, 0x40); // 00 - 3F
|
||||||
|
rep_stosd(memtabler16+0x40, memaccessbankr16, 0x30); // 40 - 6F
|
||||||
|
rep_stosd(memtabler16+0x70, sramaccessbankr16, 0x08); // 70 - 77
|
||||||
|
rep_stosd(memtabler16+0x78, memaccessbankr16, 0x06); // 78 - 7D
|
||||||
|
memtabler16[0x7E] = wramaccessbankr16; // 7E
|
||||||
|
memtabler16[0x7F] = eramaccessbankr16; // 7F
|
||||||
|
rep_stosd(memtabler16+0x80, regaccessbankr16, 0x40); // 80 - BF
|
||||||
|
rep_stosd(memtabler16+0xC0, memaccessbankr16, 0x40); // C0 - FF
|
||||||
|
|
||||||
|
// set 16-bit write memory tables banks
|
||||||
|
rep_stosd(memtablew16+0x00, regaccessbankw16, 0x40); // 00 - 3F
|
||||||
|
rep_stosd(memtablew16+0x40, memaccessbankw16, 0x30); // 40 - 6F
|
||||||
|
rep_stosd(memtablew16+0x70, sramaccessbankw16, 0x08); // 70 - 77
|
||||||
|
rep_stosd(memtablew16+0x78, memaccessbankw16, 0x06); // 78 - 7D
|
||||||
|
memtablew16[0x7E] = wramaccessbankw16; // 7E
|
||||||
|
memtablew16[0x7F] = eramaccessbankw16; // 7F
|
||||||
|
rep_stosd(memtablew16+0x80, regaccessbankw16, 0x40); // 80 - BF
|
||||||
|
rep_stosd(memtablew16+0xC0, memaccessbankw16, 0x40); // C0 - FF
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetAddressingModesSA1()
|
||||||
|
{
|
||||||
|
// set 8-bit read memory tables banks
|
||||||
|
rep_stosd(memtabler8+0x00, regaccessbankr8SA1, 0x40); // 00 - 3F
|
||||||
|
rep_stosd(memtabler8+0x40, SA1RAMaccessbankr8, 0x20); // 40 - 5F
|
||||||
|
rep_stosd(memtabler8+0x60, SA1RAMaccessbankr8b, 0x10); // 60 - 6F
|
||||||
|
rep_stosd(memtabler8+0x70, sramaccessbankr8, 0x08); // 70 - 77
|
||||||
|
rep_stosd(memtabler8+0x78, memaccessbankr8, 0x06); // 78 - 7D
|
||||||
|
memtabler8[0x7E] = wramaccessbankr8; // 7E
|
||||||
|
memtabler8[0x7F] = eramaccessbankr8; // 7F
|
||||||
|
rep_stosd(memtabler8+0x80, regaccessbankr8SA1, 0x40); // 80 - BF
|
||||||
|
rep_stosd(memtabler8+0xC0, memaccessbankr8, 0x40); // C0 - FF
|
||||||
|
|
||||||
|
// set 8-bit write memory tables banks
|
||||||
|
rep_stosd(memtablew8+0x00, regaccessbankw8SA1, 0x40); // 00 - 3F
|
||||||
|
rep_stosd(memtablew8+0x40, SA1RAMaccessbankw8, 0x20); // 40 - 5F
|
||||||
|
rep_stosd(memtablew8+0x60, SA1RAMaccessbankw8b, 0x10); // 60 - 6F
|
||||||
|
rep_stosd(memtablew8+0x70, sramaccessbankw8, 0x08); // 70 - 77
|
||||||
|
rep_stosd(memtablew8+0x78, memaccessbankw8, 0x06); // 78 - 7D
|
||||||
|
memtablew8[0x7E] = wramaccessbankw8; // 7E
|
||||||
|
memtablew8[0x7F] = eramaccessbankw8; // 7F
|
||||||
|
rep_stosd(memtablew8+0x80, regaccessbankw8SA1, 0x40); // 80 - BF
|
||||||
|
rep_stosd(memtablew8+0xC0, memaccessbankw8, 0x40); // C0 - FF
|
||||||
|
|
||||||
|
// set 16-bit read memory tables banks
|
||||||
|
rep_stosd(memtabler16+0x00, regaccessbankr16SA1, 0x40); // 00 - 3F
|
||||||
|
rep_stosd(memtabler16+0x40, SA1RAMaccessbankr16, 0x20); // 40 - 5F
|
||||||
|
rep_stosd(memtabler16+0x60, SA1RAMaccessbankr16b, 0x10); // 60 - 6F
|
||||||
|
rep_stosd(memtabler16+0x70, sramaccessbankr16, 0x08); // 70 - 77
|
||||||
|
rep_stosd(memtabler16+0x78, memaccessbankr16, 0x06); // 78 - 7D
|
||||||
|
memtabler16[0x7E] = wramaccessbankr16; // 7E
|
||||||
|
memtabler16[0x7F] = eramaccessbankr16; // 7F
|
||||||
|
rep_stosd(memtabler16+0x80, regaccessbankr16SA1, 0x40); // 80 - BF
|
||||||
|
rep_stosd(memtabler16+0xC0, memaccessbankr16, 0x40); // C0 - FF
|
||||||
|
|
||||||
|
// set 16-bit write memory tables banks
|
||||||
|
rep_stosd(memtablew16+0x00, regaccessbankw16SA1, 0x40); // 00 - 3F
|
||||||
|
rep_stosd(memtablew16+0x40, SA1RAMaccessbankw16, 0x20); // 40 - 5F
|
||||||
|
rep_stosd(memtablew16+0x60, SA1RAMaccessbankw16b, 0x10); // 60 - 6F
|
||||||
|
rep_stosd(memtablew16+0x70, sramaccessbankw16, 0x08); // 70 - 77
|
||||||
|
rep_stosd(memtablew16+0x78, memaccessbankw16, 0x06); // 78 - 7D
|
||||||
|
memtablew16[0x7E] = wramaccessbankw16; // 7E
|
||||||
|
memtablew16[0x7F] = eramaccessbankw16; // 7F
|
||||||
|
rep_stosd(memtablew16+0x80, regaccessbankw16SA1, 0x40); // 80 - BF
|
||||||
|
rep_stosd(memtablew16+0xC0, memaccessbankw16, 0x40); // C0 - FF
|
||||||
|
}
|
||||||
|
|
||||||
|
void membank0r8ram(), membank0r8ramSA1();
|
||||||
|
void membank0r8reg(), membank0r8inv(), membank0r8chip();
|
||||||
|
void membank0r8rom(), membank0r8romram();
|
||||||
|
|
||||||
|
void membank0w8ram(), membank0w8ramSA1();
|
||||||
|
void membank0w8reg(), membank0w8inv(), membank0w8chip();
|
||||||
|
void membank0w8rom(), membank0w8romram();
|
||||||
|
|
||||||
|
void membank0r16ram(), membank0r16ramSA1();
|
||||||
|
void membank0r16reg(), membank0r16inv(), membank0r16chip();
|
||||||
|
void membank0r16rom(), membank0r16romram();
|
||||||
|
|
||||||
|
void membank0w16ram(), membank0w16ramSA1();
|
||||||
|
void membank0w16reg(), membank0w16inv(), membank0w16chip();
|
||||||
|
void membank0w16rom(), membank0w16romram();
|
||||||
|
|
||||||
|
void GenerateBank0Table()
|
||||||
|
{
|
||||||
|
rep_stosd(Bank0datr8+0x00, membank0r8ram, 0x20); // 00 - 1F
|
||||||
|
rep_stosd(Bank0datr8+0x20, membank0r8reg, 0x28); // 20 - 47
|
||||||
|
rep_stosd(Bank0datr8+0x48, membank0r8inv, 0x17); // 48 - 5E
|
||||||
|
rep_stosd(Bank0datr8+0x5F, membank0r8chip, 0x1F); // 5F - 7D
|
||||||
|
rep_stosd(Bank0datr8+0x7E, membank0r8rom, 0x81); // 7E - FE
|
||||||
|
Bank0datr8[0xFF] = membank0r8romram; // FF
|
||||||
|
|
||||||
|
rep_stosd(Bank0datw8+0x00, membank0w8ram, 0x20); // 00 - 1F
|
||||||
|
rep_stosd(Bank0datw8+0x20, membank0w8reg, 0x28); // 20 - 47
|
||||||
|
rep_stosd(Bank0datw8+0x48, membank0w8inv, 0x17); // 48 - 5E
|
||||||
|
rep_stosd(Bank0datw8+0x5F, membank0w8chip, 0x1F); // 5F - 7D
|
||||||
|
rep_stosd(Bank0datw8+0x7E, membank0w8rom, 0x81); // 7E - FE
|
||||||
|
Bank0datw8[0xFF] = membank0w8romram; // FF
|
||||||
|
|
||||||
|
rep_stosd(Bank0datr16+0x00, membank0r16ram, 0x20); // 00 - 1F
|
||||||
|
rep_stosd(Bank0datr16+0x20, membank0r16reg, 0x28); // 20 - 47
|
||||||
|
rep_stosd(Bank0datr16+0x48, membank0r16inv, 0x17); // 48 - 5E
|
||||||
|
rep_stosd(Bank0datr16+0x5F, membank0r16chip, 0x1F); // 5F - 7D
|
||||||
|
rep_stosd(Bank0datr16+0x7E, membank0r16rom, 0x81); // 7E - FE
|
||||||
|
Bank0datr16[0xFF] = membank0r16romram; // FF
|
||||||
|
|
||||||
|
rep_stosd(Bank0datw16+0x00, membank0w16ram, 0x20); // 00 - 1F
|
||||||
|
rep_stosd(Bank0datw16+0x20, membank0w16reg, 0x28); // 20 - 47
|
||||||
|
rep_stosd(Bank0datw16+0x48, membank0w16inv, 0x17); // 48 - 5E
|
||||||
|
rep_stosd(Bank0datw16+0x5F, membank0w16chip, 0x1F); // 5F - 7D
|
||||||
|
rep_stosd(Bank0datw16+0x7E, membank0w16rom, 0x81); // 7E - FE
|
||||||
|
Bank0datw16[0xFF] = membank0w16romram; // FF
|
||||||
|
}
|
||||||
|
|
||||||
|
void GenerateBank0TableSA1()
|
||||||
|
{
|
||||||
|
rep_stosd(Bank0datr8, membank0r8ramSA1, 0x20); // 00 - 1F
|
||||||
|
rep_stosd(Bank0datw8, membank0w8ramSA1, 0x20); // 00 - 1F
|
||||||
|
rep_stosd(Bank0datr16, membank0r16ramSA1, 0x20); // 00 - 1F
|
||||||
|
rep_stosd(Bank0datw16, membank0w16ramSA1, 0x20); // 00 - 1F
|
||||||
|
}
|
||||||
@@ -20,9 +20,6 @@
|
|||||||
|
|
||||||
%include "macros.mac"
|
%include "macros.mac"
|
||||||
|
|
||||||
EXTSYM eramaccessbankr16,eramaccessbankr8,eramaccessbankw16
|
|
||||||
EXTSYM eramaccessbankw8,memaccessbankr16,memaccessbankr8
|
|
||||||
EXTSYM memaccessbankw16,memaccessbankw8
|
|
||||||
EXTSYM mosjmptab,mosdraw10,mosdraw11,mosdraw12,mosdraw13
|
EXTSYM mosjmptab,mosdraw10,mosdraw11,mosdraw12,mosdraw13
|
||||||
EXTSYM mosdraw14,mosdraw15,mosdraw16,mosdraw2,mosdraw3
|
EXTSYM mosdraw14,mosdraw15,mosdraw16,mosdraw2,mosdraw3
|
||||||
EXTSYM mosdraw4,mosdraw5,mosdraw6,mosdraw7,mosdraw8
|
EXTSYM mosdraw4,mosdraw5,mosdraw6,mosdraw7,mosdraw8
|
||||||
@@ -43,16 +40,7 @@ EXTSYM mosjmptab16bntms,mosdraw1016bntms,mosdraw1116bntms,mosdraw1216bntms,mosdr
|
|||||||
EXTSYM mosdraw1416bntms,mosdraw1516bntms,mosdraw1616bntms,mosdraw216bntms,mosdraw316bntms
|
EXTSYM mosdraw1416bntms,mosdraw1516bntms,mosdraw1616bntms,mosdraw216bntms,mosdraw316bntms
|
||||||
EXTSYM mosdraw416bntms,mosdraw516bntms,mosdraw616bntms,mosdraw716bntms,mosdraw816bntms
|
EXTSYM mosdraw416bntms,mosdraw516bntms,mosdraw616bntms,mosdraw716bntms,mosdraw816bntms
|
||||||
EXTSYM mosdraw916bntms
|
EXTSYM mosdraw916bntms
|
||||||
EXTSYM regaccessbankr16,regaccessbankw16,regaccessbankw8
|
EXTSYM tableA,tableB,tableC,tableD,tableE,tableF,tableG,tableH
|
||||||
EXTSYM sramaccessbankr16,sramaccessbankr8,sramaccessbankw16
|
|
||||||
EXTSYM sramaccessbankw8,tableA,tableB,tableC,tableD,tableE
|
|
||||||
EXTSYM tableF,tableG,tableH,wramaccessbankr16
|
|
||||||
EXTSYM wramaccessbankr8,wramaccessbankw16,wramaccessbankw8
|
|
||||||
EXTSYM regaccessbankr8SA1,regaccessbankr16SA1,regaccessbankw8SA1
|
|
||||||
EXTSYM regaccessbankw16SA1,SA1RAMaccessbankr8,SA1RAMaccessbankr16
|
|
||||||
EXTSYM SA1RAMaccessbankw8,SA1RAMaccessbankw16
|
|
||||||
EXTSYM SA1RAMaccessbankr8b,SA1RAMaccessbankr16b
|
|
||||||
EXTSYM SA1RAMaccessbankw8b,SA1RAMaccessbankw16b
|
|
||||||
EXTSYM DPageR8,DPageW8,DPageR16,DPageW16
|
EXTSYM DPageR8,DPageW8,DPageR16,DPageW16
|
||||||
EXTSYM SDD1Enable
|
EXTSYM SDD1Enable
|
||||||
EXTSYM JoyAOrig,JoyANow,JoyBOrig,JoyBNow,JoyCOrig,JoyCNow,JoyDOrig,JoyDNow
|
EXTSYM JoyAOrig,JoyANow,JoyBOrig,JoyBNow,JoyCOrig,JoyCNow,JoyDOrig,JoyDNow
|
||||||
@@ -332,286 +320,6 @@ NEWSYM inittable
|
|||||||
pop es
|
pop es
|
||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM SetAddressingModes
|
|
||||||
; set 8-bit read memory tables
|
|
||||||
mov edi,memtabler8
|
|
||||||
; banks 0-3Fh
|
|
||||||
mov eax,regaccessbankr8
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks 40-6Fh
|
|
||||||
mov eax,memaccessbankr8
|
|
||||||
mov ecx,$30
|
|
||||||
rep stosd
|
|
||||||
; bank 70-77h
|
|
||||||
mov eax,sramaccessbankr8
|
|
||||||
mov ecx,8
|
|
||||||
rep stosd
|
|
||||||
; bank 78-7D
|
|
||||||
mov eax,memaccessbankr8
|
|
||||||
mov ecx,6
|
|
||||||
rep stosd
|
|
||||||
; bank 7E
|
|
||||||
mov eax,wramaccessbankr8
|
|
||||||
stosd
|
|
||||||
; bank 7F
|
|
||||||
mov eax,eramaccessbankr8
|
|
||||||
stosd
|
|
||||||
; banks 80-BF
|
|
||||||
mov eax,regaccessbankr8
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks C0-FFh
|
|
||||||
mov eax,memaccessbankr8
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
|
|
||||||
; set 8-bit write memory tables
|
|
||||||
mov edi,memtablew8
|
|
||||||
; banks 0-3Fh
|
|
||||||
mov eax,regaccessbankw8
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks 40-6Fh
|
|
||||||
mov eax,memaccessbankw8
|
|
||||||
mov ecx,$30
|
|
||||||
rep stosd
|
|
||||||
; bank 70-77h
|
|
||||||
mov eax,sramaccessbankw8
|
|
||||||
mov ecx,8
|
|
||||||
rep stosd
|
|
||||||
; bank 78-7D
|
|
||||||
mov eax,memaccessbankw8
|
|
||||||
mov ecx,6
|
|
||||||
rep stosd
|
|
||||||
; bank 7E
|
|
||||||
mov eax,wramaccessbankw8
|
|
||||||
stosd
|
|
||||||
; bank 7F
|
|
||||||
mov eax,eramaccessbankw8
|
|
||||||
stosd
|
|
||||||
; banks 80-BF
|
|
||||||
mov eax,regaccessbankw8
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks C0-FFh
|
|
||||||
mov eax,memaccessbankw8
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
|
|
||||||
; set 16-bit read memory tables
|
|
||||||
mov edi,memtabler16
|
|
||||||
; banks 0-3Fh
|
|
||||||
mov eax,regaccessbankr16
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks 40-6Fh
|
|
||||||
mov eax,memaccessbankr16
|
|
||||||
mov ecx,$30
|
|
||||||
rep stosd
|
|
||||||
; bank 70-77h
|
|
||||||
mov eax,sramaccessbankr16
|
|
||||||
mov ecx,8
|
|
||||||
rep stosd
|
|
||||||
; bank 78-7D
|
|
||||||
mov eax,memaccessbankr16
|
|
||||||
mov ecx,6
|
|
||||||
rep stosd
|
|
||||||
; bank 7E
|
|
||||||
mov eax,wramaccessbankr16
|
|
||||||
stosd
|
|
||||||
; bank 7F
|
|
||||||
mov eax,eramaccessbankr16
|
|
||||||
stosd
|
|
||||||
; banks 80-BF
|
|
||||||
mov eax,regaccessbankr16
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks C0-FFh
|
|
||||||
mov eax,memaccessbankr16
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
|
|
||||||
; set 16-bit write memory tables
|
|
||||||
mov edi,memtablew16
|
|
||||||
; banks 0-3Fh
|
|
||||||
mov eax,regaccessbankw16
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks 40-6Fh
|
|
||||||
mov eax,memaccessbankw16
|
|
||||||
mov ecx,$30
|
|
||||||
rep stosd
|
|
||||||
; bank 70-77h
|
|
||||||
mov eax,sramaccessbankw16
|
|
||||||
mov ecx,8
|
|
||||||
rep stosd
|
|
||||||
; bank 78-7D
|
|
||||||
mov eax,memaccessbankw16
|
|
||||||
mov ecx,6
|
|
||||||
rep stosd
|
|
||||||
; bank 7E
|
|
||||||
mov eax,wramaccessbankw16
|
|
||||||
stosd
|
|
||||||
; bank 7F
|
|
||||||
mov eax,eramaccessbankw16
|
|
||||||
stosd
|
|
||||||
; banks 80-BF
|
|
||||||
mov eax,regaccessbankw16
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks C0-FFh
|
|
||||||
mov eax,memaccessbankw16
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
ret
|
|
||||||
|
|
||||||
NEWSYM SetAddressingModesSA1
|
|
||||||
; set 8-bit read memory tables
|
|
||||||
mov edi,memtabler8
|
|
||||||
; banks 0-3Fh
|
|
||||||
mov eax,regaccessbankr8SA1
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks 40-6Fh
|
|
||||||
mov eax,SA1RAMaccessbankr8
|
|
||||||
mov ecx,$20
|
|
||||||
rep stosd
|
|
||||||
mov eax,SA1RAMaccessbankr8b
|
|
||||||
mov ecx,$10
|
|
||||||
rep stosd
|
|
||||||
; bank 70-77h
|
|
||||||
mov eax,sramaccessbankr8
|
|
||||||
mov ecx,8
|
|
||||||
rep stosd
|
|
||||||
; bank 78-7D
|
|
||||||
mov eax,memaccessbankr8
|
|
||||||
mov ecx,6
|
|
||||||
rep stosd
|
|
||||||
; bank 7E
|
|
||||||
mov eax,wramaccessbankr8
|
|
||||||
stosd
|
|
||||||
; bank 7F
|
|
||||||
mov eax,eramaccessbankr8
|
|
||||||
stosd
|
|
||||||
; banks 80-BF
|
|
||||||
mov eax,regaccessbankr8SA1
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks C0-FFh
|
|
||||||
mov eax,memaccessbankr8
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
|
|
||||||
; set 8-bit write memory tables
|
|
||||||
mov edi,memtablew8
|
|
||||||
; banks 0-3Fh
|
|
||||||
mov eax,regaccessbankw8SA1
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks 40-6Fh
|
|
||||||
mov eax,SA1RAMaccessbankw8
|
|
||||||
mov ecx,$20
|
|
||||||
rep stosd
|
|
||||||
mov eax,SA1RAMaccessbankw8b
|
|
||||||
mov ecx,$10
|
|
||||||
rep stosd
|
|
||||||
; bank 70-77h
|
|
||||||
mov eax,sramaccessbankw8
|
|
||||||
mov ecx,8
|
|
||||||
rep stosd
|
|
||||||
; bank 78-7D
|
|
||||||
mov eax,memaccessbankw8
|
|
||||||
mov ecx,6
|
|
||||||
rep stosd
|
|
||||||
; bank 7E
|
|
||||||
mov eax,wramaccessbankw8
|
|
||||||
stosd
|
|
||||||
; bank 7F
|
|
||||||
mov eax,eramaccessbankw8
|
|
||||||
stosd
|
|
||||||
; banks 80-BF
|
|
||||||
mov eax,regaccessbankw8SA1
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks C0-FFh
|
|
||||||
mov eax,memaccessbankw8
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
|
|
||||||
; set 16-bit read memory tables
|
|
||||||
mov edi,memtabler16
|
|
||||||
; banks 0-3Fh
|
|
||||||
mov eax,regaccessbankr16SA1
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks 40-6Fh
|
|
||||||
mov eax,SA1RAMaccessbankr16
|
|
||||||
mov ecx,$20
|
|
||||||
rep stosd
|
|
||||||
mov eax,SA1RAMaccessbankr16b
|
|
||||||
mov ecx,$10
|
|
||||||
rep stosd
|
|
||||||
; bank 70-77h
|
|
||||||
mov eax,sramaccessbankr16
|
|
||||||
mov ecx,8
|
|
||||||
rep stosd
|
|
||||||
; bank 78-7D
|
|
||||||
mov eax,memaccessbankr16
|
|
||||||
mov ecx,6
|
|
||||||
rep stosd
|
|
||||||
; bank 7E
|
|
||||||
mov eax,wramaccessbankr16
|
|
||||||
stosd
|
|
||||||
; bank 7F
|
|
||||||
mov eax,eramaccessbankr16
|
|
||||||
stosd
|
|
||||||
; banks 80-BF
|
|
||||||
mov eax,regaccessbankr16SA1
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks C0-FFh
|
|
||||||
mov eax,memaccessbankr16
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
|
|
||||||
; set 16-bit write memory tables
|
|
||||||
mov edi,memtablew16
|
|
||||||
; banks 0-3Fh
|
|
||||||
mov eax,regaccessbankw16SA1
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks 40-6Fh
|
|
||||||
mov eax,SA1RAMaccessbankw16
|
|
||||||
mov ecx,$20
|
|
||||||
rep stosd
|
|
||||||
mov eax,SA1RAMaccessbankw16b
|
|
||||||
mov ecx,$10
|
|
||||||
rep stosd
|
|
||||||
; bank 70-77h
|
|
||||||
mov eax,sramaccessbankw16
|
|
||||||
mov ecx,8
|
|
||||||
rep stosd
|
|
||||||
; bank 78-7D
|
|
||||||
mov eax,memaccessbankw16
|
|
||||||
mov ecx,6
|
|
||||||
rep stosd
|
|
||||||
; bank 7E
|
|
||||||
mov eax,wramaccessbankw16
|
|
||||||
stosd
|
|
||||||
; bank 7F
|
|
||||||
mov eax,eramaccessbankw16
|
|
||||||
stosd
|
|
||||||
; banks 80-BF
|
|
||||||
mov eax,regaccessbankw16SA1
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
; banks C0-FFh
|
|
||||||
mov eax,memaccessbankw16
|
|
||||||
mov ecx,$40
|
|
||||||
rep stosd
|
|
||||||
ret
|
|
||||||
|
|
||||||
eopINVALID
|
eopINVALID
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -637,22 +345,22 @@ NEWSYM cpucycle
|
|||||||
db 2, 5, 5, 7, 6, 4, 6, 6, 2, 4, 3, 3, 6, 4, 7, 5
|
db 2, 5, 5, 7, 6, 4, 6, 6, 2, 4, 3, 3, 6, 4, 7, 5
|
||||||
db 2, 6, 3, 4, 3, 3, 5, 6, 2, 2, 2, 3, 4, 4, 6, 5
|
db 2, 6, 3, 4, 3, 3, 5, 6, 2, 2, 2, 3, 4, 4, 6, 5
|
||||||
db 2, 5, 5, 7, 5, 4, 6, 6, 2, 4, 4, 2, 6, 4, 7, 5
|
db 2, 5, 5, 7, 5, 4, 6, 6, 2, 4, 4, 2, 6, 4, 7, 5
|
||||||
; | 2 8 | 2 6 | 2 8 | 2 4 | 2 5 | 2 3 | 2 5 | 2 6 | 1 3 | 2 2 | 1 2 | 1 4 | 3 6 | 3 4 | 3 6 | 4 5 |
|
; 28 | 26 | 28 | 24 | 25 | 23 | 25 | 26 | 13 | 22 | 12 | 14 | 36 | 34 | 36 | 45
|
||||||
; | 2 2 | 2 5 | 2 5 | 2 7 | 2 5 | 2 4 | 2 6 | 2 6 | 1 2 | 3 4 | 1 2 | 1 2 | 3 6 | 3 4 | 3 7 | 4 5 |
|
; 22 | 25 | 25 | 27 | 25 | 24 | 26 | 26 | 12 | 34 | 12 | 12 | 36 | 34 | 37 | 45
|
||||||
; | 3 6 | 2 6 | 4 8 | 2 4 | 2 3 | 2 3 | 2 5 | 2 6 | 1 4 | 2 2 | 1 2 | 1 5 | 3 4 | 3 4 | 3 6 | 4 5 |
|
; 36 | 26 | 48 | 24 | 23 | 23 | 25 | 26 | 14 | 22 | 12 | 15 | 34 | 34 | 36 | 45
|
||||||
; | 2 2 | 2 5 | 2 5 | 2 7 | 2 4 | 2 4 | 2 6 | 2 6 | 1 2 | 3 4 | 1 2 | 1 2 | 3 4 | 3 4 | 3 7 | 4 5 |
|
; 22 | 25 | 25 | 27 | 24 | 24 | 26 | 26 | 12 | 34 | 12 | 12 | 34 | 34 | 37 | 45
|
||||||
; | 1 7 | 2 6 | 2 2 | 2 4 | 3 7 | 2 3 | 2 5 | 2 6 | 1 3 | 2 2 | 1 2 | 1 3 | 3 3 | 3 4 | 3 6 | 4 5 |
|
; 17 | 26 | 22 | 24 | 37 | 23 | 25 | 26 | 13 | 22 | 12 | 13 | 33 | 34 | 36 | 45
|
||||||
; | 2 2 | 2 5 | 2 5 | 2 7 | 3 7 | 2 4 | 2 6 | 2 6 | 1 2 | 3 4 | 1 3 | 1 2 | 4 4 | 3 4 | 3 7 | 4 5 |
|
; 22 | 25 | 25 | 27 | 37 | 24 | 26 | 26 | 12 | 34 | 13 | 12 | 44 | 34 | 37 | 45
|
||||||
; | 1 6 | 2 6 | 3 6 | 2 4 | 2 3 | 2 3 | 2 5 | 2 6 | 1 4 | 2 2 | 1 2 | 1 6 | 3 5 | 3 4 | 3 6 | 4 5 |
|
; 16 | 26 | 36 | 24 | 23 | 23 | 25 | 26 | 14 | 22 | 12 | 16 | 35 | 34 | 36 | 45
|
||||||
; | 2 2 | 2 5 | 2 5 | 2 7 | 2 4 | 2 4 | 2 6 | 2 6 | 1 2 | 3 4 | 1 4 | 1 2 | 3 6 | 3 4 | 3 7 | 4 5 |
|
; 22 | 25 | 25 | 27 | 24 | 24 | 26 | 26 | 12 | 34 | 14 | 12 | 36 | 34 | 37 | 45
|
||||||
; | 2 2 | 2 6 | 3 3 | 2 4 | 2 3 | 2 3 | 2 3 | 2 6 | 1 2 | 2 2 | 1 2 | 1 3 | 3 4 | 3 4 | 3 4 | 4 5 |
|
; 22 | 26 | 33 | 24 | 23 | 23 | 23 | 26 | 12 | 22 | 12 | 13 | 34 | 34 | 34 | 45
|
||||||
; | 2 2 | 2 6 | 2 5 | 2 7 | 2 4 | 2 4 | 2 4 | 2 6 | 1 2 | 3 5 | 1 2 | 1 2 | 3 4 | 3 5 | 3 5 | 4 5 |
|
; 22 | 26 | 25 | 27 | 24 | 24 | 24 | 26 | 12 | 35 | 12 | 12 | 34 | 35 | 35 | 45
|
||||||
; | 2 2 | 2 6 | 2 2 | 2 4 | 2 3 | 2 3 | 2 3 | 2 6 | 1 2 | 2 2 | 1 2 | 1 4 | 3 4 | 3 4 | 3 4 | 4 5 |
|
; 22 | 26 | 22 | 24 | 23 | 23 | 23 | 26 | 12 | 22 | 12 | 14 | 34 | 34 | 34 | 45
|
||||||
; | 2 2 | 2 5 | 2 5 | 2 7 | 2 4 | 2 4 | 2 4 | 2 6 | 1 2 | 3 4 | 1 2 | 1 2 | 3 4 | 3 4 | 3 4 | 4 5 |
|
; 22 | 25 | 25 | 27 | 24 | 24 | 24 | 26 | 12 | 34 | 12 | 12 | 34 | 34 | 34 | 45
|
||||||
; | 2 2 | 2 6 | 2 3 | 2 4 | 2 3 | 2 3 | 2 5 | 2 6 | 1 2 | 2 2 | 1 2 | 1 3 | 3 4 | 3 4 | 3 4 | 4 5 |
|
; 22 | 26 | 23 | 24 | 23 | 23 | 25 | 26 | 12 | 22 | 12 | 13 | 34 | 34 | 34 | 45
|
||||||
; | 2 2 | 2 5 | 2 5 | 2 7 | 2 6 | 2 4 | 2 6 | 2 6 | 1 2 | 3 4 | 1 3 | 1 3 | 3 6 | 3 4 | 3 7 | 4 5 |
|
; 22 | 25 | 25 | 27 | 26 | 24 | 26 | 26 | 12 | 34 | 13 | 13 | 36 | 34 | 37 | 45
|
||||||
; | 2 2 | 2 6 | 2 3 | 2 4 | 2 3 | 2 3 | 2 5 | 2 6 | 1 2 | 2 2 | 1 2 | 1 3 | 3 4 | 3 4 | 3 6 | 4 5 |
|
; 22 | 26 | 23 | 24 | 23 | 23 | 25 | 26 | 12 | 22 | 12 | 13 | 34 | 34 | 36 | 45
|
||||||
; | 2 2 | 2 5 | 2 5 | 2 7 | 3 5 | 2 4 | 2 6 | 2 6 | 1 2 | 3 4 | 1 4 | 1 2 | 3 6 | 3 4 | 3 7 | 4 5 |
|
; 22 | 25 | 25 | 27 | 35 | 24 | 26 | 26 | 12 | 34 | 14 | 12 | 36 | 34 | 37 | 45
|
||||||
|
|
||||||
section .text
|
section .text
|
||||||
|
|
||||||
@@ -1193,5 +901,3 @@ NEWSYM settableDm16
|
|||||||
mov dword[edi+0FDh*4],COpFDm16d
|
mov dword[edi+0FDh*4],COpFDm16d
|
||||||
mov dword[edi+0FFh*4],COpFFm16d
|
mov dword[edi+0FFh*4],COpFFm16d
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ EXTSYM spcnumread
|
|||||||
EXTSYM Curtableaddr,fnamest,procexecloop,stateloader,tableA
|
EXTSYM Curtableaddr,fnamest,procexecloop,stateloader,tableA
|
||||||
EXTSYM vidmemch2
|
EXTSYM vidmemch2
|
||||||
EXTSYM statesaver
|
EXTSYM statesaver
|
||||||
EXTSYM memtablew8,printhex8,writeon,SetAddressingModesSA1
|
EXTSYM memtablew8,printhex8,writeon
|
||||||
EXTSYM curcyc,dmadata,execsingle,initaddrl,memtabler8,pdh
|
EXTSYM curcyc,dmadata,execsingle,initaddrl,memtabler8,pdh
|
||||||
EXTSYM regaccessbankr8,selcB800,snesmap2,snesmmap
|
EXTSYM regaccessbankr8,selcB800,snesmap2,snesmmap
|
||||||
EXTSYM ram7f
|
EXTSYM ram7f
|
||||||
|
|||||||
@@ -33,12 +33,13 @@ extern unsigned int spcnumread, spchalted, opcd, HIRQCycNext, oamaddr;
|
|||||||
extern unsigned int SfxR0, *setaramdata, ramsize, *sram;
|
extern unsigned int SfxR0, *setaramdata, ramsize, *sram;
|
||||||
extern unsigned int tempesi, tempedi, tempedx, tempebp;
|
extern unsigned int tempesi, tempedi, tempedx, tempebp;
|
||||||
extern unsigned int SPCMultA, PHnum2writespc7110reg, PHdspsave2;
|
extern unsigned int SPCMultA, PHnum2writespc7110reg, PHdspsave2;
|
||||||
extern unsigned char sndrot, spcRam[65472];
|
extern unsigned char sndrot, spcRam[65472], DSPMem[256], SA1Status, *SA1RAMArea;
|
||||||
extern unsigned char DSPMem[256], SA1Status, *SA1RAMArea, DSP1Type, DSP1COp;
|
extern unsigned char DSP1Type, DSP1COp, prevoamptr, BRRBuffer[32], *romdata;
|
||||||
extern unsigned char prevoamptr, BRRBuffer[32], *romdata, curcyc, echoon0;
|
extern unsigned char curcyc, echoon0;
|
||||||
extern unsigned char vidmemch4[4096], vidmemch8[4096], vidmemch2[4096];
|
extern unsigned char vidmemch4[4096], vidmemch8[4096], vidmemch2[4096];
|
||||||
|
|
||||||
extern bool C4Enable, SFXEnable, SA1Enable, SPC7110Enable, SETAEnable, spcon, SRAMState;
|
extern bool C4Enable, SFXEnable, SA1Enable, SPC7110Enable, SETAEnable, spcon;
|
||||||
|
extern bool SRAMState;
|
||||||
|
|
||||||
extern short C4WFXVal, C41FXVal, Op00Multiplicand, Op04Angle, Op08X, Op18X;
|
extern short C4WFXVal, C41FXVal, Op00Multiplicand, Op04Angle, Op08X, Op18X;
|
||||||
extern short Op28X, Op0CA, Op02FX, Op0AVS, Op06X, Op01m, Op0DX, Op03F, Op14Zr;
|
extern short Op28X, Op0CA, Op02FX, Op0AVS, Op06X, Op01m, Op0DX, Op03F, Op14Zr;
|
||||||
|
|||||||
@@ -24,21 +24,18 @@ EXTSYM DosExit,UpdateDevices,InitSPC,Makemode7Table,MusicRelVol,MusicVol
|
|||||||
EXTSYM makesprprtable,romloadskip,start65816,startdebugger,SfxR0
|
EXTSYM makesprprtable,romloadskip,start65816,startdebugger,SfxR0
|
||||||
EXTSYM showinfogui
|
EXTSYM showinfogui
|
||||||
EXTSYM filefound,inittable,SA1inittable
|
EXTSYM filefound,inittable,SA1inittable
|
||||||
EXTSYM MessageOn,Msgptr,MsgCount,sndrot,GenerateBank0Table,SnowTimer
|
EXTSYM MessageOn,Msgptr,MsgCount,sndrot,SnowTimer
|
||||||
EXTSYM inittableb,inittablec,newgfx16b,cfgreinittime
|
EXTSYM inittableb,inittablec,newgfx16b,cfgreinittime
|
||||||
EXTSYM Open_File,Read_File,Write_File,Close_File,Output_Text,Get_Key,CNetType
|
EXTSYM Open_File,Read_File,Write_File,Close_File,Output_Text,Get_Key,CNetType
|
||||||
EXTSYM Delete_File,Get_First_Entry,Get_Next_Entry,Change_Dir,InitDSP
|
EXTSYM Delete_File,Get_First_Entry,Get_Next_Entry,Change_Dir,InitDSP
|
||||||
EXTSYM Remove_Dir,Change_Single_Dir,Create_Dir,Get_Memfree,Create_File
|
EXTSYM Remove_Dir,Change_Single_Dir,Create_Dir,Get_Memfree,Create_File
|
||||||
EXTSYM SPCDisable,osm2dis,CurRecv,BackupSystemVars
|
EXTSYM SPCDisable,osm2dis,CurRecv,BackupSystemVars
|
||||||
EXTSYM SnowData,SnowVelDist
|
EXTSYM SnowData,SnowVelDist
|
||||||
EXTSYM cvidmode, newengen, cfgnewgfx, GUI16VID
|
EXTSYM cvidmode,newengen,cfgnewgfx,GUI16VID,NewEngEnForce
|
||||||
EXTSYM NewEngEnForce
|
EXTSYM PrintChar,TextFile
|
||||||
EXTSYM PrintChar
|
|
||||||
EXTSYM TextFile
|
|
||||||
EXTSYM Setper2exec,per2exec
|
EXTSYM Setper2exec,per2exec
|
||||||
EXTSYM chaton
|
EXTSYM chaton
|
||||||
EXTSYM JoyRead,JoyReadControl,joy4218,joy4219
|
EXTSYM JoyRead,JoyReadControl,joy4218,joy4219,joy421A,joy421B,pressed
|
||||||
EXTSYM joy421A,joy421B,pressed
|
|
||||||
EXTSYM pl3Ak,pl3Bk,pl3Lk,pl3Rk,pl3Xk,pl1p209,pl2p209,pl3p209,pl4p209
|
EXTSYM pl3Ak,pl3Bk,pl3Lk,pl3Rk,pl3Xk,pl1p209,pl2p209,pl3p209,pl4p209
|
||||||
EXTSYM pl3Yk,pl3contrl,pl3downk,pl3leftk,pl3rightk,pl3selk,pl3startk
|
EXTSYM pl3Yk,pl3contrl,pl3downk,pl3leftk,pl3rightk,pl3selk,pl3startk
|
||||||
EXTSYM pl3upk,pl4Ak,pl4Bk,pl4Lk,pl4Rk,pl4Xk,pl4Yk,pl4contrl,pl4downk
|
EXTSYM pl3upk,pl4Ak,pl4Bk,pl4Lk,pl4Rk,pl4Xk,pl4Yk,pl4contrl,pl4downk
|
||||||
@@ -52,12 +49,12 @@ EXTSYM pl3Xtk,pl3Ytk,pl3Atk,pl3Btk,pl4Xtk,pl4Ytk,pl4Atk,pl4Btk
|
|||||||
EXTSYM pl1ULk,pl1URk,pl1DLk,pl1DRk,pl2ULk,pl2URk,pl2DLk,pl2DRk
|
EXTSYM pl1ULk,pl1URk,pl1DLk,pl1DRk,pl2ULk,pl2URk,pl2DLk,pl2DRk
|
||||||
EXTSYM pl3ULk,pl3URk,pl3DLk,pl3DRk,pl4ULk,pl4URk,pl4DLk,pl4DRk
|
EXTSYM pl3ULk,pl3URk,pl3DLk,pl3DRk,pl4ULk,pl4URk,pl4DLk,pl4DRk
|
||||||
EXTSYM pl5ULk,pl5URk,pl5DLk,pl5DRk,pl5Xtk,pl5Ytk,pl5Atk,pl5Btk
|
EXTSYM pl5ULk,pl5URk,pl5DLk,pl5DRk,pl5Xtk,pl5Ytk,pl5Atk,pl5Btk
|
||||||
|
EXTSYM pl1Ltk,pl1Rtk,pl2Ltk,pl2Rtk,pl3Ltk,pl3Rtk,pl4Ltk,pl4Rtk,pl5Ltk,pl5Rtk
|
||||||
EXTSYM Turbo30hz,nojoystickpoll
|
EXTSYM Turbo30hz,nojoystickpoll
|
||||||
EXTSYM NumComboLocl,ComboBlHeader,ComboHeader,CombinDataLocl
|
EXTSYM NumComboLocl,ComboBlHeader,ComboHeader,CombinDataLocl
|
||||||
EXTSYM CombinDataGlob,NumCombo,GUIComboGameSpec
|
EXTSYM CombinDataGlob,NumCombo,GUIComboGameSpec
|
||||||
EXTSYM mousexloc,mouseyloc
|
EXTSYM mousexloc,mouseyloc
|
||||||
EXTSYM extlatch
|
EXTSYM extlatch,BackState
|
||||||
EXTSYM BackState
|
|
||||||
EXTSYM FIRTAPVal0,FIRTAPVal1,FIRTAPVal2,FIRTAPVal3,FIRTAPVal4
|
EXTSYM FIRTAPVal0,FIRTAPVal1,FIRTAPVal2,FIRTAPVal3,FIRTAPVal4
|
||||||
EXTSYM FIRTAPVal5,FIRTAPVal6,FIRTAPVal7,INTEnab,JoyAPos,JoyBPos
|
EXTSYM FIRTAPVal5,FIRTAPVal6,FIRTAPVal7,INTEnab,JoyAPos,JoyBPos
|
||||||
EXTSYM NMIEnab,SPCROM,VIRQLoc,coladdb,coladdg,coladdr,doirqnext
|
EXTSYM NMIEnab,SPCROM,VIRQLoc,coladdb,coladdg,coladdr,doirqnext
|
||||||
@@ -68,30 +65,22 @@ EXTSYM opexec358cphb,prevoamptr,reg1read,reg2read,reg3read
|
|||||||
EXTSYM reg4read,resolutn,romdata,scrndis,spcP,spcRam
|
EXTSYM reg4read,resolutn,romdata,scrndis,spcP,spcRam
|
||||||
EXTSYM spcnumread,spchalted,tableD,timeron,vidbright,OldGfxMode2
|
EXTSYM spcnumread,spchalted,tableD,timeron,vidbright,OldGfxMode2
|
||||||
EXTSYM SPC700read,SPC700write,GUIDoReset,spc700read,GUIReset
|
EXTSYM SPC700read,SPC700write,GUIDoReset,spc700read,GUIReset
|
||||||
EXTSYM InitC4,SA1Reset,SetAddressingModesSA1,SetAddressingModes,SDD1BankA,SPC7110init
|
EXTSYM InitC4,SA1Reset,SetAddressingModesSA1,SDD1BankA
|
||||||
EXTSYM RTCinit,InitOBC
|
EXTSYM SPC7110init,RTCinit,InitOBC
|
||||||
EXTSYM memaccessspc7110r8,memaccessspc7110r16,memaccessspc7110w8
|
EXTSYM memaccessspc7110r8,memaccessspc7110r16
|
||||||
EXTSYM memaccessspc7110w16
|
EXTSYM memaccessspc7110w8,memaccessspc7110w16
|
||||||
EXTSYM ram7f,snesmap2,snesmmap,sram,MultiTap
|
EXTSYM ram7f,snesmap2,snesmmap,sram,MultiTap
|
||||||
EXTSYM memaccessbankr848mb,memaccessbankr1648mb
|
EXTSYM memaccessbankr848mb,memaccessbankr1648mb
|
||||||
EXTSYM cpuover,execloop,procexecloop
|
EXTSYM cpuover,execloop,procexecloop,curexecstate,debugdisble,vidbuffer
|
||||||
;EXTSYM execloopn,execloopns,execloops
|
|
||||||
;EXTSYM PHsizeofexecloop,PHsizeofexecloopn,PHsizeofexecloopns
|
|
||||||
;EXTSYM PHsizeofexecloops
|
|
||||||
EXTSYM curexecstate
|
|
||||||
EXTSYM debugdisble,vidbuffer
|
|
||||||
EXTSYM Sup16mbit,Sup48mbit,debugbufa,pal16b,pal16bcl,pal16bclha
|
EXTSYM Sup16mbit,Sup48mbit,debugbufa,pal16b,pal16bcl,pal16bclha
|
||||||
EXTSYM pal16bxcl,ram7fa,regptra,regptwa,srama,vidmemch2,vidmemch4
|
EXTSYM pal16bxcl,ram7fa,regptra,regptwa,srama,vidmemch2,vidmemch4
|
||||||
EXTSYM vidmemch8,vcache2b,vcache4b,vcache8b,vram,wramdata
|
EXTSYM vidmemch8,vcache2b,vcache4b,vcache8b,vram,wramdata,wramdataa
|
||||||
EXTSYM wramdataa
|
EXTSYM fname,fnames,GetCurDir,GUIcurrentdir,PrintStr
|
||||||
EXTSYM fname,fnames,GetCurDir
|
|
||||||
EXTSYM GUIcurrentdir,PrintStr
|
|
||||||
;STUB DDOI
|
;STUB DDOI
|
||||||
;EXTSYM GUIcurrentdir,PrintStr
|
;EXTSYM GUIcurrentdir,PrintStr
|
||||||
EXTSYM DTALoc
|
EXTSYM DTALoc,spc7110romptr,allocspc7110
|
||||||
EXTSYM spc7110romptr,allocspc7110
|
EXTSYM SRAMChdir,cfgloadsdir,fnamest,statefileloc,frameskip
|
||||||
EXTSYM SRAMChdir,cfgloadsdir,fnamest,statefileloc
|
EXTSYM ForcePal,ForceROMTiming,ForceHiLoROM,InitDir,InitDrive,enterpress
|
||||||
EXTSYM ForcePal,ForceROMTiming,ForceHiLoROM,InitDir,InitDrive,enterpress,frameskip
|
|
||||||
EXTSYM maxromspace,curromspace,infoloc,patchfile
|
EXTSYM maxromspace,curromspace,infoloc,patchfile
|
||||||
EXTSYM gotoroot,headdata,printnum,romispal
|
EXTSYM gotoroot,headdata,printnum,romispal
|
||||||
EXTSYM InitFxTables,SfxR1,SfxR2,SfxSCMR,SfxSFR,finterleave
|
EXTSYM InitFxTables,SfxR1,SfxR2,SfxSCMR,SfxSFR,finterleave
|
||||||
@@ -101,47 +90,32 @@ EXTSYM memaccessbankw16,memtablew8,DSP1Write8b,memaccessbankw8,DSP1Write16b3F
|
|||||||
EXTSYM regaccessbankr16,regaccessbankr8,regaccessbankw16,regaccessbankw8
|
EXTSYM regaccessbankr16,regaccessbankr8,regaccessbankw16,regaccessbankw8
|
||||||
EXTSYM sfxaccessbankr16,sfxaccessbankr16b,sfxaccessbankr16c,DSP1Write8b3F
|
EXTSYM sfxaccessbankr16,sfxaccessbankr16b,sfxaccessbankr16c,DSP1Write8b3F
|
||||||
EXTSYM sfxaccessbankr16d,sfxaccessbankr8,sfxaccessbankr8b,sfxaccessbankr8c
|
EXTSYM sfxaccessbankr16d,sfxaccessbankr8,sfxaccessbankr8b,sfxaccessbankr8c
|
||||||
EXTSYM sfxaccessbankr8d,sfxaccessbankw16,sfxaccessbankw16b
|
EXTSYM sfxaccessbankr8d,sfxaccessbankw16,sfxaccessbankw16b,sfxaccessbankw16c
|
||||||
EXTSYM sfxaccessbankw16c,sfxaccessbankw16d,sfxaccessbankw8
|
EXTSYM sfxaccessbankw16d,sfxaccessbankw8,sfxaccessbankw8b,sfxaccessbankw8c
|
||||||
EXTSYM sfxaccessbankw8b,sfxaccessbankw8c,sfxaccessbankw8d,sfxramdata
|
EXTSYM sfxaccessbankw8d,sfxramdata
|
||||||
EXTSYM sramaccessbankr16,sramaccessbankr16s,sramaccessbankr8
|
EXTSYM sramaccessbankr16,sramaccessbankr16s,sramaccessbankr8,sramaccessbankr8s
|
||||||
EXTSYM sramaccessbankr8s,sramaccessbankw16,sramaccessbankw16s
|
EXTSYM sramaccessbankw16,sramaccessbankw16s,sramaccessbankw8,sramaccessbankw8s
|
||||||
EXTSYM sramaccessbankw8,sramaccessbankw8s,GenerateBank0TableSA1
|
|
||||||
EXTSYM ScrDispl,wramreadptr,wramwriteptr
|
EXTSYM ScrDispl,wramreadptr,wramwriteptr
|
||||||
EXTSYM pl1Ltk,pl1Rtk,pl2Ltk,pl2Rtk,pl3Ltk,pl3Rtk,pl4Ltk,pl4Rtk,pl5Ltk,pl5Rtk
|
|
||||||
EXTSYM loadstate2,headerhack
|
EXTSYM loadstate2,headerhack
|
||||||
|
|
||||||
;initc.c
|
;initc.c
|
||||||
EXTSYM chip_detect
|
EXTSYM clearmem,clearSPCRAM,PatchUsingIPS,loadZipFile,ZOpenFileName
|
||||||
EXTSYM clearmem,clearSPCRAM
|
EXTSYM loadROM,CalcChecksum,BankCheck,MirrorROM,SplittedROM,addOnStart,addOnSize
|
||||||
EXTSYM PatchUsingIPS
|
EXTSYM SPC7PackIndexLoad,SPC7110IndexSize,DumpROMLoadInfo,SetupSramSize,IntlEHi
|
||||||
EXTSYM loadZipFile
|
EXTSYM CHIPBATT,SETAEnable,C4Enable,SPC7110Enable,RTCEnable,SA1Enable,SDD1Enable
|
||||||
EXTSYM ZOpenFileName
|
EXTSYM OBCEnable,SFXEnable,ST18Enable,SGBEnable,DSP1Enable,DSP2Enable,DSP3Enable
|
||||||
EXTSYM loadROM
|
EXTSYM DSP4Enable,BSEnable,clearvidsound
|
||||||
EXTSYM CalcChecksum
|
|
||||||
EXTSYM BankCheck
|
|
||||||
EXTSYM MirrorROM
|
|
||||||
EXTSYM SplittedROM
|
|
||||||
EXTSYM addOnStart
|
|
||||||
EXTSYM addOnSize
|
|
||||||
EXTSYM SPC7PackIndexLoad,SPC7110IndexSize
|
|
||||||
EXTSYM DumpROMLoadInfo
|
|
||||||
EXTSYM SetupSramSize
|
|
||||||
EXTSYM IntlEHi
|
|
||||||
EXTSYM CHIPBATT,SFXEnable,C4Enable,SPC7110Enable,RTCEnable,SA1Enable,SDD1Enable,OBCEnable
|
|
||||||
EXTSYM SETAEnable,ST18Enable,SGBEnable,DSP1Enable,DSP2Enable,DSP3Enable,DSP4Enable,BSEnable
|
|
||||||
EXTSYM clearvidsound
|
|
||||||
|
|
||||||
EXTSYM calculate_state_sizes,InitRewindVars
|
EXTSYM calculate_state_sizes,InitRewindVars
|
||||||
|
|
||||||
EXTSYM SetaCmdEnable,setaramdata
|
EXTSYM SetaCmdEnable,setaramdata
|
||||||
EXTSYM setaaccessbankr8,setaaccessbankw8,setaaccessbankr8a,setaaccessbankw8a
|
EXTSYM setaaccessbankr8,setaaccessbankw8,setaaccessbankr8a,setaaccessbankw8a
|
||||||
EXTSYM setaaccessbankr16,setaaccessbankw16,setaaccessbankr16a,setaaccessbankw16a
|
EXTSYM setaaccessbankr16,setaaccessbankw16,setaaccessbankr16a,setaaccessbankw16a
|
||||||
|
|
||||||
EXTSYM DSP2Read8b,DSP2Read16b,DSP2Write8b,DSP2Write16b,InitDSP2
|
EXTSYM DSP2Read8b,DSP2Read16b,DSP2Write8b,DSP2Write16b,InitDSP2
|
||||||
|
|
||||||
EXTSYM DSP4Read8b,DSP4Read16b,DSP4Write8b,DSP4Write16b,InitDSP4
|
EXTSYM DSP4Read8b,DSP4Read16b,DSP4Write8b,DSP4Write16b,InitDSP4
|
||||||
|
|
||||||
|
EXTSYM SetupROMc
|
||||||
|
|
||||||
%ifdef __LINUX__
|
%ifdef __LINUX__
|
||||||
EXTSYM LoadDir,popdir,pushdir
|
EXTSYM LoadDir,popdir,pushdir
|
||||||
%endif
|
%endif
|
||||||
@@ -365,7 +339,6 @@ EndMessageB
|
|||||||
|
|
||||||
SECTION .data
|
SECTION .data
|
||||||
|
|
||||||
|
|
||||||
; Controls
|
; Controls
|
||||||
;FIXME: define pl3contrl, pl4contrl and pl5contrl here?
|
;FIXME: define pl3contrl, pl4contrl and pl5contrl here?
|
||||||
;Christophe 2001/03/10
|
;Christophe 2001/03/10
|
||||||
@@ -508,10 +481,11 @@ NEWSYM Sflagnz, dd 0
|
|||||||
NEWSYM Sflago, dd 0
|
NEWSYM Sflago, dd 0
|
||||||
NEWSYM Sflagc, dd 0
|
NEWSYM Sflagc, dd 0
|
||||||
|
|
||||||
ebm db 166,95,66,223,17,11,103,180,156,68,108,120,138,55,203,205,178,210,39,252,128,66
|
ebm db 166,95,66,223,17,11,103,180,156,68,108,120,138,55,203,205
|
||||||
db 65,167,155,151,197,125,176,66,73,230,61,210,7,137,152,110,203,241,50,89,70,29,176
|
db 178,210,39,252,128,66,65,167,155,151,197,125,176,66,73,230
|
||||||
db 42,99,167,155,92,3,221,224,54,53,167,155,211,70,205,138,202,91,234,178,80,229,13,10
|
db 61,210,7,137,152,110,203,241,50,89,70,29,176,42,99,167
|
||||||
|
db 155,92,3,221,224,54,53,167,155,211,70,205,138,202,91,234
|
||||||
|
db 178,80,229,13,10
|
||||||
|
|
||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
@@ -1108,7 +1082,9 @@ NEWSYM init65816
|
|||||||
cmp byte[SA1Enable],0
|
cmp byte[SA1Enable],0
|
||||||
je .nosa1init
|
je .nosa1init
|
||||||
call SA1Reset
|
call SA1Reset
|
||||||
|
pushad
|
||||||
call SetAddressingModesSA1
|
call SetAddressingModesSA1
|
||||||
|
popad
|
||||||
.nosa1init
|
.nosa1init
|
||||||
cmp byte[OBCEnable],0
|
cmp byte[OBCEnable],0
|
||||||
je .noobcinit
|
je .noobcinit
|
||||||
@@ -2349,7 +2325,7 @@ SECTION .bss
|
|||||||
|
|
||||||
|
|
||||||
NEWSYM Checksumvalue, resw 1
|
NEWSYM Checksumvalue, resw 1
|
||||||
NEWSYM Checksumvalue2, resw 1 ;This is outdated, but needed for the command line loader
|
NEWSYM Checksumvalue2, resw 1 ;outdated, but needed for the command line loader
|
||||||
NEWSYM CRC32, resd 1
|
NEWSYM CRC32, resd 1
|
||||||
NEWSYM SramExists, resb 1
|
NEWSYM SramExists, resb 1
|
||||||
NEWSYM NumofBanks, resd 1
|
NEWSYM NumofBanks, resd 1
|
||||||
@@ -2521,7 +2497,6 @@ NEWSYM GUIloadfailed, resb 1
|
|||||||
|
|
||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
|
|
||||||
NEWSYM convertsram
|
NEWSYM convertsram
|
||||||
cmp byte[cfgloadsdir],1
|
cmp byte[cfgloadsdir],1
|
||||||
je .sdrivechange
|
je .sdrivechange
|
||||||
@@ -2604,51 +2579,6 @@ NEWSYM CSStatus, db ' TYPE: ',0
|
|||||||
NEWSYM CSStatus2, db 'INTERLEAVED: BANK: CHKSUM: ',0
|
NEWSYM CSStatus2, db 'INTERLEAVED: BANK: CHKSUM: ',0
|
||||||
NEWSYM CSStatus3, db 'VIDEO: CRC32: ',0
|
NEWSYM CSStatus3, db 'VIDEO: CRC32: ',0
|
||||||
|
|
||||||
NEWSYM crc32_table,
|
|
||||||
dd 000000000h, 077073096h, 0ee0e612ch, 0990951bah, 0076dc419h, 0706af48fh
|
|
||||||
dd 0e963a535h, 09e6495a3h, 00edb8832h, 079dcb8a4h, 0e0d5e91eh, 097d2d988h
|
|
||||||
dd 009b64c2bh, 07eb17cbdh, 0e7b82d07h, 090bf1d91h, 01db71064h, 06ab020f2h
|
|
||||||
dd 0f3b97148h, 084be41deh, 01adad47dh, 06ddde4ebh, 0f4d4b551h, 083d385c7h
|
|
||||||
dd 0136c9856h, 0646ba8c0h, 0fd62f97ah, 08a65c9ech, 014015c4fh, 063066cd9h
|
|
||||||
dd 0fa0f3d63h, 08d080df5h, 03b6e20c8h, 04c69105eh, 0d56041e4h, 0a2677172h
|
|
||||||
dd 03c03e4d1h, 04b04d447h, 0d20d85fdh, 0a50ab56bh, 035b5a8fah, 042b2986ch
|
|
||||||
dd 0dbbbc9d6h, 0acbcf940h, 032d86ce3h, 045df5c75h, 0dcd60dcfh, 0abd13d59h
|
|
||||||
dd 026d930ach, 051de003ah, 0c8d75180h, 0bfd06116h, 021b4f4b5h, 056b3c423h
|
|
||||||
dd 0cfba9599h, 0b8bda50fh, 02802b89eh, 05f058808h, 0c60cd9b2h, 0b10be924h
|
|
||||||
dd 02f6f7c87h, 058684c11h, 0c1611dabh, 0b6662d3dh, 076dc4190h, 001db7106h
|
|
||||||
dd 098d220bch, 0efd5102ah, 071b18589h, 006b6b51fh, 09fbfe4a5h, 0e8b8d433h
|
|
||||||
dd 07807c9a2h, 00f00f934h, 09609a88eh, 0e10e9818h, 07f6a0dbbh, 0086d3d2dh
|
|
||||||
dd 091646c97h, 0e6635c01h, 06b6b51f4h, 01c6c6162h, 0856530d8h, 0f262004eh
|
|
||||||
dd 06c0695edh, 01b01a57bh, 08208f4c1h, 0f50fc457h, 065b0d9c6h, 012b7e950h
|
|
||||||
dd 08bbeb8eah, 0fcb9887ch, 062dd1ddfh, 015da2d49h, 08cd37cf3h, 0fbd44c65h
|
|
||||||
dd 04db26158h, 03ab551ceh, 0a3bc0074h, 0d4bb30e2h, 04adfa541h, 03dd895d7h
|
|
||||||
dd 0a4d1c46dh, 0d3d6f4fbh, 04369e96ah, 0346ed9fch, 0ad678846h, 0da60b8d0h
|
|
||||||
dd 044042d73h, 033031de5h, 0aa0a4c5fh, 0dd0d7cc9h, 05005713ch, 0270241aah
|
|
||||||
dd 0be0b1010h, 0c90c2086h, 05768b525h, 0206f85b3h, 0b966d409h, 0ce61e49fh
|
|
||||||
dd 05edef90eh, 029d9c998h, 0b0d09822h, 0c7d7a8b4h, 059b33d17h, 02eb40d81h
|
|
||||||
dd 0b7bd5c3bh, 0c0ba6cadh, 0edb88320h, 09abfb3b6h, 003b6e20ch, 074b1d29ah
|
|
||||||
dd 0ead54739h, 09dd277afh, 004db2615h, 073dc1683h, 0e3630b12h, 094643b84h
|
|
||||||
dd 00d6d6a3eh, 07a6a5aa8h, 0e40ecf0bh, 09309ff9dh, 00a00ae27h, 07d079eb1h
|
|
||||||
dd 0f00f9344h, 08708a3d2h, 01e01f268h, 06906c2feh, 0f762575dh, 0806567cbh
|
|
||||||
dd 0196c3671h, 06e6b06e7h, 0fed41b76h, 089d32be0h, 010da7a5ah, 067dd4acch
|
|
||||||
dd 0f9b9df6fh, 08ebeeff9h, 017b7be43h, 060b08ed5h, 0d6d6a3e8h, 0a1d1937eh
|
|
||||||
dd 038d8c2c4h, 04fdff252h, 0d1bb67f1h, 0a6bc5767h, 03fb506ddh, 048b2364bh
|
|
||||||
dd 0d80d2bdah, 0af0a1b4ch, 036034af6h, 041047a60h, 0df60efc3h, 0a867df55h
|
|
||||||
dd 0316e8eefh, 04669be79h, 0cb61b38ch, 0bc66831ah, 0256fd2a0h, 05268e236h
|
|
||||||
dd 0cc0c7795h, 0bb0b4703h, 0220216b9h, 05505262fh, 0c5ba3bbeh, 0b2bd0b28h
|
|
||||||
dd 02bb45a92h, 05cb36a04h, 0c2d7ffa7h, 0b5d0cf31h, 02cd99e8bh, 05bdeae1dh
|
|
||||||
dd 09b64c2b0h, 0ec63f226h, 0756aa39ch, 0026d930ah, 09c0906a9h, 0eb0e363fh
|
|
||||||
dd 072076785h, 005005713h, 095bf4a82h, 0e2b87a14h, 07bb12baeh, 00cb61b38h
|
|
||||||
dd 092d28e9bh, 0e5d5be0dh, 07cdcefb7h, 00bdbdf21h, 086d3d2d4h, 0f1d4e242h
|
|
||||||
dd 068ddb3f8h, 01fda836eh, 081be16cdh, 0f6b9265bh, 06fb077e1h, 018b74777h
|
|
||||||
dd 088085ae6h, 0ff0f6a70h, 066063bcah, 011010b5ch, 08f659effh, 0f862ae69h
|
|
||||||
dd 0616bffd3h, 0166ccf45h, 0a00ae278h, 0d70dd2eeh, 04e048354h, 03903b3c2h
|
|
||||||
dd 0a7672661h, 0d06016f7h, 04969474dh, 03e6e77dbh, 0aed16a4ah, 0d9d65adch
|
|
||||||
dd 040df0b66h, 037d83bf0h, 0a9bcae53h, 0debb9ec5h, 047b2cf7fh, 030b5ffe9h
|
|
||||||
dd 0bdbdf21ch, 0cabac28ah, 053b39330h, 024b4a3a6h, 0bad03605h, 0cdd70693h
|
|
||||||
dd 054de5729h, 023d967bfh, 0b3667a2eh, 0c4614ab8h, 05d681b02h, 02a6f2b94h
|
|
||||||
dd 0b40bbe37h, 0c30c8ea1h, 05a05df1bh, 02d02ef8dh
|
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
; Show Information
|
; Show Information
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
@@ -2672,7 +2602,10 @@ SECTION .text
|
|||||||
EXTSYM ClearScreen, cbitmode, makepal
|
EXTSYM ClearScreen, cbitmode, makepal
|
||||||
|
|
||||||
NEWSYM SetupROM
|
NEWSYM SetupROM
|
||||||
call CheckROMType
|
pushad
|
||||||
|
call SetupROMc
|
||||||
|
popad
|
||||||
|
; call CheckROMType
|
||||||
call SetIRQVectors
|
call SetIRQVectors
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
cmp byte[cbitmode],0
|
cmp byte[cbitmode],0
|
||||||
@@ -2720,331 +2653,6 @@ NEWSYM SetupROM
|
|||||||
.nopal
|
.nopal
|
||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM CheckROMType
|
|
||||||
pushad
|
|
||||||
call BankCheck
|
|
||||||
call MirrorROM
|
|
||||||
popad
|
|
||||||
|
|
||||||
|
|
||||||
mov byte[lorommapmode2],0
|
|
||||||
mov esi,[romdata]
|
|
||||||
cmp dword[esi+207FC0h],'DERB'
|
|
||||||
jne .noderby96
|
|
||||||
cmp dword[esi+207FC4h],'Y ST'
|
|
||||||
jne .noderby96
|
|
||||||
cmp dword[esi+207FC8h],'ALLI'
|
|
||||||
jne .noderby96
|
|
||||||
cmp dword[esi+207FCDh],'N 96'
|
|
||||||
jne .noderby96
|
|
||||||
mov byte[lorommapmode2],1
|
|
||||||
.noderby96
|
|
||||||
cmp dword[esi+7FC0h],'SOUN'
|
|
||||||
jne .nosoundnovel
|
|
||||||
cmp dword[esi+7FC4h],'D NO'
|
|
||||||
jne .nosoundnovel
|
|
||||||
cmp dword[esi+7FC8h],'VEL-'
|
|
||||||
jne .nosoundnovel
|
|
||||||
cmp dword[esi+7FCDh],'COOL'
|
|
||||||
jne .nosoundnovel
|
|
||||||
mov byte[lorommapmode2],1
|
|
||||||
.nosoundnovel
|
|
||||||
|
|
||||||
jmp .skipall
|
|
||||||
; scan for branches
|
|
||||||
mov esi,06A5h
|
|
||||||
add esi,[romdata]
|
|
||||||
mov ecx,80h
|
|
||||||
.loopcheck
|
|
||||||
cmp byte[esi],48h
|
|
||||||
je .yes
|
|
||||||
cmp byte[esi],8Bh
|
|
||||||
je .yes
|
|
||||||
cmp byte[esi],0Bh
|
|
||||||
je .yes
|
|
||||||
cmp byte[esi],4Bh
|
|
||||||
je .yes
|
|
||||||
cmp byte[esi],08h
|
|
||||||
je .yes
|
|
||||||
cmp byte[esi],0DAh
|
|
||||||
je .yes
|
|
||||||
cmp byte[esi],5Ah
|
|
||||||
je .yes
|
|
||||||
jmp .no
|
|
||||||
.yes
|
|
||||||
pushad
|
|
||||||
mov al,byte[esi]
|
|
||||||
mov al,80h
|
|
||||||
sub al,cl
|
|
||||||
call printhex8
|
|
||||||
popad
|
|
||||||
.no
|
|
||||||
add esi,8000h
|
|
||||||
dec ecx
|
|
||||||
jnz .loopcheck
|
|
||||||
.skipall
|
|
||||||
|
|
||||||
call SetAddressingModes
|
|
||||||
call GenerateBank0Table
|
|
||||||
|
|
||||||
pushad
|
|
||||||
call chip_detect
|
|
||||||
popad
|
|
||||||
|
|
||||||
;Setup some Memmapping
|
|
||||||
mov byte[DSP1Type],0
|
|
||||||
mov esi,[romdata]
|
|
||||||
add esi,0FFC0h
|
|
||||||
mov byte[disablespcclr],0
|
|
||||||
mov eax,50205040h
|
|
||||||
or eax,0A000302h
|
|
||||||
cmp dword[esi],eax
|
|
||||||
jne .nospcdis
|
|
||||||
mov byte[disablespcclr],1
|
|
||||||
.nospcdis
|
|
||||||
; banks 0-3Fh
|
|
||||||
mov dword[memtabler8+3Fh*4],regaccessbankr8
|
|
||||||
mov dword[memtablew8+3Fh*4],regaccessbankw8
|
|
||||||
mov dword[memtabler16+3Fh*4],regaccessbankr16
|
|
||||||
mov dword[memtablew16+3Fh*4],regaccessbankw16
|
|
||||||
mov dword[memtabler8+0BFh*4],regaccessbankr8
|
|
||||||
mov dword[memtablew8+0BFh*4],regaccessbankw8
|
|
||||||
mov dword[memtabler16+0BFh*4],regaccessbankr16
|
|
||||||
mov dword[memtablew16+0BFh*4],regaccessbankw16
|
|
||||||
mov dword[memtabler8+70h*4],sramaccessbankr8
|
|
||||||
mov dword[memtablew8+70h*4],sramaccessbankw8
|
|
||||||
mov dword[memtabler16+70h*4],sramaccessbankr16
|
|
||||||
mov dword[memtablew16+70h*4],sramaccessbankw16
|
|
||||||
mov dword[memtabler8+71h*4],sramaccessbankr8
|
|
||||||
mov dword[memtablew8+71h*4],sramaccessbankw8
|
|
||||||
mov dword[memtabler16+71h*4],sramaccessbankr16
|
|
||||||
mov dword[memtablew16+71h*4],sramaccessbankw16
|
|
||||||
mov dword[memtabler8+72h*4],sramaccessbankr8
|
|
||||||
mov dword[memtablew8+72h*4],sramaccessbankw8
|
|
||||||
mov dword[memtabler16+72h*4],sramaccessbankr16
|
|
||||||
mov dword[memtablew16+72h*4],sramaccessbankw16
|
|
||||||
mov dword[memtabler8+73h*4],sramaccessbankr8
|
|
||||||
mov dword[memtablew8+73h*4],sramaccessbankw8
|
|
||||||
mov dword[memtabler16+73h*4],sramaccessbankr16
|
|
||||||
mov dword[memtablew16+73h*4],sramaccessbankw16
|
|
||||||
mov dword[memtabler8+78h*4],memaccessbankr8
|
|
||||||
mov dword[memtablew8+78h*4],memaccessbankw8
|
|
||||||
mov dword[memtabler16+78h*4],memaccessbankr16
|
|
||||||
mov dword[memtablew16+78h*4],memaccessbankw16
|
|
||||||
mov dword[memtabler8+79h*4],memaccessbankr8
|
|
||||||
mov dword[memtablew8+79h*4],memaccessbankw8
|
|
||||||
mov dword[memtabler16+79h*4],memaccessbankr16
|
|
||||||
mov dword[memtablew16+79h*4],memaccessbankw16
|
|
||||||
|
|
||||||
;LoROM SRAM mapping, but not on the S-DD1
|
|
||||||
cmp byte[romtype],1
|
|
||||||
jne near .notlorom
|
|
||||||
cmp byte[SDD1Enable],1
|
|
||||||
je near .notlorom
|
|
||||||
mov dword[memtabler8+0F0h*4],sramaccessbankr8
|
|
||||||
mov dword[memtablew8+0F0h*4],sramaccessbankw8
|
|
||||||
mov dword[memtabler16+0F0h*4],sramaccessbankr16
|
|
||||||
mov dword[memtablew16+0F0h*4],sramaccessbankw16
|
|
||||||
mov dword[memtabler8+0F1h*4],sramaccessbankr8
|
|
||||||
mov dword[memtablew8+0F1h*4],sramaccessbankw8
|
|
||||||
mov dword[memtabler16+0F1h*4],sramaccessbankr16
|
|
||||||
mov dword[memtablew16+0F1h*4],sramaccessbankw16
|
|
||||||
mov dword[memtabler8+0F2h*4],sramaccessbankr8
|
|
||||||
mov dword[memtablew8+0F2h*4],sramaccessbankw8
|
|
||||||
mov dword[memtabler16+0F2h*4],sramaccessbankr16
|
|
||||||
mov dword[memtablew16+0F2h*4],sramaccessbankw16
|
|
||||||
mov dword[memtabler8+0F3h*4],sramaccessbankr8
|
|
||||||
mov dword[memtablew8+0F3h*4],sramaccessbankw8
|
|
||||||
mov dword[memtabler16+0F3h*4],sramaccessbankr16
|
|
||||||
mov dword[memtablew16+0F3h*4],sramaccessbankw16
|
|
||||||
.notlorom
|
|
||||||
|
|
||||||
cmp byte[DSP1Enable],1
|
|
||||||
je .initdsp
|
|
||||||
cmp byte[DSP2Enable],1
|
|
||||||
je .initdsp2
|
|
||||||
cmp byte[DSP3Enable],1
|
|
||||||
je .initdsp
|
|
||||||
cmp byte[DSP4Enable],1
|
|
||||||
jne .notDSP1Hi
|
|
||||||
pushad
|
|
||||||
call InitDSP4
|
|
||||||
popad
|
|
||||||
xor ecx,ecx
|
|
||||||
.dsp4loop
|
|
||||||
mov dword[memtabler8+30h*4+ecx],DSP4Read8b
|
|
||||||
mov dword[memtablew8+30h*4+ecx],DSP4Write8b
|
|
||||||
mov dword[memtabler16+30h*4+ecx],DSP4Read16b
|
|
||||||
mov dword[memtablew16+30h*4+ecx],DSP4Write16b
|
|
||||||
add ecx,4
|
|
||||||
cmp ecx,1*4
|
|
||||||
jne .dsp4loop
|
|
||||||
jmp .notDSP1Hi
|
|
||||||
.initdsp2
|
|
||||||
call InitDSP2
|
|
||||||
.initdsp
|
|
||||||
pushad
|
|
||||||
call InitDSP
|
|
||||||
popad
|
|
||||||
mov byte[DSP1Type],1
|
|
||||||
cmp byte[romtype],2
|
|
||||||
jne .notDSP1Hi
|
|
||||||
mov byte[DSP1Type],2
|
|
||||||
.notDSP1Hi
|
|
||||||
|
|
||||||
;Setup Super FX related stuff
|
|
||||||
cmp byte[SFXEnable],1
|
|
||||||
jne near .nosfx
|
|
||||||
cmp byte[Sup48mbit],1
|
|
||||||
je .sfxokay
|
|
||||||
mov byte[yesoutofmemory],1
|
|
||||||
jmp .nosfx
|
|
||||||
.sfxokay
|
|
||||||
mov dword[memtabler8+70h*4],sfxaccessbankr8
|
|
||||||
mov dword[memtablew8+70h*4],sfxaccessbankw8
|
|
||||||
mov dword[memtabler16+70h*4],sfxaccessbankr16
|
|
||||||
mov dword[memtablew16+70h*4],sfxaccessbankw16
|
|
||||||
mov dword[memtabler8+71h*4],sfxaccessbankr8b
|
|
||||||
mov dword[memtablew8+71h*4],sfxaccessbankw8b
|
|
||||||
mov dword[memtabler16+71h*4],sfxaccessbankr16b
|
|
||||||
mov dword[memtablew16+71h*4],sfxaccessbankw16b
|
|
||||||
mov dword[memtabler8+72h*4],sfxaccessbankr8c
|
|
||||||
mov dword[memtablew8+72h*4],sfxaccessbankw8c
|
|
||||||
mov dword[memtabler16+72h*4],sfxaccessbankr16c
|
|
||||||
mov dword[memtablew16+72h*4],sfxaccessbankw16c
|
|
||||||
mov dword[memtabler8+73h*4],sfxaccessbankr8d
|
|
||||||
mov dword[memtablew8+73h*4],sfxaccessbankw8d
|
|
||||||
mov dword[memtabler16+73h*4],sfxaccessbankr16d
|
|
||||||
mov dword[memtablew16+73h*4],sfxaccessbankw16d
|
|
||||||
mov dword[memtabler8+78h*4],sramaccessbankr8s
|
|
||||||
mov dword[memtablew8+78h*4],sramaccessbankw8s
|
|
||||||
mov dword[memtabler16+78h*4],sramaccessbankr16s
|
|
||||||
mov dword[memtablew16+78h*4],sramaccessbankw16s
|
|
||||||
mov dword[memtabler8+79h*4],sramaccessbankr8s
|
|
||||||
mov dword[memtablew8+79h*4],sramaccessbankw8s
|
|
||||||
mov dword[memtabler16+79h*4],sramaccessbankr16s
|
|
||||||
mov dword[memtablew16+79h*4],sramaccessbankw16s
|
|
||||||
mov dword[SfxR1],0
|
|
||||||
mov dword[SfxR2],0
|
|
||||||
mov esi,[sfxramdata]
|
|
||||||
mov ecx,65536
|
|
||||||
.loopsfxclear
|
|
||||||
mov dword[esi],0
|
|
||||||
add esi,4
|
|
||||||
dec ecx
|
|
||||||
jnz .loopsfxclear
|
|
||||||
cmp byte[SramExists],0
|
|
||||||
je .nosramsfx
|
|
||||||
mov esi,[sram]
|
|
||||||
mov edi,[sfxramdata]
|
|
||||||
mov ecx,16384
|
|
||||||
.sfxsramloop
|
|
||||||
mov eax,[esi]
|
|
||||||
mov [edi],eax
|
|
||||||
add esi,4
|
|
||||||
add edi,4
|
|
||||||
dec ecx
|
|
||||||
jnz .sfxsramloop
|
|
||||||
.nosramsfx
|
|
||||||
call InitFxTables
|
|
||||||
.nosfx
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;Setup Seta ST010 / ST011 stuff
|
|
||||||
cmp byte[SETAEnable],1
|
|
||||||
jne near .noseta
|
|
||||||
; Really banks 68h-6Fh:0000-7FFF are all mapped the same by the chip but F1ROCII only uses bank 68h
|
|
||||||
mov dword[memtabler8+68h*4],setaaccessbankr8
|
|
||||||
mov dword[memtablew8+68h*4],setaaccessbankw8
|
|
||||||
mov dword[memtabler16+68h*4],setaaccessbankr16
|
|
||||||
mov dword[memtablew16+68h*4],setaaccessbankw16
|
|
||||||
|
|
||||||
; Control register (and some status?) is in banks 60h-67h:0000-3FFF
|
|
||||||
mov dword[memtabler8+60h*4],setaaccessbankr8a
|
|
||||||
mov dword[memtablew8+60h*4],setaaccessbankw8a
|
|
||||||
mov dword[memtabler16+60h*4],setaaccessbankr16a
|
|
||||||
mov dword[memtablew16+60h*4],setaaccessbankw16a
|
|
||||||
|
|
||||||
mov dword[SetaCmdEnable],00000080h ; 60:0000
|
|
||||||
mov esi,[setaramdata]
|
|
||||||
mov ecx,1024 ; 4096 bytes
|
|
||||||
.loopsetaclear
|
|
||||||
mov dword[esi],0
|
|
||||||
add esi,4
|
|
||||||
dec ecx
|
|
||||||
jnz .loopsetaclear
|
|
||||||
cmp byte[SramExists],0
|
|
||||||
je .nosramseta
|
|
||||||
mov esi,[sram]
|
|
||||||
mov edi,[setaramdata]
|
|
||||||
mov ecx,1024
|
|
||||||
.setasramloop
|
|
||||||
mov eax,[esi]
|
|
||||||
mov [edi],eax
|
|
||||||
add esi,4
|
|
||||||
add edi,4
|
|
||||||
dec ecx
|
|
||||||
jnz .setasramloop
|
|
||||||
.nosramseta
|
|
||||||
.noseta
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;General Stuff all mixed together
|
|
||||||
mov dword[SfxSFR],0
|
|
||||||
mov byte[SfxSCMR],0
|
|
||||||
call initregr
|
|
||||||
call initregw
|
|
||||||
cmp byte[SA1Enable],0
|
|
||||||
je .nosa1init
|
|
||||||
call GenerateBank0TableSA1
|
|
||||||
call SetAddressingModesSA1
|
|
||||||
; open .srm file
|
|
||||||
cmp byte[CHIPBATT],1
|
|
||||||
jne .nosa1init
|
|
||||||
mov edx,fnames+1
|
|
||||||
call Open_File
|
|
||||||
jc .nosa1init
|
|
||||||
mov byte[SramExists],1
|
|
||||||
mov bx,ax
|
|
||||||
mov ecx,65536*2
|
|
||||||
mov edx,[romdata]
|
|
||||||
add edx,1024*4096
|
|
||||||
call Read_File
|
|
||||||
jc .nosa1init
|
|
||||||
call Close_File
|
|
||||||
.nosa1init
|
|
||||||
cmp byte[DSP1Type],1
|
|
||||||
jne near .nodsp1lorom
|
|
||||||
xor ecx,ecx
|
|
||||||
.dsp1loop
|
|
||||||
mov dword[memtabler8+30h*4+ecx],DSP1Read8b3F
|
|
||||||
mov dword[memtablew8+30h*4+ecx],DSP1Write8b3F
|
|
||||||
mov dword[memtabler16+30h*4+ecx],DSP1Read16b3F
|
|
||||||
mov dword[memtablew16+30h*4+ecx],DSP1Write16b3F
|
|
||||||
mov dword[memtabler8+0B0h*4+ecx],DSP1Read8b3F
|
|
||||||
mov dword[memtablew8+0B0h*4+ecx],DSP1Write8b3F
|
|
||||||
mov dword[memtabler16+0B0h*4+ecx],DSP1Read16b3F
|
|
||||||
mov dword[memtablew16+0B0h*4+ecx],DSP1Write16b3F
|
|
||||||
mov dword[memtabler8+0E0h*4+ecx],DSP1Read8b3F
|
|
||||||
mov dword[memtablew8+0E0h*4+ecx],DSP1Write8b3F
|
|
||||||
mov dword[memtabler16+0E0h*4+ecx],DSP1Read16b3F
|
|
||||||
mov dword[memtablew16+0E0h*4+ecx],DSP1Write16b3F
|
|
||||||
add ecx,4
|
|
||||||
cmp ecx,16*4
|
|
||||||
jne .dsp1loop
|
|
||||||
cmp byte[DSP2Enable],1
|
|
||||||
jne .nodsp1lorom
|
|
||||||
mov dword[memtabler8+3Fh*4],DSP2Read8b
|
|
||||||
mov dword[memtablew8+3Fh*4],DSP2Write8b
|
|
||||||
mov dword[memtabler16+3Fh*4],DSP2Read16b
|
|
||||||
mov dword[memtablew16+3Fh*4],DSP2Write16b
|
|
||||||
.nodsp1lorom
|
|
||||||
mov dword[wramdata],wramdataa
|
|
||||||
call SPC7110Load
|
|
||||||
ret
|
|
||||||
|
|
||||||
SECTION .bss
|
SECTION .bss
|
||||||
NEWSYM C4RamR, resd 1
|
NEWSYM C4RamR, resd 1
|
||||||
NEWSYM C4RamW, resd 1
|
NEWSYM C4RamW, resd 1
|
||||||
@@ -3135,9 +2743,3 @@ NEWSYM yesoutofmemory, resb 1
|
|||||||
SECTION .data
|
SECTION .data
|
||||||
NEWSYM outofmemoryerror, db 'OUT OF MEMORY.',0
|
NEWSYM outofmemoryerror, db 'OUT OF MEMORY.',0
|
||||||
NEWSYM outofmemoryerror2, db 'ROM IS TOO BIG.',0
|
NEWSYM outofmemoryerror2, db 'ROM IS TOO BIG.',0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1714,7 +1714,50 @@ void SPC7_Convert_Lower()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extern unsigned int crc32_table[256];
|
unsigned int crc32_table[256] = {
|
||||||
|
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F,
|
||||||
|
0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
|
||||||
|
0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2,
|
||||||
|
0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
|
||||||
|
0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,
|
||||||
|
0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
|
||||||
|
0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C,
|
||||||
|
0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
|
||||||
|
0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423,
|
||||||
|
0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
|
||||||
|
0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106,
|
||||||
|
0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
|
||||||
|
0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D,
|
||||||
|
0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
|
||||||
|
0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,
|
||||||
|
0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
|
||||||
|
0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7,
|
||||||
|
0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
|
||||||
|
0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA,
|
||||||
|
0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
|
||||||
|
0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81,
|
||||||
|
0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
|
||||||
|
0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84,
|
||||||
|
0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
|
||||||
|
0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,
|
||||||
|
0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
|
||||||
|
0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E,
|
||||||
|
0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
|
||||||
|
0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55,
|
||||||
|
0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
|
||||||
|
0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28,
|
||||||
|
0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
|
||||||
|
0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F,
|
||||||
|
0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
|
||||||
|
0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,
|
||||||
|
0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
|
||||||
|
0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69,
|
||||||
|
0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
|
||||||
|
0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC,
|
||||||
|
0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
|
||||||
|
0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693,
|
||||||
|
0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
|
||||||
|
0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D };
|
||||||
|
|
||||||
unsigned int CalcCRC32 (unsigned char *start, unsigned int size)
|
unsigned int CalcCRC32 (unsigned char *start, unsigned int size)
|
||||||
{
|
{
|
||||||
@@ -1833,7 +1876,7 @@ bool loadSRAM(char *sramname)
|
|||||||
|
|
||||||
void powercycle(bool sramload)
|
void powercycle(bool sramload)
|
||||||
{
|
{
|
||||||
memset(sram, 0xFF, 8192*4);
|
memset(sram, 0xFF, 32768);
|
||||||
clearSPCRAM();
|
clearSPCRAM();
|
||||||
|
|
||||||
nmiprevaddrl = 0;
|
nmiprevaddrl = 0;
|
||||||
@@ -1858,6 +1901,223 @@ void powercycle(bool sramload)
|
|||||||
|
|
||||||
asm_call(GUIDoReset);
|
asm_call(GUIDoReset);
|
||||||
}
|
}
|
||||||
#ifdef _MSC_VER // Don't know why MSVC needs an extra }, but it does.
|
|
||||||
|
extern unsigned int Voice0Freq, Voice1Freq, Voice2Freq, Voice3Freq;
|
||||||
|
extern unsigned int Voice4Freq, Voice5Freq, Voice6Freq, Voice7Freq;
|
||||||
|
extern unsigned int dspPAdj;
|
||||||
|
extern unsigned short Voice0Pitch, Voice1Pitch, Voice2Pitch, Voice3Pitch;
|
||||||
|
extern unsigned short Voice4Pitch, Voice5Pitch, Voice6Pitch, Voice7Pitch;
|
||||||
|
|
||||||
|
void initpitch()
|
||||||
|
{
|
||||||
|
Voice0Pitch = DSPMem[2+0*0x10];
|
||||||
|
Voice0Freq = ((((Voice0Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
||||||
|
Voice1Pitch = DSPMem[2+1*0x10];
|
||||||
|
Voice1Freq = ((((Voice1Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
||||||
|
Voice2Pitch = DSPMem[2+2*0x10];
|
||||||
|
Voice2Freq = ((((Voice2Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
||||||
|
Voice3Pitch = DSPMem[2+3*0x10];
|
||||||
|
Voice3Freq = ((((Voice3Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
||||||
|
Voice4Pitch = DSPMem[2+4*0x10];
|
||||||
|
Voice4Freq = ((((Voice4Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
||||||
|
Voice5Pitch = DSPMem[2+5*0x10];
|
||||||
|
Voice5Freq = ((((Voice5Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
||||||
|
Voice6Pitch = DSPMem[2+6*0x10];
|
||||||
|
Voice6Freq = ((((Voice6Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
||||||
|
Voice7Pitch = DSPMem[2+7*0x10];
|
||||||
|
Voice7Freq = ((((Voice7Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern unsigned int SfxR1, SfxR2, SetaCmdEnable, SfxSFR, SfxSCMR;
|
||||||
|
extern unsigned char lorommapmode2, disablespcclr, *sfxramdata, SramExists;
|
||||||
|
extern unsigned char *setaramdata, *wramdata, *SA1RAMArea;
|
||||||
|
void SetAddressingModes(), GenerateBank0Table();
|
||||||
|
void SetAddressingModesSA1(), GenerateBank0TableSA1();
|
||||||
|
void InitDSP(), InitDSP2(), InitDSP4(), InitFxTables(), initregr(), initregw();
|
||||||
|
void SPC7110Load();
|
||||||
|
void rep_stosd(void (**fptrarray)(), void (*fptr), unsigned int);
|
||||||
|
|
||||||
|
extern void (*memtabler8[256])(), (*memtablew8[256])();
|
||||||
|
extern void (*memtabler16[256])(), (*memtablew16[256])();
|
||||||
|
void sramaccessbankr8(), sramaccessbankw8(), DSP4Read8b(), DSP4Write8b();
|
||||||
|
void sramaccessbankr16(), sramaccessbankw16(), DSP4Read16b(), DSP4Write16b();
|
||||||
|
void sfxaccessbankr8(), sfxaccessbankw8(), sfxaccessbankr16(), sfxaccessbankw16();
|
||||||
|
void sfxaccessbankr8b(), sfxaccessbankw8b(), sfxaccessbankr16b(), sfxaccessbankw16b();
|
||||||
|
void sfxaccessbankr8c(), sfxaccessbankw8c(), sfxaccessbankr16c(), sfxaccessbankw16c();
|
||||||
|
void sfxaccessbankr8d(), sfxaccessbankw8d(), sfxaccessbankr16d(), sfxaccessbankw16d();
|
||||||
|
void sramaccessbankr8s(), sramaccessbankw8s(), sramaccessbankr16s(), sramaccessbankw16s();
|
||||||
|
void setaaccessbankr8(), setaaccessbankw8(), setaaccessbankr16(), setaaccessbankw16();
|
||||||
|
void setaaccessbankr8a(), setaaccessbankw8a(), setaaccessbankr16a(), setaaccessbankw16a();
|
||||||
|
void DSP1Read8b3F(), DSP1Write8b3F(), DSP1Read16b3F(), DSP1Write16b3F();
|
||||||
|
void DSP2Read8b(), DSP2Write8b(), DSP2Read16b(), DSP2Write16b();
|
||||||
|
|
||||||
|
void CheckROMTypeC()
|
||||||
|
{
|
||||||
|
unsigned char *ROM = (unsigned char *)romdata;
|
||||||
|
|
||||||
|
BankCheck();
|
||||||
|
MirrorROM();
|
||||||
|
|
||||||
|
lorommapmode2 = 0;
|
||||||
|
if (!strncmp(ROM+0x207FC0, "DERBY STALLION 96", 17)) { lorommapmode2 = 1; }
|
||||||
|
if (!strncmp(ROM+0x7FC0, "SOUND NOVEL-TCOOL", 17)) { lorommapmode2 = 1; }
|
||||||
|
|
||||||
|
// Setup memmapping
|
||||||
|
SetAddressingModes();
|
||||||
|
GenerateBank0Table();
|
||||||
|
chip_detect();
|
||||||
|
|
||||||
|
disablespcclr = (memcmp(ROM+0xFFC0, "\0x42\0x53\0x20\0x5A", 4)) ? 0 : 1;
|
||||||
|
|
||||||
|
if ((romtype == 1) && (!SDD1Enable))
|
||||||
|
{ // Non-SDD1 LoROM SRAM mapping, banks F0 - F3
|
||||||
|
rep_stosd(memtabler8+0xF0, sramaccessbankr8, 4);
|
||||||
|
rep_stosd(memtablew8+0xF0, sramaccessbankw8, 4);
|
||||||
|
rep_stosd(memtabler16+0xF0, sramaccessbankr16, 4);
|
||||||
|
rep_stosd(memtablew16+0xF0, sramaccessbankw16, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup DSP-X stuff
|
||||||
|
DSP1Type = 0;
|
||||||
|
|
||||||
|
if (DSP1Enable || DSP2Enable || DSP3Enable)
|
||||||
|
{
|
||||||
|
if (DSP2Enable) { asm_call(InitDSP2); }
|
||||||
|
InitDSP();
|
||||||
|
|
||||||
|
DSP1Type = (romtype == 2) ? 2 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DSP4Enable)
|
||||||
|
{ // DSP-4 mapping, banks 30 - 3F
|
||||||
|
InitDSP4();
|
||||||
|
|
||||||
|
rep_stosd(memtabler8+0x30, DSP4Read8b, 0x10);
|
||||||
|
rep_stosd(memtablew8+0x30, DSP4Write8b, 0x10);
|
||||||
|
rep_stosd(memtabler16+0x30, DSP4Read16b, 0x10);
|
||||||
|
rep_stosd(memtablew16+0x30, DSP4Write16b, 0x10);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SFXEnable)
|
||||||
|
{ // Setup SuperFX stuff
|
||||||
|
if (Sup48mbit)
|
||||||
|
{
|
||||||
|
// banks 70
|
||||||
|
memtabler8[0x70] = sfxaccessbankr8;
|
||||||
|
memtablew8[0x70] = sfxaccessbankw8;
|
||||||
|
memtabler16[0x70] = sfxaccessbankr16;
|
||||||
|
memtablew16[0x70] = sfxaccessbankw16;
|
||||||
|
// banks 71
|
||||||
|
memtabler8[0x71] = sfxaccessbankr8b;
|
||||||
|
memtablew8[0x71] = sfxaccessbankw8b;
|
||||||
|
memtabler16[0x71] = sfxaccessbankr16b;
|
||||||
|
memtablew16[0x71] = sfxaccessbankw16b;
|
||||||
|
// banks 72
|
||||||
|
memtabler8[0x72] = sfxaccessbankr8c;
|
||||||
|
memtablew8[0x72] = sfxaccessbankw8c;
|
||||||
|
memtabler16[0x72] = sfxaccessbankr16c;
|
||||||
|
memtablew16[0x72] = sfxaccessbankw16c;
|
||||||
|
// banks 73
|
||||||
|
memtabler8[0x73] = sfxaccessbankr8d;
|
||||||
|
memtablew8[0x73] = sfxaccessbankw8d;
|
||||||
|
memtabler16[0x73] = sfxaccessbankr16d;
|
||||||
|
memtablew16[0x73] = sfxaccessbankw16d;
|
||||||
|
// banks 78 - 79
|
||||||
|
rep_stosd(memtabler8+0x78, sramaccessbankr8s, 2);
|
||||||
|
rep_stosd(memtablew8+0x78, sramaccessbankw8s, 2);
|
||||||
|
rep_stosd(memtabler16+0x78, sramaccessbankr16s, 2);
|
||||||
|
rep_stosd(memtablew16+0x78, sramaccessbankw16s, 2);
|
||||||
|
|
||||||
|
SfxR1 = 0;
|
||||||
|
SfxR2 = 0;
|
||||||
|
memset(sfxramdata, 0, 262144); // clear 256kB SFX ram
|
||||||
|
|
||||||
|
if (SramExists)
|
||||||
|
{
|
||||||
|
memcpy(sfxramdata, sram, 65536); // proper SFX sram area
|
||||||
|
}
|
||||||
|
|
||||||
|
asm_call(InitFxTables);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
yesoutofmemory = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SETAEnable)
|
||||||
|
{ // Setup SETA 010/011 stuff
|
||||||
|
// Really banks 68h-6Fh:0000-7FFF are all mapped the same by the chip but
|
||||||
|
// F1 ROC II only uses bank 68h
|
||||||
|
memtabler8[0x68] = setaaccessbankr8;
|
||||||
|
memtablew8[0x68] = setaaccessbankw8;
|
||||||
|
memtabler16[0x68] = setaaccessbankr16;
|
||||||
|
memtablew16[0x68] = setaaccessbankw16;
|
||||||
|
// Control register (and some status?) is in banks 60h-67h:0000-3FFF
|
||||||
|
memtabler8[0x60] = setaaccessbankr8a;
|
||||||
|
memtablew8[0x60] = setaaccessbankw8a;
|
||||||
|
memtabler16[0x60] = setaaccessbankr16a;
|
||||||
|
memtablew16[0x60] = setaaccessbankw16a;
|
||||||
|
|
||||||
|
SetaCmdEnable = 0x00000080; // 60:0000
|
||||||
|
memset(setaramdata, 0, 4096); // clear 4kB SETA ram
|
||||||
|
|
||||||
|
// proper SETA sram area
|
||||||
|
if (SramExists) { memcpy(setaramdata, sram, 4096); }
|
||||||
|
}
|
||||||
|
|
||||||
|
// General stuff all mixed together [... wouldn't it be cool to clean that]
|
||||||
|
SfxSFR = 0;
|
||||||
|
SfxSCMR &= 0xFFFFFF00;
|
||||||
|
asm_call(initregr);
|
||||||
|
asm_call(initregw);
|
||||||
|
|
||||||
|
if (SA1Enable)
|
||||||
|
{
|
||||||
|
SA1RAMArea = ROM + 4096*1024;
|
||||||
|
|
||||||
|
GenerateBank0TableSA1();
|
||||||
|
SetAddressingModesSA1();
|
||||||
|
|
||||||
|
if (CHIPBATT) // proper SA-1 sram area
|
||||||
|
{
|
||||||
|
memset(SA1RAMArea, 0, 131072);
|
||||||
|
if (SramExists) { memcpy(SA1RAMArea, sram, 131072); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DSP1Type == 1)
|
||||||
|
{
|
||||||
|
rep_stosd(memtabler8+0x30, DSP1Read8b3F, 0x10);
|
||||||
|
rep_stosd(memtablew8+0x30, DSP1Write8b3F, 0x10);
|
||||||
|
rep_stosd(memtabler16+0x30, DSP1Read16b3F, 0x10);
|
||||||
|
rep_stosd(memtablew16+0x30, DSP1Write16b3F, 0x10);
|
||||||
|
|
||||||
|
rep_stosd(memtabler8+0xB0, DSP1Read8b3F, 0x10);
|
||||||
|
rep_stosd(memtablew8+0xB0, DSP1Write8b3F, 0x10);
|
||||||
|
rep_stosd(memtabler16+0xB0, DSP1Read16b3F, 0x10);
|
||||||
|
rep_stosd(memtablew16+0xB0, DSP1Write16b3F, 0x10);
|
||||||
|
|
||||||
|
rep_stosd(memtabler8+0xE0, DSP1Read8b3F, 0x10);
|
||||||
|
rep_stosd(memtablew8+0xE0, DSP1Write8b3F, 0x10);
|
||||||
|
rep_stosd(memtabler16+0xE0, DSP1Read16b3F, 0x10);
|
||||||
|
rep_stosd(memtablew16+0xE0, DSP1Write16b3F, 0x10);
|
||||||
|
|
||||||
|
if (DSP2Enable)
|
||||||
|
{
|
||||||
|
memtabler8[0x3F] = DSP2Read8b;
|
||||||
|
memtablew8[0x3F] = DSP2Write8b;
|
||||||
|
memtabler16[0x3F] = DSP2Read16b;
|
||||||
|
memtablew16[0x3F] = DSP2Write16b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wramdata = wramdataa;
|
||||||
|
|
||||||
|
asm_call(SPC7110Load);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetupROMc()
|
||||||
|
{
|
||||||
|
CheckROMTypeC();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
@@ -152,8 +152,8 @@ CHIPSOBJ=${CHIPDIR}/dsp1emu${OE} ${CHIPDIR}/fxemu2${OE} ${CHIPDIR}/sfxproc${OE}\
|
|||||||
|
|
||||||
CPUOBJ=${CPUDIR}/dma${OE} ${CPUDIR}/dsp${OE} ${CPUDIR}/dspproc${OE}\
|
CPUOBJ=${CPUDIR}/dma${OE} ${CPUDIR}/dsp${OE} ${CPUDIR}/dspproc${OE}\
|
||||||
${CPUDIR}/execute${OE} ${CPUDIR}/irq${OE} ${CPUDIR}/memory${OE}\
|
${CPUDIR}/execute${OE} ${CPUDIR}/irq${OE} ${CPUDIR}/memory${OE}\
|
||||||
${CPUDIR}/spc700${OE} ${CPUDIR}/stable${OE} ${CPUDIR}/table${OE}\
|
${CPUDIR}/memtable${OE} ${CPUDIR}/spc700${OE} ${CPUDIR}/stable${OE}\
|
||||||
${CPUDIR}/tableb${OE} ${CPUDIR}/tablec${OE}
|
${CPUDIR}/table${OE} ${CPUDIR}/tableb${OE} ${CPUDIR}/tablec${OE}
|
||||||
|
|
||||||
GUIOBJ=${GUIDIR}/gui${OE} ${GUIDIR}/menu${OE}
|
GUIOBJ=${GUIDIR}/gui${OE} ${GUIDIR}/menu${OE}
|
||||||
|
|
||||||
@@ -164,11 +164,11 @@ VIDEOBJ=${VIDEODIR}/makev16b${OE} ${VIDEODIR}/makev16t${OE} ${VIDEODIR}/makevid$
|
|||||||
${VIDEODIR}/newgfx16${OE} ${VIDEODIR}/newgfx2${OE} ${VIDEODIR}/newgfx${OE}\
|
${VIDEODIR}/newgfx16${OE} ${VIDEODIR}/newgfx2${OE} ${VIDEODIR}/newgfx${OE}\
|
||||||
${VIDEODIR}/m716text${OE} ${VIDEODIR}/procvid${OE} ${VIDEODIR}/procvidc${OE}
|
${VIDEODIR}/m716text${OE} ${VIDEODIR}/procvid${OE} ${VIDEODIR}/procvidc${OE}
|
||||||
|
|
||||||
#only used on Win32
|
|
||||||
WINVIDOBJ=${VIDEODIR}/sw_draw${OE} ${VIDEODIR}/hq2x16${OE} ${VIDEODIR}/hq2x32${OE}\
|
WINVIDOBJ=${VIDEODIR}/sw_draw${OE} ${VIDEODIR}/hq2x16${OE} ${VIDEODIR}/hq2x32${OE}\
|
||||||
${VIDEODIR}/2xsaiw${OE} ${VIDEODIR}/hq3x16${OE} ${VIDEODIR}/hq3x32${OE}\
|
${VIDEODIR}/2xsaiw${OE} ${VIDEODIR}/hq3x16${OE} ${VIDEODIR}/hq3x32${OE}\
|
||||||
${VIDEODIR}/hq4x16${OE} ${VIDEODIR}/hq4x32${OE}
|
${VIDEODIR}/hq4x16${OE} ${VIDEODIR}/hq4x32${OE}
|
||||||
|
|
||||||
|
#only used on Win32
|
||||||
WINOBJ=${WINDIR}/copyvwin${OE} ${DRESOBJ}\
|
WINOBJ=${WINDIR}/copyvwin${OE} ${DRESOBJ}\
|
||||||
${WINDIR}/winintrf${OE} ${WINDIR}/winlink${OE} ${WINDIR}/zloaderw${OE}\
|
${WINDIR}/winintrf${OE} ${WINDIR}/winlink${OE} ${WINDIR}/zloaderw${OE}\
|
||||||
${WINDIR}/zipxw${OE} ${WINDIR}/zfilew${OE}
|
${WINDIR}/zipxw${OE} ${WINDIR}/zfilew${OE}
|
||||||
@@ -267,6 +267,7 @@ ${CPUDIR}/tablec${OE}: $< ${CPUDIR}/65816dc.inc ${CPUDIR}/address.inc ${CPUDIR}/
|
|||||||
${CPUDIR}/stable${OE}: $< ${CPUDIR}/s65816d.inc ${CPUDIR}/saddress.inc ${CPUDIR}/saddrni.inc\
|
${CPUDIR}/stable${OE}: $< ${CPUDIR}/s65816d.inc ${CPUDIR}/saddress.inc ${CPUDIR}/saddrni.inc\
|
||||||
${CPUDIR}/se65816.inc macros.mac
|
${CPUDIR}/se65816.inc macros.mac
|
||||||
${CPUDIR}/memory${OE}: $< macros.mac
|
${CPUDIR}/memory${OE}: $< macros.mac
|
||||||
|
${CPUDIR}/memtable${OE}: $<
|
||||||
${CPUDIR}/dma${OE}: $< macros.mac
|
${CPUDIR}/dma${OE}: $< macros.mac
|
||||||
${CPUDIR}/irq${OE}: $< macros.mac
|
${CPUDIR}/irq${OE}: $< macros.mac
|
||||||
${CPUDIR}/dspproc${OE}: $< macros.mac
|
${CPUDIR}/dspproc${OE}: $< macros.mac
|
||||||
@@ -318,7 +319,7 @@ ${GUIDIR}/gui${OE}: $< ${GUIDIR}/guitools.inc\
|
|||||||
${GUIDIR}/guimisc.inc ${GUIDIR}/guimouse.inc ${GUIDIR}/guiwindp.inc\
|
${GUIDIR}/guimisc.inc ${GUIDIR}/guimouse.inc ${GUIDIR}/guiwindp.inc\
|
||||||
${GUIDIR}/guinetpl.inc ${GUIDIR}/guikeys.inc ${GUIDIR}/guicheat.inc\
|
${GUIDIR}/guinetpl.inc ${GUIDIR}/guikeys.inc ${GUIDIR}/guicheat.inc\
|
||||||
${GUIDIR}/guicombo.inc ${GUIDIR}/guiload.inc macros.mac
|
${GUIDIR}/guicombo.inc ${GUIDIR}/guiload.inc macros.mac
|
||||||
${GUIDIR}/menu${OE}bj: ${GUIDIR}/menu.asm macros.mac
|
${GUIDIR}/menu${OE}: $< macros.mac
|
||||||
|
|
||||||
${EFFECTSDIR}/water${OE}: $< ${EFFECTSDIR}/fixsin.h
|
${EFFECTSDIR}/water${OE}: $< ${EFFECTSDIR}/fixsin.h
|
||||||
${EFFECTSDIR}/smoke${OE}: $<
|
${EFFECTSDIR}/smoke${OE}: $<
|
||||||
|
|||||||
@@ -890,9 +890,11 @@ static bool zmv_replay()
|
|||||||
REPLAY_PAD(zmv_vars.last_joy_state.D, JoyDOrig, 4);
|
REPLAY_PAD(zmv_vars.last_joy_state.D, JoyDOrig, 4);
|
||||||
REPLAY_PAD(zmv_vars.last_joy_state.E, JoyEOrig, 3);
|
REPLAY_PAD(zmv_vars.last_joy_state.E, JoyEOrig, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
zmv_open_vars.frames_replayed++;
|
zmv_open_vars.frames_replayed++;
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -937,9 +939,11 @@ static bool zmv_next_chapter()
|
|||||||
|
|
||||||
fseek(zmv_vars.fp, next_external, SEEK_SET);
|
fseek(zmv_vars.fp, next_external, SEEK_SET);
|
||||||
}
|
}
|
||||||
|
|
||||||
zmv_vars.rle_count = 0;
|
zmv_vars.rle_count = 0;
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1623,7 +1627,6 @@ static void OldMoviePlay(FILE *fp)
|
|||||||
MessageOn = MsgCount;
|
MessageOn = MsgCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MovieInsertChapter()
|
void MovieInsertChapter()
|
||||||
{
|
{
|
||||||
switch (MovieProcessing)
|
switch (MovieProcessing)
|
||||||
|
|||||||
@@ -42,6 +42,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|||||||
#define stim()
|
#define stim()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void SA1UpdateDPageC(), unpackfunct(), repackfunct();
|
||||||
|
void PrepareOffset(), ResetOffset(), initpitch(), UpdateBanksSDD1();
|
||||||
|
void procexecloop(), outofmemory();
|
||||||
|
|
||||||
static void copy_snes_data(unsigned char **buffer, void (*copy_func)(unsigned char **, void *, size_t))
|
static void copy_snes_data(unsigned char **buffer, void (*copy_func)(unsigned char **, void *, size_t))
|
||||||
{
|
{
|
||||||
//65816 status, etc.
|
//65816 status, etc.
|
||||||
@@ -172,8 +176,12 @@ static void copy_state_data(unsigned char *buffer, void (*copy_func)(unsigned ch
|
|||||||
copy_func(&buffer, &tempebp, 4);
|
copy_func(&buffer, &tempebp, 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
spcnumread = 0;
|
||||||
|
spchalted = 0xFFFFFFFF;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void memcpyinc(unsigned char **dest, void *src, size_t len)
|
static void memcpyinc(unsigned char **dest, void *src, size_t len)
|
||||||
{
|
{
|
||||||
@@ -277,8 +285,8 @@ extern unsigned char RewindFrames, romispal;
|
|||||||
extern unsigned char MovieProcessing;
|
extern unsigned char MovieProcessing;
|
||||||
void zmv_rewind_save(size_t, bool);
|
void zmv_rewind_save(size_t, bool);
|
||||||
void zmv_rewind_load(size_t, bool);
|
void zmv_rewind_load(size_t, bool);
|
||||||
#define ActualRewindFrames (RewindFrames * (romispal ? 25 : 30))
|
|
||||||
|
|
||||||
|
#define ActualRewindFrames (RewindFrames * (romispal ? 25 : 30))
|
||||||
|
|
||||||
void BackupCVFrame()
|
void BackupCVFrame()
|
||||||
{
|
{
|
||||||
@@ -300,8 +308,6 @@ void RestoreCVFrame()
|
|||||||
RewindTimer = ActualRewindFrames;
|
RewindTimer = ActualRewindFrames;
|
||||||
}
|
}
|
||||||
|
|
||||||
void outofmemory();
|
|
||||||
|
|
||||||
void SetupRewindBuffer()
|
void SetupRewindBuffer()
|
||||||
{
|
{
|
||||||
if (StateBackup){ free(StateBackup); }
|
if (StateBackup){ free(StateBackup); }
|
||||||
@@ -315,6 +321,7 @@ void SetupRewindBuffer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static size_t state_size;
|
static size_t state_size;
|
||||||
|
|
||||||
static void state_size_tally(unsigned char **dest, void *src, size_t len)
|
static void state_size_tally(unsigned char **dest, void *src, size_t len)
|
||||||
{
|
{
|
||||||
state_size += len;
|
state_size += len;
|
||||||
@@ -338,6 +345,7 @@ void InitRewindVars()
|
|||||||
|
|
||||||
//This is used to preserve system load state between loads
|
//This is used to preserve system load state between loads
|
||||||
static unsigned char BackupSystemBuffer[0x800000]; //Half a megabyte, should be enough for a while
|
static unsigned char BackupSystemBuffer[0x800000]; //Half a megabyte, should be enough for a while
|
||||||
|
|
||||||
void BackupSystemVars()
|
void BackupSystemVars()
|
||||||
{
|
{
|
||||||
unsigned char *buffer = BackupSystemBuffer;
|
unsigned char *buffer = BackupSystemBuffer;
|
||||||
@@ -355,55 +363,15 @@ void RestoreSystemVars()
|
|||||||
copy_extra_data(&buffer, memcpyrinc);
|
copy_extra_data(&buffer, memcpyrinc);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern unsigned int Bank0datr8[256], Bank0datr16[256], Bank0datw8[256];
|
|
||||||
extern unsigned int Bank0datw16[256], xd, DPageR8, DPageR16, DPageW8;
|
|
||||||
extern unsigned int DPageW16;
|
|
||||||
|
|
||||||
void UpdateDPageC()
|
|
||||||
{
|
|
||||||
DPageR8 = Bank0datr8[(xd >> 8) & 0xFF];
|
|
||||||
DPageR16 = Bank0datr16[(xd >> 8) & 0xFF];
|
|
||||||
DPageW8 = Bank0datw8[(xd >> 8) & 0xFF];
|
|
||||||
DPageW16 = Bank0datw16[(xd >> 8) & 0xFF];
|
|
||||||
}
|
|
||||||
|
|
||||||
extern unsigned int SA1xd, SA1DPageR8, SA1DPageR16, SA1DPageW8, SA1DPageW16;
|
|
||||||
|
|
||||||
void SA1UpdateDPageC()
|
|
||||||
{
|
|
||||||
SA1DPageR8 = Bank0datr8[(SA1xd >> 8) & 0xFF];
|
|
||||||
SA1DPageR16 = Bank0datr16[(SA1xd >> 8) & 0xFF];
|
|
||||||
SA1DPageW8 = Bank0datw8[(SA1xd >> 8) & 0xFF];
|
|
||||||
SA1DPageW16 = Bank0datw16[(SA1xd >> 8) & 0xFF];
|
|
||||||
}
|
|
||||||
|
|
||||||
extern unsigned int xdb, xpb, xs, xx, xy;
|
|
||||||
extern unsigned short oamaddrt, xat, xst, xdt, xxt, xyt;
|
|
||||||
extern unsigned char xdbt, xpbt;
|
|
||||||
|
|
||||||
void unpackfunct()
|
|
||||||
{
|
|
||||||
oamaddrt = (oamaddr & 0xFFFF);
|
|
||||||
xat = (xa & 0xFFFF);
|
|
||||||
xdbt = (xdb & 0xFF);
|
|
||||||
xpbt = (xpb & 0xFF);
|
|
||||||
xst = (xs & 0xFFFF);
|
|
||||||
xdt = (xd & 0xFFFF);
|
|
||||||
xxt = (xx & 0xFFFF);
|
|
||||||
xyt = (xy & 0xFFFF);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern unsigned int spcBuffera;
|
extern unsigned int spcBuffera;
|
||||||
extern unsigned int Voice0BufPtr, Voice1BufPtr, Voice2BufPtr, Voice3BufPtr;
|
extern unsigned int Voice0BufPtr, Voice1BufPtr, Voice2BufPtr, Voice3BufPtr;
|
||||||
extern unsigned int Voice4BufPtr, Voice5BufPtr, Voice6BufPtr, Voice7BufPtr;
|
extern unsigned int Voice4BufPtr, Voice5BufPtr, Voice6BufPtr, Voice7BufPtr;
|
||||||
extern unsigned int Curtableaddr, tableA[256], spcPCRam, spcRamDP;
|
extern unsigned int spcPCRam, spcRamDP;
|
||||||
|
|
||||||
void PrepareSaveState()
|
void PrepareSaveState()
|
||||||
{
|
{
|
||||||
unsigned int offst = (unsigned int)spcRam;
|
spcPCRam -= (unsigned int)spcRam;
|
||||||
|
spcRamDP -= (unsigned int)spcRam;
|
||||||
spcPCRam -= offst;
|
|
||||||
spcRamDP -= offst;
|
|
||||||
|
|
||||||
Voice0BufPtr -= spcBuffera;
|
Voice0BufPtr -= spcBuffera;
|
||||||
Voice1BufPtr -= spcBuffera;
|
Voice1BufPtr -= spcBuffera;
|
||||||
@@ -415,151 +383,14 @@ void PrepareSaveState()
|
|||||||
Voice7BufPtr -= spcBuffera;
|
Voice7BufPtr -= spcBuffera;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define byteset(byte, checkbit) (byte & (1 << checkbit)) ? 1 : 0
|
|
||||||
|
|
||||||
extern unsigned int GlobalVL, GlobalVR, EchoVL, EchoVR, EchoRate[16], MaxEcho;
|
|
||||||
extern unsigned int EchoFB, NoiseSpeeds[32], dspPAdj, NoiseInc, bg1ptrx;
|
|
||||||
extern unsigned int bg1ptry, bg2ptrx, bg2ptry, bg3ptrx, bg3ptry, bg4ptrx;
|
|
||||||
extern unsigned int bg4ptry;
|
|
||||||
extern signed int FIRTAPVal0, FIRTAPVal1, FIRTAPVal2, FIRTAPVal3, FIRTAPVal4;
|
|
||||||
extern signed int FIRTAPVal5, FIRTAPVal6, FIRTAPVal7;
|
|
||||||
extern unsigned short VolumeConvTable[32768], bg1ptr, bg1ptrb, bg1ptrc;
|
|
||||||
extern unsigned short bg2ptr, bg2ptrb, bg2ptrc, bg3ptr, bg3ptrb, bg3ptrc;
|
|
||||||
extern unsigned short bg4ptr, bg4ptrb, bg4ptrc;
|
|
||||||
extern unsigned char VolumeTableb[256], MusicVol, Voice0Status;
|
|
||||||
extern unsigned char Voice1Status, Voice2Status, Voice3Status, Voice4Status;
|
|
||||||
extern unsigned char Voice5Status, Voice6Status, Voice7Status, Voice0Noise;
|
|
||||||
extern unsigned char Voice1Noise, Voice2Noise, Voice3Noise, Voice4Noise;
|
|
||||||
extern unsigned char Voice5Noise, Voice6Noise, Voice7Noise, bgtilesz;
|
|
||||||
extern unsigned char BG116x16t, BG216x16t, BG316x16t, BG416x16t, vramincby8on;
|
|
||||||
extern unsigned char vramincr;
|
|
||||||
|
|
||||||
extern void (**regptw)();
|
|
||||||
void reg2118();
|
|
||||||
void reg2118inc();
|
|
||||||
void reg2118inc8();
|
|
||||||
void reg2118inc8inc();
|
|
||||||
void reg2119();
|
|
||||||
void reg2119inc();
|
|
||||||
void reg2119inc8();
|
|
||||||
void reg2119inc8inc();
|
|
||||||
|
|
||||||
void repackfunct()
|
|
||||||
{
|
|
||||||
signed char val;
|
|
||||||
unsigned char block;
|
|
||||||
|
|
||||||
// Global/Echo Volumes
|
|
||||||
GlobalVL = (VolumeConvTable[(MusicVol << 8) + VolumeTableb[DSPMem[0x0C]]] & 0xFF);
|
|
||||||
GlobalVR = (VolumeConvTable[(MusicVol << 8) + VolumeTableb[DSPMem[0x1C]]] & 0xFF);
|
|
||||||
EchoVL = (VolumeConvTable[(MusicVol << 8) + VolumeTableb[DSPMem[0x2C]]] & 0xFF);
|
|
||||||
EchoVR = (VolumeConvTable[(MusicVol << 8) + VolumeTableb[DSPMem[0x3C]]] & 0xFF);
|
|
||||||
|
|
||||||
// Echo Values
|
|
||||||
MaxEcho = EchoRate[(DSPMem[0x7D] & 0xF)];
|
|
||||||
EchoFB = VolumeTableb[DSPMem[0x0D]];
|
|
||||||
|
|
||||||
// FIR Filter Values
|
|
||||||
val = DSPMem[0x0F];
|
|
||||||
FIRTAPVal0 = (signed int)val;
|
|
||||||
val = DSPMem[0x1F];
|
|
||||||
FIRTAPVal1 = (signed int)val;
|
|
||||||
val = DSPMem[0x2F];
|
|
||||||
FIRTAPVal2 = (signed int)val;
|
|
||||||
val = DSPMem[0x3F];
|
|
||||||
FIRTAPVal3 = (signed int)val;
|
|
||||||
val = DSPMem[0x4F];
|
|
||||||
FIRTAPVal4 = (signed int)val;
|
|
||||||
val = DSPMem[0x5F];
|
|
||||||
FIRTAPVal5 = (signed int)val;
|
|
||||||
val = DSPMem[0x6F];
|
|
||||||
FIRTAPVal6 = (signed int)val;
|
|
||||||
val = DSPMem[0x7F];
|
|
||||||
FIRTAPVal7 = (signed int)val;
|
|
||||||
|
|
||||||
// Noise
|
|
||||||
block = DSPMem[0x6C];
|
|
||||||
DSPMem[0x6C] &= 0x7F;
|
|
||||||
|
|
||||||
if (block && 0xC0)
|
|
||||||
{
|
|
||||||
Voice0Status = Voice1Status = Voice2Status = Voice3Status = 0;
|
|
||||||
Voice4Status = Voice5Status = Voice6Status = Voice7Status = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
NoiseInc = (((NoiseSpeeds[(block & 0x1F)] * dspPAdj) >> 17) & 0xFFFFFFFF);
|
|
||||||
|
|
||||||
Voice0Noise = byteset (DSPMem[0x3D], 0);
|
|
||||||
Voice1Noise = byteset (DSPMem[0x3D], 1);
|
|
||||||
Voice2Noise = byteset (DSPMem[0x3D], 2);
|
|
||||||
Voice3Noise = byteset (DSPMem[0x3D], 3);
|
|
||||||
Voice4Noise = byteset (DSPMem[0x3D], 4);
|
|
||||||
Voice5Noise = byteset (DSPMem[0x3D], 5);
|
|
||||||
Voice6Noise = byteset (DSPMem[0x3D], 6);
|
|
||||||
Voice7Noise = byteset (DSPMem[0x3D], 7);
|
|
||||||
|
|
||||||
bg1ptrx = bg1ptrb - bg1ptr;
|
|
||||||
bg1ptry = bg1ptrc - bg1ptr;
|
|
||||||
bg2ptrx = bg2ptrb - bg2ptr;
|
|
||||||
bg2ptry = bg2ptrc - bg2ptr;
|
|
||||||
bg3ptrx = bg3ptrb - bg3ptr;
|
|
||||||
bg3ptry = bg3ptrc - bg3ptr;
|
|
||||||
bg4ptrx = bg4ptrb - bg4ptr;
|
|
||||||
bg4ptry = bg4ptrc - bg4ptr;
|
|
||||||
|
|
||||||
// 16x16 tiles
|
|
||||||
BG116x16t = byteset (bgtilesz, 0);
|
|
||||||
BG216x16t = byteset (bgtilesz, 1);
|
|
||||||
BG316x16t = byteset (bgtilesz, 2);
|
|
||||||
BG416x16t = byteset (bgtilesz, 3);
|
|
||||||
|
|
||||||
oamaddr = oamaddrt;
|
|
||||||
xa = xat;
|
|
||||||
xdb = xdbt;
|
|
||||||
xpb = xpbt;
|
|
||||||
xs = xst;
|
|
||||||
xd = xdt;
|
|
||||||
xx = xxt;
|
|
||||||
xy = xyt;
|
|
||||||
|
|
||||||
if (vramincby8on == 1)
|
|
||||||
{
|
|
||||||
if (vramincr == 1)
|
|
||||||
{
|
|
||||||
regptw[0x2118] = reg2118inc8inc;
|
|
||||||
regptw[0x2119] = reg2119inc8;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
regptw[0x2118] = reg2118inc8;
|
|
||||||
regptw[0x2119] = reg2119inc8inc;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (vramincr == 1)
|
|
||||||
{
|
|
||||||
regptw[0x2118] = reg2118inc;
|
|
||||||
regptw[0x2119] = reg2119;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
regptw[0x2118] = reg2118;
|
|
||||||
regptw[0x2119] = reg2119inc;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extern unsigned int SA1Stat;
|
extern unsigned int SA1Stat;
|
||||||
extern unsigned char IRAM[2049], *SA1Ptr, *SA1RegPCS, *CurBWPtr, *SA1BWPtr;
|
extern unsigned char IRAM[2049], *SA1Ptr, *SA1RegPCS, *CurBWPtr, *SA1BWPtr;
|
||||||
extern unsigned char *SNSBWPtr;
|
extern unsigned char *SNSBWPtr;
|
||||||
|
|
||||||
void SaveSA1()
|
void SaveSA1()
|
||||||
{
|
{
|
||||||
unsigned int offst=(unsigned int)SA1RegPCS;
|
|
||||||
|
|
||||||
SA1Stat &= 0xFFFFFF00;
|
SA1Stat &= 0xFFFFFF00;
|
||||||
SA1Ptr -= offst;
|
SA1Ptr -= (unsigned int)SA1RegPCS;
|
||||||
|
|
||||||
if (SA1RegPCS == IRAM)
|
if (SA1RegPCS == IRAM)
|
||||||
{
|
{
|
||||||
@@ -571,21 +402,18 @@ void SaveSA1()
|
|||||||
SA1Stat = (SA1Stat & 0xFFFFFF00) + 2;
|
SA1Stat = (SA1Stat & 0xFFFFFF00) + 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
offst = (unsigned int)romdata;
|
SA1RegPCS -= (unsigned int)romdata;
|
||||||
SA1RegPCS -= offst;
|
CurBWPtr -= (unsigned int)romdata;
|
||||||
CurBWPtr -= offst;
|
SA1BWPtr -= (unsigned int)romdata;
|
||||||
SA1BWPtr -= offst;
|
SNSBWPtr -= (unsigned int)romdata;
|
||||||
SNSBWPtr -= offst;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RestoreSA1()
|
void RestoreSA1()
|
||||||
{
|
{
|
||||||
unsigned int offst=(unsigned int)romdata;
|
SA1RegPCS += (unsigned int)romdata;
|
||||||
|
CurBWPtr += (unsigned int)romdata;
|
||||||
SA1RegPCS += offst;
|
SA1BWPtr += (unsigned int)romdata;
|
||||||
CurBWPtr += offst;
|
SNSBWPtr += (unsigned int)romdata;
|
||||||
SA1BWPtr += offst;
|
|
||||||
SNSBWPtr += offst;
|
|
||||||
|
|
||||||
if ((SA1Stat & 0xFF) == 1)
|
if ((SA1Stat & 0xFF) == 1)
|
||||||
{
|
{
|
||||||
@@ -597,8 +425,7 @@ void RestoreSA1()
|
|||||||
SA1RegPCS = IRAM-0x3000;
|
SA1RegPCS = IRAM-0x3000;
|
||||||
}
|
}
|
||||||
|
|
||||||
offst = (unsigned int)SA1RegPCS;
|
SA1Ptr += (unsigned int)SA1RegPCS;
|
||||||
SA1Ptr += offst;
|
|
||||||
SA1RAMArea = romdata + 4096*1024;
|
SA1RAMArea = romdata + 4096*1024;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -611,10 +438,8 @@ void RestoreSA1()
|
|||||||
|
|
||||||
void ResetState()
|
void ResetState()
|
||||||
{
|
{
|
||||||
unsigned int offst = (unsigned int)spcRam;
|
spcPCRam += (unsigned int)spcRam;
|
||||||
|
spcRamDP += (unsigned int)spcRam;
|
||||||
spcPCRam += offst;
|
|
||||||
spcRamDP += offst;
|
|
||||||
|
|
||||||
ResState(Voice0BufPtr);
|
ResState(Voice0BufPtr);
|
||||||
ResState(Voice1BufPtr);
|
ResState(Voice1BufPtr);
|
||||||
@@ -659,16 +484,6 @@ void calculate_state_sizes()
|
|||||||
old_zst_size = state_size + sizeof(zst_header_old)-1;
|
old_zst_size = state_size + sizeof(zst_header_old)-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrepareOffset()
|
|
||||||
{
|
|
||||||
Curtableaddr -= (unsigned int)tableA;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ResetOffset()
|
|
||||||
{
|
|
||||||
Curtableaddr += (unsigned int)tableA;
|
|
||||||
}
|
|
||||||
|
|
||||||
void zst_save(FILE *fp, bool Thumbnail)
|
void zst_save(FILE *fp, bool Thumbnail)
|
||||||
{
|
{
|
||||||
fwrite(zst_header_cur, 1, sizeof(zst_header_cur)-1, fp); //-1 for null
|
fwrite(zst_header_cur, 1, sizeof(zst_header_cur)-1, fp); //-1 for null
|
||||||
@@ -784,119 +599,12 @@ void statesaver()
|
|||||||
stim();
|
stim();
|
||||||
}
|
}
|
||||||
|
|
||||||
extern unsigned int snesmmap[256], snesmap2[256];
|
|
||||||
/*extern unsigned int NumofBanks;
|
|
||||||
extern unsigned char SA1BankVal[4];
|
|
||||||
|
|
||||||
void BankSwitchC (unsigned char bank, unsigned int offset1, unsigned int offset2, unsigned int pointer)
|
|
||||||
{
|
|
||||||
unsigned int curbankval=SA1BankVal[bank], membankval, i;
|
|
||||||
|
|
||||||
if ((NumofBanks & 0xFF) == 64) { curbankval &= 1 ; }
|
|
||||||
|
|
||||||
curbankval &= 7;
|
|
||||||
curbankval <<= 20;
|
|
||||||
|
|
||||||
if (SA1BankVal[bank] & 0x80)
|
|
||||||
{
|
|
||||||
membankval = (pointer + (unsigned int)romdata - 0x8000);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
membankval = (curbankval + (unsigned int)romdata - 0x8000);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=0 ; i<32 ; i++)
|
|
||||||
{
|
|
||||||
snesmmap[offset1+i] = membankval;
|
|
||||||
membankval += 0x8000;
|
|
||||||
}
|
|
||||||
|
|
||||||
membankval = curbankval + (unsigned int)romdata;
|
|
||||||
|
|
||||||
for (i=0 ; i<16 ; i++)
|
|
||||||
{
|
|
||||||
snesmap2[offset2+i] = membankval;
|
|
||||||
snesmmap[offset2+i] = membankval;
|
|
||||||
membankval += 0x10000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extern unsigned int SA1BankSw;
|
|
||||||
|
|
||||||
void UpdateBanks()
|
|
||||||
{
|
|
||||||
if ((SA1BankSw & 0xFF) == 1)
|
|
||||||
{
|
|
||||||
BankSwitchC (0, 0x000, 0x0C0, 0x000000) ;
|
|
||||||
BankSwitchC (1, 0x020, 0x0D0, 0x100000) ;
|
|
||||||
BankSwitchC (2, 0x080, 0x0E0, 0x200000) ;
|
|
||||||
BankSwitchC (3, 0x0A0, 0x0F0, 0x300000) ;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
void BankSwitchSDD1C (unsigned char bankval, unsigned int offset)
|
|
||||||
{
|
|
||||||
unsigned int curbankval = bankval, i;
|
|
||||||
|
|
||||||
curbankval &= 7;
|
|
||||||
curbankval <<= 20;
|
|
||||||
curbankval += (unsigned int)romdata;
|
|
||||||
|
|
||||||
for (i=0; i<16 ; i++)
|
|
||||||
{
|
|
||||||
snesmap2[offset+i] = curbankval;
|
|
||||||
snesmmap[offset+i] = curbankval;
|
|
||||||
curbankval += 0x10000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extern unsigned char SDD1BankA, SDD1BankB, SDD1BankC, SDD1BankD;
|
|
||||||
|
|
||||||
void UpdateBanksSDD1()
|
|
||||||
{
|
|
||||||
if (SDD1BankA)
|
|
||||||
{
|
|
||||||
BankSwitchSDD1C(SDD1BankA, 0x0C0);
|
|
||||||
BankSwitchSDD1C(SDD1BankB, 0x0D0);
|
|
||||||
BankSwitchSDD1C(SDD1BankC, 0x0E0);
|
|
||||||
BankSwitchSDD1C(SDD1BankD, 0x0F0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extern unsigned int Voice0Freq, Voice1Freq, Voice2Freq, Voice3Freq;
|
|
||||||
extern unsigned int Voice4Freq, Voice5Freq, Voice6Freq, Voice7Freq;
|
|
||||||
extern unsigned short Voice0Pitch, Voice1Pitch, Voice2Pitch, Voice3Pitch;
|
|
||||||
extern unsigned short Voice4Pitch, Voice5Pitch, Voice6Pitch, Voice7Pitch;
|
|
||||||
|
|
||||||
void initpitch()
|
|
||||||
{
|
|
||||||
Voice0Pitch = DSPMem[2+0*0x10];
|
|
||||||
Voice0Freq = ((((Voice0Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
|
||||||
Voice1Pitch = DSPMem[2+1*0x10];
|
|
||||||
Voice1Freq = ((((Voice1Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
|
||||||
Voice2Pitch = DSPMem[2+2*0x10];
|
|
||||||
Voice2Freq = ((((Voice2Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
|
||||||
Voice3Pitch = DSPMem[2+3*0x10];
|
|
||||||
Voice3Freq = ((((Voice3Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
|
||||||
Voice4Pitch = DSPMem[2+4*0x10];
|
|
||||||
Voice4Freq = ((((Voice4Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
|
||||||
Voice5Pitch = DSPMem[2+5*0x10];
|
|
||||||
Voice5Freq = ((((Voice5Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
|
||||||
Voice6Pitch = DSPMem[2+6*0x10];
|
|
||||||
Voice6Freq = ((((Voice6Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
|
||||||
Voice7Pitch = DSPMem[2+7*0x10];
|
|
||||||
Voice7Freq = ((((Voice7Pitch & 0x3FFF) * dspPAdj) >> 8) & 0xFFFFFFFF);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern unsigned int KeyLoadState, Totalbyteloaded, SfxMemTable[256], SfxCPB;
|
extern unsigned int KeyLoadState, Totalbyteloaded, SfxMemTable[256], SfxCPB;
|
||||||
extern unsigned int SfxPBR, SfxROMBR, SfxRAMBR;
|
extern unsigned int SfxPBR, SfxROMBR, SfxRAMBR;
|
||||||
extern unsigned char pressed[256+128+64], multchange, txtloadmsg[15];
|
extern unsigned char pressed[256+128+64], multchange, txtloadmsg[15];
|
||||||
extern unsigned char txtconvmsg[16], txtnfndmsg[23], ioportval, SDD1Enable;
|
extern unsigned char txtconvmsg[16], txtnfndmsg[23], ioportval, SDD1Enable;
|
||||||
extern unsigned char nexthdma;
|
extern unsigned char nexthdma;
|
||||||
|
|
||||||
void procexecloop();
|
|
||||||
|
|
||||||
static void read_save_state_data(unsigned char **dest, void *data, size_t len)
|
static void read_save_state_data(unsigned char **dest, void *data, size_t len)
|
||||||
{
|
{
|
||||||
load_save_size += fread(data, 1, len, fhandle);
|
load_save_size += fread(data, 1, len, fhandle);
|
||||||
@@ -912,7 +620,6 @@ bool zst_load(FILE *fp)
|
|||||||
{
|
{
|
||||||
zst_version = 143; //v1.43+
|
zst_version = 143; //v1.43+
|
||||||
}
|
}
|
||||||
// the -2 means we only check the text - trust me, that's ok
|
|
||||||
if (!memcmp(zst_header_check, zst_header_old, sizeof(zst_header_check)-2))
|
if (!memcmp(zst_header_check, zst_header_old, sizeof(zst_header_check)-2))
|
||||||
{
|
{
|
||||||
zst_version = 60; //v0.60 - v1.42
|
zst_version = 60; //v0.60 - v1.42
|
||||||
@@ -937,11 +644,6 @@ bool zst_load(FILE *fp)
|
|||||||
if (SA1Enable)
|
if (SA1Enable)
|
||||||
{
|
{
|
||||||
RestoreSA1(); //Convert back SA-1 stuff
|
RestoreSA1(); //Convert back SA-1 stuff
|
||||||
/*
|
|
||||||
All UpdateBanks() seems to do is break Oshaberi Parodius...
|
|
||||||
The C port is still present, just commented out
|
|
||||||
*/
|
|
||||||
//UpdateBanks();
|
|
||||||
SA1UpdateDPageC();
|
SA1UpdateDPageC();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user