From d40ae99422e118188a7f48055dc340c6aca022aa Mon Sep 17 00:00:00 2001 From: Kitty Draper Date: Sat, 5 Mar 2011 21:39:25 -0500 Subject: first commit --- source/offsets.cpp | 421 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 421 insertions(+) create mode 100644 source/offsets.cpp (limited to 'source/offsets.cpp') diff --git a/source/offsets.cpp b/source/offsets.cpp new file mode 100644 index 0000000..3438488 --- /dev/null +++ b/source/offsets.cpp @@ -0,0 +1,421 @@ +/******************************************************************************* + Snes9x - Portable Super Nintendo Entertainment System (TM) emulator. + + (c) Copyright 1996 - 2002 Gary Henderson (gary.henderson@ntlworld.com) and + Jerremy Koot (jkoot@snes9x.com) + + (c) Copyright 2001 - 2004 John Weidman (jweidman@slip.net) + + (c) Copyright 2002 - 2004 Brad Jorsch (anomie@users.sourceforge.net), + funkyass (funkyass@spam.shaw.ca), + Joel Yliluoma (http://iki.fi/bisqwit/) + Kris Bleakley (codeviolation@hotmail.com), + Matthew Kendora, + Nach (n-a-c-h@users.sourceforge.net), + Peter Bortas (peter@bortas.org) and + zones (kasumitokoduck@yahoo.com) + + C4 x86 assembler and some C emulation code + (c) Copyright 2000 - 2003 zsKnight (zsknight@zsnes.com), + _Demo_ (_demo_@zsnes.com), and Nach + + C4 C++ code + (c) Copyright 2003 Brad Jorsch + + DSP-1 emulator code + (c) Copyright 1998 - 2004 Ivar (ivar@snes9x.com), _Demo_, Gary Henderson, + John Weidman, neviksti (neviksti@hotmail.com), + Kris Bleakley, Andreas Naive + + DSP-2 emulator code + (c) Copyright 2003 Kris Bleakley, John Weidman, neviksti, Matthew Kendora, and + Lord Nightmare (lord_nightmare@users.sourceforge.net + + OBC1 emulator code + (c) Copyright 2001 - 2004 zsKnight, pagefault (pagefault@zsnes.com) and + Kris Bleakley + Ported from x86 assembler to C by sanmaiwashi + + SPC7110 and RTC C++ emulator code + (c) Copyright 2002 Matthew Kendora with research by + zsKnight, John Weidman, and Dark Force + + S-DD1 C emulator code + (c) Copyright 2003 Brad Jorsch with research by + Andreas Naive and John Weidman + + S-RTC C emulator code + (c) Copyright 2001 John Weidman + + ST010 C++ emulator code + (c) Copyright 2003 Feather, Kris Bleakley, John Weidman and Matthew Kendora + + Super FX x86 assembler emulator code + (c) Copyright 1998 - 2003 zsKnight, _Demo_, and pagefault + + Super FX C emulator code + (c) Copyright 1997 - 1999 Ivar, Gary Henderson and John Weidman + + + SH assembler code partly based on x86 assembler code + (c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se) + + + Specific ports contains the works of other authors. See headers in + individual files. + + Snes9x homepage: http://www.snes9x.com + + Permission to use, copy, modify and distribute Snes9x in both binary and + source form, for non-commercial purposes, is hereby granted without fee, + providing that this license information and copyright notice appear with + all copies and any derived work. + + This software is provided 'as-is', without any express or implied + warranty. In no event shall the authors be held liable for any damages + arising from the use of this software. + + Snes9x is freeware for PERSONAL USE only. Commercial users should + seek permission of the copyright holders first. Commercial use includes + charging money for Snes9x or software derived from Snes9x. + + The copyright holders request that bug fixes and improvements to the code + should be forwarded to them so everyone can benefit from the modifications + in future versions. + + Super NES and Super Nintendo Entertainment System are trademarks of + Nintendo Co., Limited and its subsidiary companies. +*******************************************************************************/ + +#include "snes9x.h" +#include "65c816.h" +#include "memmap.h" +#include "ppu.h" +#include "apu.h" +#include "cpuexec.h" +#include "sa1.h" + +#ifndef S9xSTREAM +#define S9xSTREAM stdout +#endif + +#define OFFSET(N,F) \ +fprintf (S9xSTREAM, "#define " #N " CPU + %d\n", (int) &((struct SCPUState *) 0)->F); +#define OFFSET2(N,F) \ +fprintf (S9xSTREAM, "#define " #N " Registers + %d\n", (int) &((struct SRegisters *) 0)->F); +#define OFFSET3(F) \ +fprintf (S9xSTREAM, "#define " #F " Memory + %d\n", (int) &((class CMemory *) 0)->F); +#define OFFSET4(N,F) \ +fprintf (S9xSTREAM, "#define " #N " APU + %d\n", (int) &((struct SAPU *) 0)->F); +#define OFFSET5(N,F) \ +fprintf (S9xSTREAM, "#define " #N " IAPU + %d\n", (int) &((struct SIAPU *) 0)->F); +#define OFFSET6(N,F) \ +fprintf (S9xSTREAM, "#define " #N " ICPU + %d\n", (int) &((struct SICPU *) 0)->F); +#define OFFSET7(N,F) \ +fprintf (S9xSTREAM, "#define " #N " Settings + %d\n", (int) &((struct SSettings *) 0)->F); +#define OFFSET8(N, F) \ +fprintf (S9xSTREAM, "#define " #N " APURegisters + %d\n", (int) &((struct SAPURegisters *) 0)->F); + +#define OFFSET9(N, F) \ +fprintf (S9xSTREAM, "#define " #N " PPU + %d\n", (int) &((struct SPPU *) 0)->F); +#define OFFSET10(N, F) \ +fprintf (S9xSTREAM, "#define " #N " IPPU + %d\n", (int) &((struct InternalPPU *) 0)->F); +#define OFFSET11(N, F) \ +fprintf (S9xSTREAM, "#define " #N " SA1 + %d\n", (int) &((struct SSA1 *) 0)->F); +#define OFFSET12(N, F) \ +fprintf (S9xSTREAM, "#define " #N " SA1Registers + %d\n", (int) &((struct SSA1Registers *) 0)->F); + +int main (int /*argc*/, char ** /*argv*/) +{ + OFFSET(Flags,Flags) + OFFSET(BranchSkip,BranchSkip) + OFFSET(NMIActive,NMIActive) + OFFSET(IRQActive,IRQActive) + OFFSET(WaitingForInterrupt,WaitingForInterrupt) + OFFSET(InDMA,InDMA) + OFFSET(WhichEvent,WhichEvent) + OFFSET(PCS,PC) + OFFSET(PCBase,PCBase) + OFFSET(PCAtOpcodeStart,PCAtOpcodeStart) + OFFSET(WaitAddress,WaitAddress) + OFFSET(WaitCounter,WaitCounter) + OFFSET(Cycles,Cycles) + OFFSET(NextEvent,NextEvent) + OFFSET(V_Counter,V_Counter) + OFFSET(MemSpeed,MemSpeed) + OFFSET(MemSpeedx2,MemSpeedx2) + OFFSET(FastROMSpeed,FastROMSpeed) + OFFSET(AutoSaveTimer,AutoSaveTimer) + OFFSET(SRAMModified,SRAMModified) + OFFSET(NMITriggerPoint,NMITriggerPoint) + OFFSET(TriedInterleavedMode2,TriedInterleavedMode2) + OFFSET(BRKTriggered,BRKTriggered) + OFFSET(NMICycleCount,NMICycleCount) + OFFSET(IRQCycleCount,IRQCycleCount) + + OFFSET2(PB,PB) + OFFSET2(DB,DB) + OFFSET2(PP,P.W) + OFFSET2(PL,P.W) + fprintf (S9xSTREAM, "#define PH PL + 1\n"); + OFFSET2(AA,A.W) + OFFSET2(AL,A.W) + fprintf (S9xSTREAM, "#define AH AL + 1\n"); + OFFSET2(DD,D.W) + OFFSET2(DL,D.W) + fprintf (S9xSTREAM, "#define DH DL + 1\n"); + OFFSET2(SS,S.W) + OFFSET2(SL,S.W) + fprintf (S9xSTREAM, "#define SH SL + 1\n"); + OFFSET2(XX,X.W) + OFFSET2(XL,X.W) + fprintf (S9xSTREAM, "#define XH XL + 1\n"); + OFFSET2(YY,Y.W) + OFFSET2(YL,Y.W) + fprintf (S9xSTREAM, "#define YH YL + 1\n"); + OFFSET2(PCR, PC) + + OFFSET3(RAM) + OFFSET3(ROM) + OFFSET3(VRAM) + OFFSET3(SRAM) + OFFSET3(BWRAM) + OFFSET3(FillRAM) + OFFSET3(C4RAM) + OFFSET3(HiROM) + OFFSET3(LoROM) + OFFSET3(SRAMMask) + OFFSET3(SRAMSize) + OFFSET3(Map) + OFFSET3(WriteMap) + OFFSET3(MemorySpeed) + OFFSET3(BlockIsRAM) + OFFSET3(BlockIsROM) + OFFSET3(ROMFilename) + + OFFSET5(APUPCS,PC) + OFFSET5(APURAM,RAM) + OFFSET5(APUExecuting,APUExecuting) + OFFSET5(APUDirectPage,DirectPage) + OFFSET5(APUBit,Bit) + OFFSET5(APUAddress,Address) + OFFSET5(APUWaitAddress1,WaitAddress1) + OFFSET5(APUWaitAddress2,WaitAddress2) + OFFSET5(APUWaitCounter,WaitCounter) + OFFSET5(APUShadowRAM,ShadowRAM) + OFFSET5(APUCachedSamples,CachedSamples) + OFFSET5(APU_Carry,_Carry) + OFFSET5(APU_Zero,_Zero) + OFFSET5(APU_Overflow,_Overflow) + OFFSET5(APUTimerErrorCounter,TimerErrorCounter) + + OFFSET4(APUCycles,Cycles) + OFFSET4(APUShowROM,ShowROM) + OFFSET4(APUFlags,Flags) + OFFSET4(APUKeyedChannels,KeyedChannels) + OFFSET4(APUOutPorts,OutPorts) + OFFSET4(APUDSP,DSP) + OFFSET4(APUExtraRAM,ExtraRAM) + OFFSET4(APUTimer,Timer) + OFFSET4(APUTimerTarget,TimerTarget) + OFFSET4(APUTimerEnabled,TimerEnabled) + OFFSET4(TimerValueWritten,TimerValueWritten) + + OFFSET6(CPUSpeed,Speed) + OFFSET6(CPUOpcodes,S9xOpcodes) + OFFSET6(_Carry,_Carry) + OFFSET6(_Zero,_Zero) + OFFSET6(_Negative,_Negative) + OFFSET6(_Overflow,_Overflow) + OFFSET6(ShiftedDB,ShiftedDB) + OFFSET6(ShiftedPB,ShiftedPB) + OFFSET6(CPUExecuting,CPUExecuting) + OFFSET6(Scanline,Scanline) + OFFSET6(Frame,Frame) + + OFFSET7(APUEnabled,APUEnabled) + OFFSET7(Shutdown,Shutdown) + OFFSET7(SoundSkipMethod,SoundSkipMethod) + OFFSET7(H_Max,H_Max) + OFFSET7(HBlankStart,HBlankStart) + OFFSET7(CyclesPercentage,CyclesPercentage) + OFFSET7(DisableIRQ,DisableIRQ) + OFFSET7(Paused,Paused) + OFFSET7(PAL,PAL) + OFFSET7(SoundSync,SoundSync) + OFFSET7(SA1Enabled,SA1) + OFFSET7(SuperFXEnabled,SuperFX) + + OFFSET8(ApuP,P) + OFFSET8(ApuYA,YA.W) + OFFSET8(ApuA,YA.B.A) + OFFSET8(ApuY,YA.B.Y) + OFFSET8(ApuX,X) + OFFSET8(ApuS,S) + OFFSET8(ApuPC,PC) + OFFSET8(APUPCR,PC) + + OFFSET9(BGMode,BGMode) + OFFSET9(BG3Priority,BG3Priority) + OFFSET9(Brightness,Brightness) + OFFSET9(GHight,VMA.High) + OFFSET9(GInc,VMA.Increment) + OFFSET9(GAddress,VMA.Address) + OFFSET9(GMask1,VMA.Mask1) + OFFSET9(GFullGraphicCount,VMA.FullGraphicCount) + OFFSET9(GShift,VMA.Shift) + OFFSET9(CGFLIP,CGFLIP) + OFFSET9(CGDATA,CGDATA) + OFFSET9(FirstSprite,FirstSprite) + OFFSET9(LastSprite,LastSprite) + OFFSET9(OBJ,OBJ) + OFFSET9(OAMPriorityRotation,OAMPriorityRotation) + OFFSET9(OAMAddr,OAMAddr) + OFFSET9(OAMFlip,OAMFlip) + OFFSET9(OAMTileAddress,OAMTileAddress) + OFFSET9(IRQVBeamPos,IRQVBeamPos) + OFFSET9(IRQHBeamPos,IRQHBeamPos) + OFFSET9(VBeamPosLatched,VBeamPosLatched) + OFFSET9(HBeamPosLatched,HBeamPosLatched) + OFFSET9(HBeamFlip,HBeamFlip) + OFFSET9(VBeamFlip,VBeamFlip) + OFFSET9(HVBeamCounterLatched,HVBeamCounterLatched) + OFFSET9(MatrixA,MatrixA) + OFFSET9(MatrixB,MatrixB) + OFFSET9(MatrixC,MatrixC) + OFFSET9(MatrixD,MatrixD) + OFFSET9(CentreX,CentreX) + OFFSET9(CentreY,CentreY) + OFFSET9(Joypad1ButtonReadPos,Joypad1ButtonReadPos) + OFFSET9(Joypad2ButtonReadPos,Joypad2ButtonReadPos) + OFFSET9(CGADD,CGADD) + OFFSET9(FixedColourGreen,FixedColourGreen) + OFFSET9(FixedColourRed,FixedColourRed) + OFFSET9(FixedColourBlue,FixedColourBlue) + OFFSET9(SavedOAMAddr,SavedOAMAddr) + OFFSET9(ScreenHeight,ScreenHeight) + OFFSET9(WRAM,WRAM) + OFFSET9(BG_Forced,BG_Forced) + OFFSET9(ForcedBlanking,ForcedBlanking) + OFFSET9(OBJThroughMain,OBJThroughMain) + OFFSET9(OBJThroughSub,OBJThroughSub) + OFFSET9(OBJSizeSelect,OBJSizeSelect) + OFFSET9(OBJNameBase,OBJNameBase) + OFFSET9(OAMReadFlip,OAMReadFlip) + OFFSET9(OAMData,OAMData) + OFFSET9(VTimerEnabled,VTimerEnabled) + OFFSET9(HTimerEnabled,HTimerEnabled) + OFFSET9(HTimerPosition,HTimerPosition) + OFFSET9(Mosaic,Mosaic) + OFFSET9(BGMosaic,BGMosaic) + OFFSET9(Mode7HFlip,Mode7HFlip) + OFFSET9(Mode7VFlip,Mode7VFlip) + OFFSET9(Mode7Repeat,Mode7Repeat) + OFFSET9(Window1Left,Window1Left) + OFFSET9(Window1Right,Window1Right) + OFFSET9(Window2Left,Window2Left) + OFFSET9(Window2Right,Window2Right) + OFFSET9(ClipWindowOverlapLogic,ClipWindowOverlapLogic) + OFFSET9(ClipWindow1Enable,ClipWindow1Enable) + OFFSET9(ClipWindow2Enable,ClipWindow2Enable) + OFFSET9(ClipWindow1Inside,ClipWindow1Inside) + OFFSET9(ClipWindow2Inside,ClipWindow2Inside) + OFFSET9(RecomputeClipWindows,RecomputeClipWindows) + OFFSET9(CGFLIPRead,CGFLIPRead) + OFFSET9(OBJNameSelect,OBJNameSelect) + OFFSET9(Need16x8Mulitply,Need16x8Mulitply) + OFFSET9(Joypad3ButtonReadPos,Joypad3ButtonReadPos) + OFFSET9(MouseSpeed,MouseSpeed) + OFFSET9(RangeTimeOver,RangeTimeOver) + + OFFSET10(ColorsChanged,ColorsChanged) + OFFSET10(HDMA,HDMA) + OFFSET10(HDMAStarted,HDMAStarted) + OFFSET10(MaxBrightness,MaxBrightness) + OFFSET10(LatchedBlanking,LatchedBlanking) + OFFSET10(OBJChanged,OBJChanged) + OFFSET10(RenderThisFrame,RenderThisFrame) + OFFSET10(SkippedFrames,SkippedFrames) + OFFSET10(FrameSkip,FrameSkip) + OFFSET10(TileCache,TileCache) + OFFSET10(TileCached,TileCached) +#ifdef CORRECT_VRAM_READS + OFFSET10(VRAMReadBuffer,VRAMReadBuffer) +#else + OFFSET10(FirstVRAMRead,FirstVRAMRead) +#endif + OFFSET10(Interlace,Interlace) + OFFSET10(DoubleWidthPixels,DoubleWidthPixels) + OFFSET10(RenderedScreenHeight,RenderedScreenHeight) + OFFSET10(RenderedScreenWidth,RenderedScreenWidth) + OFFSET10(Red,Red) + OFFSET10(Green,Green) + OFFSET10(Blue,Blue) + OFFSET10(XB,XB) + OFFSET10(ScreenColors,ScreenColors) + OFFSET10(PreviousLine,PreviousLine) + OFFSET10(CurrentLine,CurrentLine) + OFFSET10(Joypads,Joypads) + OFFSET10(SuperScope,SuperScope) + OFFSET10(Mouse,Mouse) + OFFSET10(PrevMouseX,PrevMouseX) + OFFSET10(PrevMouseY,PrevMouseY) + OFFSET10(Clip,Clip) + + OFFSET11(SA1Opcodes,S9xOpcodes) + OFFSET11(SA1_Carry,_Carry) + OFFSET11(SA1_Zero,_Zero) + OFFSET11(SA1_Negative,_Negative) + OFFSET11(SA1_Overflow,_Overflow) + OFFSET11(SA1CPUExecuting,CPUExecuting) + OFFSET11(SA1ShiftedPB,ShiftedPB) + OFFSET11(SA1ShiftedDB,ShiftedDB) + OFFSET11(SA1Flags,Flags) + OFFSET11(SA1Executing,Executing) + OFFSET11(SA1NMIActive,NMIActive) + OFFSET11(SA1IRQActive,IRQActive) + OFFSET11(SA1WaitingForInterrupt,WaitingForInterrupt) + OFFSET11(SA1PCS,PC) + OFFSET11(SA1PCBase,PCBase) + OFFSET11(SA1PCAtOpcodeStart,PCAtOpcodeStart) + OFFSET11(SA1WaitAddress,WaitAddress) + OFFSET11(SA1WaitCounter,WaitCounter) + OFFSET11(SA1WaitByteAddress1,WaitByteAddress1) + OFFSET11(SA1WaitByteAddress2,WaitByteAddress2) + OFFSET11(SA1BWRAM,BWRAM) + OFFSET11(SA1Map,Map) + OFFSET11(SA1WriteMap,WriteMap) + OFFSET11(SA1op1,op1) + OFFSET11(SA1op2,op2) + OFFSET11(SA1arithmetic_op,arithmetic_op) + OFFSET11(SA1sum,sum) + OFFSET11(SA1overflow,overflow) + OFFSET11(VirtualBitmapFormat,VirtualBitmapFormat) + OFFSET11(SA1_in_char_dma,in_char_dma) + OFFSET11(SA1variable_bit_pos,variable_bit_pos) + + OFFSET12(SA1PB,PB) + OFFSET12(SA1DB,DB) + OFFSET12(SA1PP,P.W) + OFFSET12(SA1PL,P.W) + fprintf (S9xSTREAM, "#define SA1PH SA1PL + 1\n"); + OFFSET12(SA1AA,A.W) + OFFSET12(SA1AL,A.W) + fprintf (S9xSTREAM, "#define SA1AH SA1AL + 1\n"); + OFFSET12(SA1DD,D.W) + OFFSET12(SA1DL,D.W) + fprintf (S9xSTREAM, "#define SA1DH SA1DL + 1\n"); + OFFSET12(SA1SS,S.W) + OFFSET12(SA1SL,S.W) + fprintf (S9xSTREAM, "#define SA1SH SA1SL + 1\n"); + OFFSET12(SA1XX,X.W) + OFFSET12(SA1XL,X.W) + fprintf (S9xSTREAM, "#define SA1XH SA1XL + 1\n"); + OFFSET12(SA1YY,Y.W) + OFFSET12(SA1YL,Y.W) + fprintf (S9xSTREAM, "#define SA1YH SA1YL + 1\n"); + OFFSET12(SA1PCR, PC) + + return (0); +} + -- cgit v1.2.3