⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 infones_extern.h

📁 三星ic 9980的源代码. 718版.
💻 H
字号:
#ifndef __INFONES_EXTERN_H
#define  __INFONES_EXTERN_H

#include "Basic_typedefs.h"

#include "nes_apu.h"
#include "InfoNES_Sound_dvd.h"

/*-------------------------------------------------------------------*/
/*  Type definition                                                  */
/*-------------------------------------------------------------------*/
#ifndef DWORD
typedef unsigned long  DWORD;
#endif /* !DWORD */
//_9908_Game_vinay


#ifndef WORD
typedef unsigned int  WORD;
//typedef unsigned int WORD;
#endif /* !WORD */



extern BYTE *RAM ;
extern BYTE *SRAM  ;
/* ROM */
extern BYTE *ROM  ;

/* SRAM BANK ( 8Kb ) */
extern BYTE *SRAMBANK;

/* ROM BANK ( 8Kb * 4 ) */
extern BYTE *ROMBANK0;
extern BYTE *ROMBANK1;
extern BYTE *ROMBANK2;
extern BYTE *ROMBANK3;

extern BYTE Display_Contrl_stat  ;
extern apu_t *apu;
extern BYTE *ROMBANK[8];

/*-------------------------------------------------------------------*/
/*  PPU resources                                                    */
/*-------------------------------------------------------------------*/
extern BYTE *PPURAM  ;

/* VROM */
extern BYTE *VROM  ;

/* PPU BANK ( 1Kb * 16 ) */
extern BYTE *PPUBANK[ 16 ];

extern BYTE *SPRRAM  ;


/* PPU Register */
extern BYTE PPU_R0;
extern BYTE PPU_R01;  //temp
extern BYTE PPU_R1;
extern BYTE PPU_R11; //temp
extern BYTE PPU_R2;
extern BYTE PPU_R3;
extern BYTE PPU_R7;

/* Vertical scroll value */
extern BYTE PPU_Scr_V;
extern BYTE PPU_Scr_V_Next;
extern BYTE PPU_Scr_V_Byte;
extern BYTE PPU_Scr_V_Byte_Next;
extern BYTE PPU_Scr_V_Bit;
extern BYTE PPU_Scr_V_Bit_Next;

/* Horizontal scroll value */
extern BYTE PPU_Scr_H;
extern BYTE PPU_Scr_H_Next;
extern BYTE PPU_Scr_H_Byte;
extern BYTE PPU_Scr_H_Byte_Next;
extern BYTE PPU_Scr_H_Bit;
extern BYTE PPU_Scr_H_Bit_Next;

/* PPU Address */
extern WORD PPU_Addr;

/* PPU Address */
extern WORD PPU_Temp;

/* The increase value of the PPU Address */
extern WORD PPU_Increment;

/* Current Scanline */
//vinay
extern WORD PPU_Scanline;

//unsigned long PPU_Scanline;



/* Name Table Bank */
extern BYTE PPU_NameTableBank;

/* BG Base Address */
extern BYTE *PPU_BG_Base;

/* Sprite Base Address */
extern BYTE *PPU_SP_Base;

/* Sprite Height */
extern WORD PPU_SP_Height;

/* Sprite #0 Scanline Hit Position */
extern int SpriteJustHit;

/* VRAM Write Enable ( 0: Disable, 1: Enable ) */
extern BYTE byVramWriteEnable;

/* PPU Address and Scroll Latch Flag*/
extern BYTE PPU_Latch_Flag;

/* Up and Down Clipping Flag ( 0: non-clip, 1: clip ) */ 
// BYTE PPU_UpDown_Clip;

/* Frame IRQ ( 0: Disabled, 1: Enabled )*/
extern BYTE FrameIRQ_Enable;
extern WORD FrameStep;

/*----------------GPIO Svse Sttings--------------------*/
extern unsigned long  gIO_port0_Con;

/*-------------------------------------------------------------------*/
/*  Display and Others resouces                                      */
/*-------------------------------------------------------------------*/

/* Frame Skip */
extern WORD FrameSkip;
extern WORD FrameCnt;

