X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2FPicoInt.h;h=0daac2e094bb61354fc313414f0afc27948563d2;hb=b06778874d140bd5187cb74444ddc40931b9bd1d;hp=bd9122a667e18408fbc478d43d3861fc41e51248;hpb=053fd9b42f2cf38194f78e37c373363fc9cb9933;p=picodrive.git diff --git a/Pico/PicoInt.h b/Pico/PicoInt.h index bd9122a..0daac2e 100644 --- a/Pico/PicoInt.h +++ b/Pico/PicoInt.h @@ -237,7 +237,8 @@ struct PicoVideo int status; // Status bits unsigned char pending_ints; // pending interrupts: ??VH???? signed char lwrite_cnt; // VDP write count during active display line - unsigned char pad[0x12]; + unsigned short v_counter; // V-counter + unsigned char pad[0x10]; }; struct PicoMisc @@ -245,7 +246,7 @@ struct PicoMisc unsigned char rotate; unsigned char z80Run; unsigned char padTHPhase[2]; // 02 phase of gamepad TH switches - short scanline; // 04 0 to 261||311; -1 in fast mode + unsigned short scanline; // 04 0 to 261||311 char dirtyPal; // 06 Is the palette dirty (1 - change @ this frame, 2 - some time before) unsigned char hardware; // 07 Hardware value for country unsigned char pal; // 08 1=PAL 0=NTSC @@ -371,8 +372,8 @@ typedef struct // Area.c -PICO_INTERNAL int PicoAreaPackCpu(unsigned char *cpu, int is_sub); -PICO_INTERNAL int PicoAreaUnpackCpu(unsigned char *cpu, int is_sub); +PICO_INTERNAL void PicoAreaPackCpu(unsigned char *cpu, int is_sub); +PICO_INTERNAL void PicoAreaUnpackCpu(unsigned char *cpu, int is_sub); extern void (*PicoLoadStateHook)(void); // cd/Area.c @@ -394,14 +395,15 @@ extern void (*PicoCartUnloadHook)(void); int CM_compareRun(int cyc, int is_sub); // Draw.c -PICO_INTERNAL int PicoLine(int scan); PICO_INTERNAL void PicoFrameStart(void); +void PicoDrawSync(int to, int blank_last_line); +extern int DrawScanline; // Draw2.c PICO_INTERNAL void PicoFrameFull(); // Memory.c -PICO_INTERNAL int PicoInitPc(unsigned int pc); +PICO_INTERNAL void PicoInitPc(unsigned int pc); PICO_INTERNAL unsigned int PicoCheckPc(unsigned int pc); PICO_INTERNAL_ASM unsigned int PicoRead32(unsigned int a); PICO_INTERNAL void PicoMemSetup(void); @@ -435,20 +437,20 @@ extern struct Pico Pico; extern struct PicoSRAM SRam; extern int emustatus; extern void (*PicoResetHook)(void); -extern void (*PicoLineHook)(int count); +extern void (*PicoLineHook)(void); PICO_INTERNAL int CheckDMA(void); PICO_INTERNAL void PicoDetectRegion(void); PICO_INTERNAL void PicoSyncZ80(int m68k_cycles_done); // cd/Pico.c -PICO_INTERNAL int PicoInitMCD(void); +PICO_INTERNAL void PicoInitMCD(void); PICO_INTERNAL void PicoExitMCD(void); PICO_INTERNAL void PicoPowerMCD(void); -PICO_INTERNAL int PicoResetMCD(void); -PICO_INTERNAL int PicoFrameMCD(void); +PICO_INTERNAL int PicoResetMCD(void); +PICO_INTERNAL void PicoFrameMCD(void); // Pico/Pico.c -PICO_INTERNAL int PicoInitPico(void); +PICO_INTERNAL void PicoInitPico(void); PICO_INTERNAL void PicoReratePico(void); // Pico/xpcm.c @@ -457,25 +459,25 @@ PICO_INTERNAL void PicoPicoPCMReset(void); PICO_INTERNAL void PicoPicoPCMRerate(int xpcm_rate); // Sek.c -PICO_INTERNAL int SekInit(void); -PICO_INTERNAL int SekReset(void); +PICO_INTERNAL void SekInit(void); +PICO_INTERNAL int SekReset(void); PICO_INTERNAL void SekState(int *data); PICO_INTERNAL void SekSetRealTAS(int use_real); void SekInitIdleDet(void); void SekFinishIdleDet(void); // cd/Sek.c -PICO_INTERNAL int SekInitS68k(void); -PICO_INTERNAL int SekResetS68k(void); -PICO_INTERNAL int SekInterruptS68k(int irq); +PICO_INTERNAL void SekInitS68k(void); +PICO_INTERNAL int SekResetS68k(void); +PICO_INTERNAL int SekInterruptS68k(int irq); // sound/sound.c PICO_INTERNAL void cdda_start_play(); extern short cdda_out_buffer[2*1152]; extern int PsndLen_exc_cnt; extern int PsndLen_exc_add; -extern int timer_a_next_oflow, timer_a_step, timer_a_offset; // in z80 cycles -extern int timer_b_next_oflow, timer_b_step, timer_b_offset; +extern int timer_a_next_oflow, timer_a_step; // in z80 cycles +extern int timer_b_next_oflow, timer_b_step; void ym2612_sync_timers(int z80_cycles, int mode_old, int mode_new); void ym2612_pack_state(void); @@ -496,13 +498,14 @@ void ym2612_unpack_state(void); #define timers_reset() \ timer_a_next_oflow = timer_b_next_oflow = TIMER_NO_OFLOW; \ - timer_a_step = timer_a_offset = TIMER_A_TICK_ZCYCLES * 1024; \ - timer_b_step = timer_b_offset = TIMER_B_TICK_ZCYCLES * 256; + timer_a_step = TIMER_A_TICK_ZCYCLES * 1024; \ + timer_b_step = TIMER_B_TICK_ZCYCLES * 256; // VideoPort.c PICO_INTERNAL_ASM void PicoVideoWrite(unsigned int a,unsigned short d); PICO_INTERNAL_ASM unsigned int PicoVideoRead(unsigned int a); +PICO_INTERNAL_ASM unsigned int PicoVideoRead8(unsigned int a); extern int (*PicoDmaHook)(unsigned int source, int len, unsigned short **srcp, unsigned short **limitp); // Misc.c