mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
lots of work on ks_nes_core
This commit is contained in:
+107
-39
@@ -2,6 +2,7 @@
|
||||
#define KS_NES_COMMON_H
|
||||
|
||||
#include "types.h"
|
||||
#include "dolphin/os/OSTime.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -16,7 +17,7 @@ extern "C" {
|
||||
#define KS_NES_CHRROM_SIZE 0x40000 // 256kb for MMC3
|
||||
|
||||
#define KS_NES_CHRRAM_SIZE 0x2000 // 8kb
|
||||
#define KS_NES_BBRAM_SIZE 0x8000 // 32kb, battery backed-up ram
|
||||
#define KS_NES_BBRAM_SIZE 0x8000 // 32kb, battery backed-up ram
|
||||
#define KS_NES_NOISE_DATA_SIZE 0x7F000
|
||||
#define KS_NES_DRAW_RESULT_BUF_SIZE 0x1C800
|
||||
|
||||
@@ -28,50 +29,117 @@ extern "C" {
|
||||
#define KS_NES_TO_KB(b) ((f32)b * (1.0f / (f32)KS_NES_BYTES_PER_KB))
|
||||
|
||||
typedef struct ksNesCommonWorkPriv {
|
||||
/* 0x0000 */ u8 wram[KS_NES_WRAM_SIZE];
|
||||
/* 0x0800 */ u8 _0800[0x0B40 - 0x0800];
|
||||
/* 0x0B40 */ u8 _0B40[1]; // TODO: figure out what this is and its size
|
||||
/* 0x0B41 */ u8 _0B41[0x2A40 - 0x0B41];
|
||||
/* 0x2A40 */ u8 _2A40[0x800];
|
||||
/* 0x3240 */ u8 _3240[0x8F18 - 0x3240];
|
||||
/* 0x0000 */ u8 wram[KS_NES_WRAM_SIZE];
|
||||
/* 0x0800 */ u8 _0800[0x340];
|
||||
/* 0x0B40 */ u8* _0B40[0x7c0];
|
||||
/* 0x2A40 */ u8 _2A40[0x800];
|
||||
/* 0x3240 */ u8 _3240[0x5cd8];
|
||||
} ksNesCommonWorkPriv;
|
||||
|
||||
typedef struct ksNesCommonWorkObj {
|
||||
/* 0x0000 */ u8* nesromp;
|
||||
/* 0x0004 */ u8* noise_bufp;
|
||||
/* 0x0008 */ size_t chr_to_i8_buf_size;
|
||||
/* 0x000C */ u8* chr_to_u8_bufp;
|
||||
/* 0x0010 */ u8* result_bufp;
|
||||
/* 0x0014 */ int _0014;
|
||||
/* 0x0018 */ int _0018;
|
||||
/* 0x001C */ u8 frames;
|
||||
/* 0x001D */ u8 _001D;
|
||||
/* 0x001E */ u8 _001E;
|
||||
/* 0x001F */ u8 _001F;
|
||||
/* 0x0020 */ u32 pads[4];
|
||||
/* 0x0030 */ u32 _0030;
|
||||
/* 0x0034 */ u32 _0034;
|
||||
/* 0x0038 */ u32 _0038;
|
||||
/* 0x003C */ u8 _003C[0x0048 - 0x003C];
|
||||
/* 0x0048 */ size_t prg_size;
|
||||
/* 0x004C */ u8 _004C[0x0060 - 0x004C];
|
||||
/* 0x0060 */ ksNesCommonWorkPriv work_priv;
|
||||
/* 0x0000 */ u8* nesromp;
|
||||
/* 0x0004 */ u8* noise_bufp;
|
||||
/* 0x0008 */ size_t chr_to_i8_buf_size;
|
||||
/* 0x000C */ u8* chr_to_u8_bufp;
|
||||
/* 0x0010 */ u8* result_bufp;
|
||||
/* 0x0014 */ int _0014;
|
||||
/* 0x0018 */ int _0018;
|
||||
/* 0x001C */ u8 frames;
|
||||
/* 0x001D */ u8 _001D;
|
||||
/* 0x001E */ u8 _001E;
|
||||
/* 0x001F */ u8 _001F;
|
||||
/* 0x0020 */ u32 pads[4];
|
||||
/* 0x0030 */ u32 _0030;
|
||||
/* 0x0034 */ u32 _0034;
|
||||
/* 0x0038 */ u32 _0038;
|
||||
/* 0x003C */ u8 _003C[0x0048 - 0x003C];
|
||||
/* 0x0048 */ size_t prg_size;
|
||||
/* 0x004C */ u8 _004C[0x0060 - 0x004C];
|
||||
/* 0x0060 */ ksNesCommonWorkPriv work_priv;
|
||||
} ksNesCommonWorkObj;
|
||||
|
||||
typedef struct ksNesStateObj {
|
||||
/* 0x0000 */ u8 wram[KS_NES_WRAM_SIZE];
|
||||
/* 0x0800 */ u8 _0800[0x16B4 - 0x0800];
|
||||
/* 0x16B4 */ u32 _16B4;
|
||||
/* 0x16BC */ u8 _16B8[0x176D - 0x16B8];
|
||||
/* 0x176D */ u8 disk_motor;
|
||||
/* 0x176E */ u8 _176E[0x17FC - 0x176E];
|
||||
/* 0x17FC */ u8 _17FC[8];
|
||||
/* 0x1804 */ u8 _1804[0x1844 - 0x1804];
|
||||
/* 0x1844 */ u16 PC;
|
||||
/* 0x1846 */ u8 _1846[0x1860 - 0x1846];
|
||||
/* 0x1860 */ size_t prg_size;
|
||||
/* 0x1864 */ size_t chr_size;
|
||||
/* 0x1868 */ u8 _1868[0x1A78 - 0x1868];
|
||||
/* 0x0000 */ u8 wram[KS_NES_WRAM_SIZE];
|
||||
/* 0x0800 */ u8 _0800[0x800];
|
||||
/* 0x0800 */ u8 _1000[0x520];
|
||||
// these are all function pointers.
|
||||
// leaving these as void pointers until we figure out the function signature.
|
||||
/* 0x1520 */ void* store_ppu_func[8]; // ksNesStorePPUFuncTblDefault
|
||||
/* 0x1540 */ void* store_io_func[0x28]; // ksNesStoreIOFuncTblDefault
|
||||
/* 0x15E0 */ void* store_func[8]; // ksNesStoreFuncTblDefault
|
||||
/* 0x1600 */ void* load_func[8]; // ksNesLoadFuncTblDefault
|
||||
/* 0x1620 */ void* load_io_func[0x18]; // ksNesLoadIOFuncTblDefault
|
||||
/* 0x1680 */ u8* cpu_0000_1fff; // work RAM and its mirrors
|
||||
/* 0x1684 */ u8* cpu_2000_3fff; // PPU registers and their mirrors
|
||||
/* 0x1688 */ u8* cpu_4000_5fff; // APU registers, I/O registers, and usually unmapped cartridge addresses
|
||||
/* 0x168C */ u8* cpu_6000_7fff; // usually battery backed cartridge RAM
|
||||
/* 0x1690 */ u8* cpu_8000_9fff; // usually cartridge ROM and mapper registers
|
||||
/* 0x1694 */ u8* cpu_a000_bfff; // usually cartridge ROM and mapper registers
|
||||
/* 0x1698 */ u8* cpu_c000_dfff; // usually cartridge ROM and mapper registers
|
||||
/* 0x169C */ u8* cpu_e000_ffff; // usually cartridge ROM and mapper registers
|
||||
/* 0x16A0 */ u8 _16A0[8];
|
||||
/* 0x16A8 */ u8 _16A8[8];
|
||||
/* 0x16B0 */ u8 _16B0;
|
||||
/* 0x16B1 */ u8 _16B1;
|
||||
/* 0x16B2 */ u8 _16B2;
|
||||
/* 0x16B3 */ u8 _16B3;
|
||||
/* 0x16B4 */ u32 _16B4;
|
||||
/* 0x16B8 */ u8 _16B8[8];
|
||||
/* 0x16C0 */ u32 _16C0;
|
||||
/* 0x16C4 */ u8 _16C4[8];
|
||||
/* 0x16CC */ u8 _16CC[0x80];
|
||||
/* 0x174C */ u8 _174C[0x18];
|
||||
/* 0x1764 */ u8 mapper;
|
||||
/* 0x1765 */ u8 prg_banks; // init to number of 8k PRG banks - 1. might indicate currently selected bank
|
||||
/* 0x1766 */ u16 chr_banks; // init to number of 1k CHR banks - 1. might indicate currently selected bank
|
||||
/* 0x1768 */ u8 _1768[5];
|
||||
/* 0x176D */ u8 disk_motor;
|
||||
/* 0x176E */ u8 _176E[0x40]; // MMC5 registers?
|
||||
/* 0x17AE */ u16 _17AE; // APU frame counter LFSR?
|
||||
/* 0x17B0 */ u8 _17B0[0x40]; // TODO not an array
|
||||
/* 0x17F0 */ u8* prgromp; // pointer to the start of PRG ROM?
|
||||
/* 0x17F4 */ u8* chrramp; // pointer to the end of PRG ROM?
|
||||
/* 0x17F8 */ u8* bbramp; // pointer to battery backed RAM?
|
||||
/* 0x17FC */ u8 _17FC[8];
|
||||
/* 0x1804 */ u8 _1804[0xC];
|
||||
/* 0x1810 */ u8* _1810[4];
|
||||
/* 0x1820 */ s16 _1820; // this appears to be a u16
|
||||
/* 0x1822 */ s16 _1822;
|
||||
/* 0x1824 */ s16 _1824;
|
||||
/* 0x1826 */ s16 _1826;
|
||||
/* 0x1828 */ u16 _1828; // APU frame counter LFSR?
|
||||
/* 0x182A */ u16 _182A;
|
||||
/* 0x182C */ u8 _182C;
|
||||
/* 0x182C */ u8 _182D;
|
||||
/* 0x182E */ u8 _182E;
|
||||
/* 0x182F */ u8 _182F;
|
||||
/* 0x1830 */ u8 _1830;
|
||||
/* 0x1831 */ u8 _1831;
|
||||
/* 0x1832 */ u16 _1832;
|
||||
/* 0x1834 */ u8 _1834;
|
||||
/* 0x1835 */ u8 _1835;
|
||||
/* 0x1836 */ u16 _1836;
|
||||
/* 0x1838 */ u16 _1838;
|
||||
/* 0x183A */ u16 _183A;
|
||||
/* 0x183C */ u16 _183C;
|
||||
/* 0x183E */ u16 _183E;
|
||||
/* 0x1840 */ void* _1840; // some sort of function pointer with the same signature as ksNesStoreFuncXxxTblDefault
|
||||
/* 0x1844 */ u16 PC;
|
||||
// /* 0x1846 */ u8 A; //
|
||||
// /* 0x1847 */ u8 X; // ?
|
||||
// /* 0x1848 */ u8 Y; // ?
|
||||
/* 0x1846 */ u8 _1846[0x12];
|
||||
/* 0x1858 */ u32 reset_flags; // this should probably be defined as an enum.
|
||||
/* 0x185C */ u32 frame_flags; // this should probably be defined as an enum.
|
||||
/* 0x1860 */ size_t prg_size; // PRG size in bytes
|
||||
/* 0x1864 */ size_t chr_size; // CHR size in bytes
|
||||
/* 0x1868 */ u8* nesromp;
|
||||
/* 0x186C */ u8* _186C[0x18]; // this holds pointers to ksNesStateObj._0800
|
||||
/* 0x18CC */ u8 _18CC[0x1C];
|
||||
/* 0x18E8 */ u8 palette_normal[0x80]; // ksNesPaletteNormal
|
||||
/* 0x1968 */ u8 _1968[0x108];
|
||||
/* 0x1A70 */ u32 _1A70;
|
||||
/* 0x1A74 */ OSTick os_tick;
|
||||
} ksNesStateObj;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -4,8 +4,273 @@
|
||||
#include "types.h"
|
||||
#include "Famicom/ks_nes_common.h"
|
||||
|
||||
extern void ksNesDrawMakeOBJIndTex(ksNesCommonWorkObj* wp);
|
||||
extern void ksNesDrawMakeOBJIndTexMMC5(ksNesCommonWorkObj* wp);
|
||||
extern void ksNesConvertChrToI8(ksNesCommonWorkObj* wp, const unsigned char* foo, unsigned long bar);
|
||||
extern void ksNesConvertChrToI8MMC5(ksNesCommonWorkObj* wp, const unsigned char* foo, unsigned long bar);
|
||||
extern void ksNesQDSoundSync();
|
||||
extern void ksNesQDFastLoad(ksNesCommonWorkObj* wp, ksNesStateObj* sp);
|
||||
extern void ksNesQDFastSave(ksNesCommonWorkObj* wp, ksNesStateObj* sp);
|
||||
extern void ksNesPushResetButton(ksNesStateObj* sp);
|
||||
extern int ksNesReset(ksNesCommonWorkObj* wp, ksNesStateObj* sp, u32 flags, u8* chrramp, u8* bbramp);
|
||||
extern void ksNesEmuFrame(ksNesCommonWorkObj* wp, ksNesStateObj* sp, u32 flags);
|
||||
extern void ksNesPushResetButton(ksNesStateObj* sp);
|
||||
|
||||
extern u32 ksNesResetAsm(ksNesCommonWorkObj* wp, ksNesStateObj* sp);
|
||||
extern void ksNesInit01();
|
||||
extern void ksNesInit03();
|
||||
extern void ksNesInit04();
|
||||
extern void ksNesInit05();
|
||||
extern void ksNesInit07();
|
||||
extern void ksNesInit09();
|
||||
extern void ksNesInit12();
|
||||
extern void ksNesInit13();
|
||||
extern void ksNesInit15();
|
||||
extern void ksNesInit18();
|
||||
extern void ksNesInit1a();
|
||||
extern void ksNesInit42();
|
||||
extern void ksNesInit43();
|
||||
extern void ksNesInit45();
|
||||
extern void ksNesInit49();
|
||||
extern void ksNesInit56();
|
||||
|
||||
extern void ksNesEmuFrameAsm(ksNesCommonWorkObj* wp, ksNesStateObj* sp);
|
||||
extern void ksNesLinecntIrqDefault();
|
||||
extern void ksNesMainLoop2();
|
||||
extern void ksNesInst_load16_imm();
|
||||
extern void ksNesInst_load8_abs();
|
||||
extern void ksNesInst_load8_absx();
|
||||
extern void ksNesInst_load8_absy();
|
||||
extern void ksNesInst_load8_zerop();
|
||||
extern void ksNesInst_load8_dx();
|
||||
extern void ksNesInst_load8_dxi();
|
||||
extern void ksNesInst_load8_dyi();
|
||||
extern void ksNesInst_lda_a1();
|
||||
extern void ksNesInst_ldx_b6();
|
||||
extern void ksNesInst_ldx_a2();
|
||||
extern void ksNesInst_ldy_a0();
|
||||
extern void ksNesInst_sta_85();
|
||||
extern void ksNesInst_stx_86();
|
||||
extern void ksNesInst_sty_84();
|
||||
extern void ksNesInst_sta_95();
|
||||
extern void ksNesInst_stx_96();
|
||||
extern void ksNesInst_sty_94();
|
||||
extern void ksNesInst_sta_8d();
|
||||
extern void ksNesInst_stx_8e();
|
||||
extern void ksNesInst_sty_8c();
|
||||
extern void ksNesInst_sta_9d();
|
||||
extern void ksNesInst_sta_99();
|
||||
extern void ksNesInst_sta_81();
|
||||
extern void ksNesInst_sta_91();
|
||||
extern void ksNesInst_clc_18();
|
||||
extern void ksNesInst_sec_38();
|
||||
extern void ksNesInst_dex_ca();
|
||||
extern void ksNesInst_inx_e8();
|
||||
extern void ksNesInst_dey_88();
|
||||
extern void ksNesInst_iny_c8();
|
||||
extern void ksNesInst_txa_8a();
|
||||
extern void ksNesInst_tya_98();
|
||||
extern void ksNesInst_tax_aa();
|
||||
extern void ksNesInst_tay_a8();
|
||||
extern void ksNesInst_cmp_c1();
|
||||
extern void ksNesInst_cpx_e0();
|
||||
extern void ksNesInst_cpy_c0();
|
||||
extern void ksNesInst_adc_61();
|
||||
extern void ksNesInst_sbc_e1();
|
||||
extern void ksNesInst_ora_01();
|
||||
extern void ksNesInst_and_21();
|
||||
extern void ksNesInst_bit_24();
|
||||
extern void ksNesInst_eor_41();
|
||||
extern void ksNesInst_inc_e6();
|
||||
extern void ksNesInst_dec_c6();
|
||||
extern void ksNesInst_asl_0a();
|
||||
extern void ksNesInst_asl_06();
|
||||
extern void ksNesInst_lsr_4a();
|
||||
extern void ksNesInst_lsr_46();
|
||||
extern void ksNesInst_rol_2a();
|
||||
extern void ksNesInst_rol_26();
|
||||
extern void ksNesInst_ror_6a();
|
||||
extern void ksNesInst_ror_66();
|
||||
extern void ksNesInst_bpl_10();
|
||||
extern void ksNesInst_bmi_30();
|
||||
extern void ksNesInst_bvc_50();
|
||||
extern void ksNesInst_bvs_70();
|
||||
extern void ksNesInst_bcc_90();
|
||||
extern void ksNesInst_bcs_b0();
|
||||
extern void ksNesInst_bne_d0();
|
||||
extern void ksNesInst_beq_f0();
|
||||
extern void ksNesInst_jsr_20();
|
||||
extern void ksNesPush16_a1();
|
||||
extern void ksNesInst_pha_48();
|
||||
extern void ksNesInst_pla_68();
|
||||
extern void ksNesInst_rts_60();
|
||||
extern void ksNesPopPC();
|
||||
extern void ksNesInst_jmp_4c();
|
||||
extern void ksNesInst_jmp_6c();
|
||||
extern void ksNesInst_brk_00();
|
||||
extern void ksNesActivateIntrIRQ();
|
||||
extern void ksNesActivateIntr();
|
||||
extern void ksNesInst_php_08();
|
||||
extern void ksNesInst_plp_28();
|
||||
extern void ksNesInst_rti_40();
|
||||
extern void ksNesInst_rti_40_2();
|
||||
extern void ksNesInst_cli_58();
|
||||
extern void ksNesInst_sei_78();
|
||||
extern void ksNesInst_txs_9a();
|
||||
extern void ksNesInst_tsx_ba();
|
||||
extern void ksNesInst_cld_d8();
|
||||
extern void ksNesInst_sed_f8();
|
||||
extern void ksNesInst_clv_b8();
|
||||
extern void ksNesLoadInvalid();
|
||||
extern void ksNesLoadIgnore();
|
||||
extern void ksNesLoadWRAM();
|
||||
extern void ksNesLoadBBRAM();
|
||||
extern void ksNesLoadPPU();
|
||||
extern void ksNesLoadIO();
|
||||
extern void ksNesLoad4015();
|
||||
extern void ksNesLoad4017();
|
||||
extern void ksNesLoad4016();
|
||||
extern void ksNesStoreWRAM();
|
||||
extern void ksNesStoreBBRAM();
|
||||
extern void ksNesStoreInvalid();
|
||||
extern void ksNesStorePPU();
|
||||
extern void ksNesStore2000();
|
||||
extern void ksNesStorePPURam();
|
||||
extern void ksNesStore2004();
|
||||
extern void ksNesStore2005();
|
||||
extern void ksNesStore2006();
|
||||
extern void ksNesStore2007ChrRom();
|
||||
extern void ksNesStoreIO();
|
||||
extern void ksNesStoreQDSound();
|
||||
extern void ksNesStore4017();
|
||||
extern void ksNesStore4011();
|
||||
extern void ksNesStore4015();
|
||||
extern void ksNesStore4003();
|
||||
extern void ksNesStore4000();
|
||||
extern void ksNesStore4014();
|
||||
extern void ksNesStore4016();
|
||||
extern void ksNesInst_wdm_42();
|
||||
extern void ksNesLinecntIrqQD();
|
||||
extern void ksNesStoreQD_4020();
|
||||
extern void ksNesStoreQD_4022();
|
||||
extern void ksNesStoreQD_4023();
|
||||
extern void ksNesStoreQD_4024();
|
||||
extern void ksNesStoreQD_4025();
|
||||
extern void ksNesStoreQD_4026();
|
||||
extern void ksNesStore01_8000();
|
||||
extern void ksNesStore02_8000();
|
||||
extern void ksNesStore03_6000();
|
||||
extern void ksNesLinecntIrq04();
|
||||
extern void ksNesStore04_8000();
|
||||
extern void ksNesStore04_a000();
|
||||
extern void ksNesStore04_c000();
|
||||
extern void ksNesStore04_e000();
|
||||
extern void ksNesLinecntIrq05Timer();
|
||||
extern void ksNesLinecntIrq05Vcount();
|
||||
extern void ksNesStore05_4000();
|
||||
extern void ksNesStore05_5130();
|
||||
extern void ksNesStore05_5100();
|
||||
extern void ksNesStore05_5113();
|
||||
extern void ksNesStore05_5101();
|
||||
extern void ksNesStore05_5120();
|
||||
extern void ksNesStore05_5128();
|
||||
extern void ksNesStore05_5102();
|
||||
extern void ksNesStore05_5104();
|
||||
extern void ksNesStore05_5105();
|
||||
extern void ksNesStore05_5106();
|
||||
extern void ksNesLoad05_4000();
|
||||
extern void ksNesStore07_8000();
|
||||
extern void ksNesStore09_8000();
|
||||
extern void ksNesStore09_a000();
|
||||
extern void ksNesStore09_c000();
|
||||
extern void ksNesStore09_e000();
|
||||
extern void ksNesStore0a_8000();
|
||||
extern void ksNesStore0a_a000();
|
||||
extern void ksNesLinecntIrq49();
|
||||
extern void ksNesStore12_8000();
|
||||
extern void ksNesStore12_a000();
|
||||
extern void ksNesStore12_e000();
|
||||
extern void ksNesStore13_4000();
|
||||
extern void ksNesLoad13_4000();
|
||||
extern void ksNesStore13_8000();
|
||||
extern void ksNesStore13_c000();
|
||||
extern void ksNesStore13_e000();
|
||||
extern void ksNesStore16_8000();
|
||||
extern void ksNesStore16_9000();
|
||||
extern void ksNesStore16_a000();
|
||||
extern void ksNesStore16_b000();
|
||||
extern void ksNesStore17_a000();
|
||||
extern void ksNesStore17_b000();
|
||||
extern void ksNesStore17_e000();
|
||||
extern void ksNesLinecntIrq18();
|
||||
extern void ksNesStore18_8000();
|
||||
extern void ksNesStore18_a000();
|
||||
extern void ksNesStore18_c000();
|
||||
extern void ksNesStore18_e000();
|
||||
extern void ksNesLinecntIrq19();
|
||||
extern void ksNesStore19_8000();
|
||||
extern void ksNesStore19_a000();
|
||||
extern void ksNesStore19_b000();
|
||||
extern void ksNesStore19_e000();
|
||||
extern void ksNesStore42_8000();
|
||||
extern void ksNesLinecntIrq43();
|
||||
extern void ksNesStore43_c000();
|
||||
extern void ksNesStore44_8000();
|
||||
extern void ksNesStore44_c000();
|
||||
extern void ksNesStore44_e000();
|
||||
extern void ksNesStore45_8000();
|
||||
extern void ksNesStore45_a000();
|
||||
extern void ksNesStore46_8000();
|
||||
extern void ksNesStore49_a000();
|
||||
extern void ksNesStore49_c000();
|
||||
extern void ksNesStore4b_8000();
|
||||
extern void ksNesStore4b_a000();
|
||||
extern void ksNesStore4b_e000();
|
||||
extern void ksNesStore56_6000();
|
||||
extern void ksNesStore57_6000();
|
||||
extern void ksNesStore59_c000();
|
||||
extern void ksNesStore5d_6000();
|
||||
extern void ksNesStoreb8_6000();
|
||||
|
||||
// set:
|
||||
// keep ksNesStateObj->wram state
|
||||
// unset:
|
||||
// init ksNesStateObj->wram with a pattern
|
||||
#define KS_NES_FLAG_KEEP_WRAM_STATE = (1 << 0) // 0x00000001
|
||||
|
||||
// set:
|
||||
// chr ram unchanged?
|
||||
// unset:
|
||||
// clear chr ram
|
||||
#define KS_NES_FLAG_NO_INIT_CHR_RAM = (1 << 1) // 0x00000002
|
||||
|
||||
// set:
|
||||
// sp->chr_size = 0x20000
|
||||
// unset:
|
||||
// chr size unchanged?
|
||||
// #define KS_NES_FLAG_??? = (1 << 3) // 0x00000008
|
||||
|
||||
// something about CHR RAM and BB RAM initialization.
|
||||
// #define KS_NES_FLAG_??? = (1 << 4) // 0x00000010
|
||||
|
||||
// set:
|
||||
// don't initialize ksNesStateObj->palette_normal
|
||||
// unset:
|
||||
// init ksNesStateObj->palette_normal with ksNesPaletteNormal
|
||||
#define KS_NES_FLAG_NO_INIT_PALETTE = (1 << 5) // 0x00000020
|
||||
|
||||
// set:
|
||||
// skip some sound initializing stuff
|
||||
// unset:
|
||||
// init sound stuff
|
||||
#define KS_NES_FLAG_NO_INIT_SOUND = (1 << 6) // 0x00000040
|
||||
|
||||
// unknown
|
||||
// #define KS_NES_FLAG_??? = (1 << 10) // 0x00000400
|
||||
|
||||
// something to do with sound every frame
|
||||
// #define KS_NES_FLAG_??? = (1 << 12) // 0x00001000
|
||||
|
||||
// unknown
|
||||
// #define KS_NES_FLAG_??? = (1 << 14) // 0x00004000
|
||||
|
||||
#endif
|
||||
|
||||
@@ -8,4 +8,6 @@ extern void ksNesDrawInit(ksNesCommonWorkObj* wp);
|
||||
extern void ksNesDraw(ksNesCommonWorkObj* wp, ksNesStateObj* sp);
|
||||
extern void ksNesDrawEnd();
|
||||
|
||||
extern u8 ksNesPaletteNormal[];
|
||||
|
||||
#endif
|
||||
|
||||
@@ -12,7 +12,7 @@ extern void EmuSound_Exit();
|
||||
extern void Sound_Write(u16 event, u8 value, u16 maybe_frames);
|
||||
|
||||
extern void Sound_Reset();
|
||||
extern u8 Sound_Read(u16 param_1, u32 param_2, u32 param_3, u32 param_4, u32 param_5);
|
||||
extern u8 Sound_Read(u16 reg_addr);
|
||||
extern void Sound_SetC000(u8* romTop);
|
||||
extern void Sound_SetE000(u8* romTop);
|
||||
extern void Sound_SetMMC(u8 mmcMode);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,12 @@
|
||||
|
||||
#include "Famicom/ks_nes_draw.h"
|
||||
|
||||
u8 ksNesPaletteNormal[] = {
|
||||
0xc2, 0x10, 0x80, 0x17, 0x98, 0x17, 0xc0, 0x14, 0xdc, 0x0d, 0xd8, 0x03, 0xd8, 0x00, 0xc8, 0x80, 0xbc, 0xa0, 0x80,
|
||||
0xe0, 0x81, 0x21, 0x80, 0xe4, 0x80, 0xac, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xe7, 0x39, 0x81, 0x7f, 0xa0, 0xff,
|
||||
0xd8, 0xd9, 0xfc, 0xd5, 0xfc, 0xcb, 0xfc, 0xc3, 0xe9, 0x20, 0xe1, 0x80, 0x9d, 0xe0, 0x8e, 0x02, 0x82, 0x4c, 0x82,
|
||||
0x18, 0x88, 0x42, 0x80, 0x00, 0x80, 0x00, 0xff, 0xff, 0x82, 0x5f, 0xb6, 0x1f, 0xe9, 0xbf, 0xfd, 0xd9, 0xfd, 0xb3,
|
||||
0xfd, 0xeb, 0xfe, 0x4b, 0xfe, 0x86, 0xd2, 0xe0, 0xab, 0x6d, 0xa7, 0x55, 0x83, 0x7f, 0xb1, 0x8c, 0x80, 0x00, 0x80,
|
||||
0x00, 0xff, 0xff, 0xc2, 0xff, 0xde, 0xff, 0xea, 0xff, 0xfe, 0xfd, 0xfe, 0xf9, 0xff, 0x16, 0xff, 0x35, 0xff, 0x74,
|
||||
0xe7, 0x93, 0xd7, 0xb6, 0xd7, 0xdd, 0xdb, 0xbf, 0xef, 0x7b, 0x80, 0x00, 0x80, 0x00,
|
||||
};
|
||||
Reference in New Issue
Block a user