/* Display Buffer */
extern BYTE 	*paui8VPLut [ /*1728*/0x1B0 ];

extern BYTE *ChrBuf  ;


/* Update flag for ChrBuf */
extern BYTE ChrBufUpdate;

/* Palette Table */
extern BYTE  PalTableY[32];
extern BYTE  PalTableCb[32];
extern BYTE  PalTableCr[32];

extern BYTE PPU_MirrorTable[][ 4 ] ;
//extern BYTE *_pui8CurrYScan;	// kkj
//extern BYTE *_pui8CurrCScan;	// kkj
/*-------------------------------------------------------------------*/
/*  ROM information                                                  */
/*-------------------------------------------------------------------*/

/* .nes File Header */
extern struct NesHeader_tag NesHeader;

/* Mapper Number */
extern BYTE MapperNo;

/* Mirroring 0:Horizontal 1:Vertical */
extern BYTE ROM_Mirroring;

//extern BYTE *pui8CurrYScan ;	// kkj

//extern BYTE *pui8CurrCScan;	// kkj

extern int nAttr;

extern BYTE bySprCol;

extern int nYBit;
  
extern BYTE *pbyChrData;

extern int nX;

extern signed int bEvenFlag;

/* Audio*/
extern struct ApuEvent_t ApuEventQueue[ APU_EVENT_MAX ];
extern int  cur_event;

/*-------------------------------------------------------------------*/
/*  APU and Pad resources                                            */
/*-------------------------------------------------------------------*/

/* APU Register */
extern BYTE APU_Reg[ 0x18 ];
 /*-------------------------------------------------------------------*/
/*   APU Event resources                                             */
/*-------------------------------------------------------------------*/
extern unsigned int	 gGCDAudAvailBuffer;
extern unsigned  gOutBuf_CurReadptr;
extern unsigned long _MyTempVeriable;
extern Dvd_Sound_Buf_t	SoundBuf;
extern unsigned long g_GCDAudio_Nullbuf_Read;
extern unsigned long g_GCDAudio_Nullbuf_Write;
extern unsigned int	 gGCDAudAvailBuffer;

extern unsigned long MyTempVeriable;
extern unsigned long decay_lut[16];
extern int vbl_lut[32];
extern int trilength_lut[128];
extern unsigned int gSample_Size;
extern unsigned long gApu_CycleRate ;

extern unsigned  gAudio_Chunk_size ;
extern unsigned  gOutBuf_EndReadptr;


extern BYTE MapperNo;
extern struct NesHeader_tag_2 HeaderTbl[300];
extern UINT16 gameNumber ;
extern WORD FrameSkip;
extern unsigned int gSample_Size;
extern unsigned long gApu_CycleRate ;
/* noise lookups for both modes */
#ifndef REALTIME_NOISE
extern static unsigned char noise_long_lut[APU_NOISE_32K];
extern static unsigned char noise_short_lut[APU_NOISE_93];
#endif /* !REALTIME_NOISE */



/* vblank length table used for rectangles, triangle, noise */
extern const uint8 vbl_length[32] ;

/* frequency limit of rectangle channels */
extern const int freq_limit[8] ;

/* noise frequency lookup table */
extern const int noise_freq[16] ;

#if _ENABLE_DMC
/* DMC transfer freqs */
extern const int dmc_clocks[16] ;
#endif

/* ratios of pos/neg pulse for rectangle waves */
extern const int duty_lut[4] ;

extern long sreg ;
/* APU Functions*/
#ifdef REALTIME_NOISE
extern int8 shift_register15(uint8 xor_tap);
#else
extern static void shift_register15(unsigned char *buf, int count);
#endif

extern void apu_create(void);
extern void apu_process(void );
extern  void apu_regwrite(uint16 address, uint8 value);
extern void LISR_GameCDIodmaHandler( void );
extern S5L_MemMap_t *S5L_GetMemoryInfo ( MM_BufferType_t	enMemoryMap );


/* Pad data */
extern DWORD PAD1_Latch;
extern DWORD PAD2_Latch;
extern DWORD PAD_System;
extern DWORD PAD1_Bit;
extern DWORD PAD2_Bit;

/*--------------------------------------------------------------------*/
extern unsigned char vBlankInUnknown;
extern UINT8 ejectFlag;
extern UINT16 gameNumber;
extern BYTE braClock;
extern BYTE *g_byTestTable;
extern UINT8 JoyPadEjectFlag ;
// The state of the IRQ pin
extern BYTE IRQ_State;

// The state of the NMI pin
extern BYTE NMI_State;



// Wiring of the IRQ pin
extern BYTE IRQ_Wiring;


// Wiring of the NMI pin
extern BYTE NMI_Wiring;

// The number of the clocks that it passed
extern WORD g_wPassedClocks;

extern  BYTE byCode;
extern unsigned int PC;
extern BYTE SP;
extern  BYTE F;
extern  BYTE A;
extern  BYTE X;
extern  BYTE Y;
extern WORD byRet;



// The number of the clocks that it passed
extern WORD g_wPassedClocks;
extern UINT16 gameNumber ;
extern UINT8 vBlankInUnknown ;
extern BYTE braClock ;
extern UINT8 ejectFlag ;
extern BYTE useBra1;
/************************************* ASM extern *************************************/
extern UINT8 _ejectFlag;
// A table for ASL
extern struct value_table_tag *g_ASLTable ;

// A table for LSR
extern struct value_table_tag *g_LSRTable;


// A table for ROL
extern struct value_table_tag **g_ROLTable ;

// A table for ROR
extern struct value_table_tag **g_RORTable ;

extern BYTE* _ROMBANK[];
extern BYTE* _RAM ;
extern WORD  _PPU_Increment;
extern WORD  _PPU_Addr;
extern BYTE  _PPU_R7 ;
extern BYTE* _PPUBANK[];
extern BYTE  _PPU_R3;
extern BYTE* _SPRRAM;
extern BYTE  _PPU_R2 ;
extern BYTE  _PPU_Latch_Flag;
extern BYTE  _APU_Reg[];
extern BYTE* _SRAM;

extern BYTE* _ROMBANK0;
extern BYTE* _ROMBANK1;
extern BYTE* _ROMBANK2;
extern BYTE* _ROMBANK3;
extern WORD  _byRet;
extern BYTE  _X;
extern BYTE* _g_byTestTable;
extern BYTE  _F ;
extern BYTE  _Y;
extern BYTE _byCode ;
extern BYTE _braClock;

extern unsigned  gOutBuf_CurReadptr;
extern unsigned  _gOutBuf_CurReadptr;
extern unsigned  gAudio_Chunk_size ;
extern unsigned  gOutBuf_EndReadptr;
extern unsigned  _gAudio_Chunk_size ;
extern unsigned  _gOutBuf_EndReadptr;

extern  UINT16 _gameNumber ;
extern WORD _PPU_Scanline;

/*-------------------------------------------------------------------*/

extern void K6502_Init(void);
extern void InfoNES_SetupPPU(void);
extern void InfoNES_pAPUInit(void);	
extern void 	  K6502_Reset(void);
extern void K6502_Set_Int_Wiring( BYTE byNMI_Wiring, BYTE byIRQ_Wiring );

/*-------------------------------------------------------------------*/
/*  Mapper Function                                                  */
/*-------------------------------------------------------------------*/
extern struct MapperTable_tag MapperTable[];
///* Initialize Mapper */
//extern void (*MapperInit)();
/* Write to Mapper */
extern void (*MapperWrite)( WORD wAddr, BYTE byData );
/* Write to SRAM */
extern void (*MapperSram)( WORD wAddr, BYTE byData );
/* Write to APU */
extern void (*MapperApu)( WORD wAddr, BYTE byData );
/* Read from Apu */
extern BYTE (*MapperReadApu)( WORD wAddr );
/* Callback at VSync */
extern void (*MapperVSync)();
/* Callback at HSync */
extern void (*MapperHSync)();
/* Callback at PPU read/write */
extern void (*MapperPPU)( WORD wAddr );
/* Callback at Rendering Screen 1:BG, 0:Sprite */
extern void (*MapperRenderScreen)( BYTE byMode );

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -