From 7c5c3482e7fdddc213ee8aaffde3b7e592d9b93f Mon Sep 17 00:00:00 2001 From: nattthebear Date: Sun, 25 Jun 2017 09:19:32 -0400 Subject: [PATCH] pizza: RTC, maybe --- .../Consoles/Nintendo/Gameboy/LibPizza.cs | 1 + .../Consoles/Nintendo/Gameboy/Pizza.cs | 2 + .../Consoles/SNK/NeoGeoPort.cs | 31 +- .../Waterbox/WaterboxCore.cs | 35 ++ output/dll/pizza.wbx.gz | Bin 59915 -> 60075 bytes waterbox/pizza/lib/cycles.c | 336 +++++++++--------- waterbox/pizza/lib/cycles.h | 29 +- waterbox/pizza/lib/gameboy.c | 326 +++++++++-------- waterbox/pizza/lib/global.c | 1 + waterbox/pizza/lib/global.h | 3 + waterbox/pizza/lib/gpu.c | 2 - waterbox/pizza/lib/mmu.c | 52 +-- waterbox/pizza/lib/mmu.h | 130 ++++--- waterbox/pizza/pizza.c | 2 + 14 files changed, 451 insertions(+), 499 deletions(-) diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/LibPizza.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/LibPizza.cs index dd60e92de3..e8306aea35 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/LibPizza.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/LibPizza.cs @@ -26,6 +26,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy [StructLayout(LayoutKind.Sequential)] public new class FrameInfo : LibWaterboxCore.FrameInfo { + public long Time; public Buttons Keys; } [BizImport(CC)] diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Pizza.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Pizza.cs index 727dc8faf3..836923fea3 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Pizza.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Pizza.cs @@ -56,6 +56,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy BufferWidth = 256; BufferHeight = 224; } + InitializeRtc(new DateTime(2010, 1, 1)); // TODO: connect to syncsettings Console.WriteLine("Pizza Initialized: CGB {0} SGB {1}", IsCGBMode(), IsSGBMode()); } @@ -124,6 +125,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy { return _tmp = new LibPizza.FrameInfo { + Time = GetRtcTime(false), Keys = GetButtons(controller) }; } diff --git a/BizHawk.Emulation.Cores/Consoles/SNK/NeoGeoPort.cs b/BizHawk.Emulation.Cores/Consoles/SNK/NeoGeoPort.cs index 1b41de8eaf..b7f1f06b28 100644 --- a/BizHawk.Emulation.Cores/Consoles/SNK/NeoGeoPort.cs +++ b/BizHawk.Emulation.Cores/Consoles/SNK/NeoGeoPort.cs @@ -23,8 +23,6 @@ namespace BizHawk.Emulation.Cores.Consoles.SNK ISettable { internal LibNeoGeoPort _neopop; - private long _clockTime; - private int _clockDen; [CoreConstructor("NGP")] public NeoGeoPort(CoreComm comm, byte[] rom, SyncSettings syncSettings, bool deterministic) @@ -66,47 +64,22 @@ namespace BizHawk.Emulation.Cores.Consoles.SNK PostInit(); DeterministicEmulation = deterministic || !_syncSettings.UseRealTime; - _clockTime = (long)((_syncSettings.InitialTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds); + InitializeRtc(_syncSettings.InitialTime); } protected override LibWaterboxCore.FrameInfo FrameAdvancePrep(IController controller, bool render, bool rendersound) { - _clockDen += VsyncDenominator; - if (_clockDen >= VsyncNumerator) - { - _clockDen -= VsyncNumerator; - _clockTime++; - } - - long clockTime = DeterministicEmulation ? _clockTime : (long)((_syncSettings.InitialTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds); - if (controller.IsPressed("Power")) _neopop.HardReset(); return new LibNeoGeoPort.FrameInfo { - FrontendTime = clockTime, + FrontendTime = GetRtcTime(!DeterministicEmulation), Buttons = GetButtons(controller), SkipRendering = render ? 0 : 1, }; } - #region IStatable - - protected override void SaveStateBinaryInternal(BinaryWriter writer) - { - writer.Write(_clockTime); - writer.Write(_clockDen); - } - - protected override void LoadStateBinaryInternal(BinaryReader reader) - { - _clockTime = reader.ReadInt64(); - _clockDen = reader.ReadInt32(); - } - - #endregion - #region Controller private static int GetButtons(IController c) diff --git a/BizHawk.Emulation.Cores/Waterbox/WaterboxCore.cs b/BizHawk.Emulation.Cores/Waterbox/WaterboxCore.cs index 29181e2530..02824114a5 100644 --- a/BizHawk.Emulation.Cores/Waterbox/WaterboxCore.cs +++ b/BizHawk.Emulation.Cores/Waterbox/WaterboxCore.cs @@ -88,6 +88,36 @@ namespace BizHawk.Emulation.Cores.Waterbox } } + #region RTC + + private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0); + private long _clockTime; + private int _clockRemainder; + + protected void InitializeRtc(DateTime start) + { + _clockTime = (long)(start - Epoch).TotalSeconds; + } + + protected long GetRtcTime(bool realTime) + { + if (realTime && DeterministicEmulation) + throw new InvalidOperationException(); + return realTime ? (long)(DateTime.Now - Epoch).TotalSeconds : _clockTime; + } + + private void AdvanceRtc() + { + _clockRemainder += VsyncDenominator; + if (_clockRemainder >= VsyncNumerator) + { + _clockRemainder -= VsyncNumerator; + _clockTime++; + } + } + + #endregion + #region ISaveRam private LibWaterboxCore.MemoryArea[] _saveramAreas; @@ -179,6 +209,7 @@ namespace BizHawk.Emulation.Cores.Waterbox Frame++; if (IsLagFrame = frame.Lagged != 0) LagCount++; + AdvanceRtc(); BufferWidth = frame.Width; BufferHeight = frame.Height; @@ -246,6 +277,8 @@ namespace BizHawk.Emulation.Cores.Waterbox IsLagFrame = reader.ReadBoolean(); BufferWidth = reader.ReadInt32(); BufferHeight = reader.ReadInt32(); + _clockTime = reader.ReadInt64(); + _clockRemainder = reader.ReadInt32(); // reset pointers here! _core.SetInputCallback(null); //_exe.PrintDebuggingInfo(); @@ -261,6 +294,8 @@ namespace BizHawk.Emulation.Cores.Waterbox writer.Write(IsLagFrame); writer.Write(BufferWidth); writer.Write(BufferHeight); + writer.Write(_clockTime); + writer.Write(_clockRemainder); SaveStateBinaryInternal(writer); } diff --git a/output/dll/pizza.wbx.gz b/output/dll/pizza.wbx.gz index 66eb3a5fb351d6214cee8c5ce412b9875fc2d325..df14acf5009ef8b14d3e900bf4aaf13117d5d207 100644 GIT binary patch literal 60075 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

^fLHR>x0Vq?YOSCt=eiT_#?6oeaNW99Oq>T>On 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 diff --git a/waterbox/pizza/lib/cycles.c b/waterbox/pizza/lib/cycles.c index 19da4ba499..f8a350462e 100644 --- a/waterbox/pizza/lib/cycles.c +++ b/waterbox/pizza/lib/cycles.c @@ -18,8 +18,6 @@ */ #include -#include - #include "cycles.h" #include "global.h" #include "gpu.h" @@ -33,91 +31,90 @@ interrupts_flags_t *cycles_if; /* instance of the main struct */ -cycles_t cycles = { 0, 0, 0, 0 }; +cycles_t cycles = {0, 0, 0, 0}; #define CYCLES_PAUSES 256 /* hard sync stuff (for remote connection) */ -uint8_t cycles_hs_mode = 0; +uint8_t cycles_hs_mode = 0; /* type of next */ -typedef enum -{ - CYCLES_NEXT_TYPE_CYCLES, - CYCLES_NEXT_TYPE_CYCLES_HS, - CYCLES_NEXT_TYPE_DMA, +typedef enum { + CYCLES_NEXT_TYPE_CYCLES, + CYCLES_NEXT_TYPE_CYCLES_HS, + CYCLES_NEXT_TYPE_DMA, } cycles_next_type_enum_e; /* closest next and its type */ -uint_fast32_t cycles_very_next; -cycles_next_type_enum_e cycles_next_type; +uint_fast32_t cycles_very_next; +cycles_next_type_enum_e cycles_next_type; /* set hard sync mode. sync is given by the remote peer + local timer */ void cycles_start_hs() { - utils_log("Hard sync mode ON\n"); + utils_log("Hard sync mode ON\n"); - /* boolean set to on */ - cycles_hs_mode = 1; + /* boolean set to on */ + cycles_hs_mode = 1; } void cycles_stop_hs() { - utils_log("Hard sync mode OFF\n"); + utils_log("Hard sync mode OFF\n"); - /* boolean set to on */ - cycles_hs_mode = 0; + /* boolean set to on */ + cycles_hs_mode = 0; } /* set double or normal speed */ void cycles_set_speed(char dbl) { - /* set global */ - global_cpu_double_speed = dbl; + /* set global */ + global_cpu_double_speed = dbl; - /* update clock */ - if (global_cpu_double_speed) - cycles.clock = 4194304 * 2; - else - cycles.clock = 4194304; + /* update clock */ + if (global_cpu_double_speed) + cycles.clock = 4194304 * 2; + else + cycles.clock = 4194304; - /* calculate the mask */ - cycles_change_emulation_speed(); + /* calculate the mask */ + cycles_change_emulation_speed(); } /* set emulation speed */ void cycles_change_emulation_speed() { - cycles.step = ((4194304 / CYCLES_PAUSES) - << global_cpu_double_speed); + cycles.step = ((4194304 / CYCLES_PAUSES) + << global_cpu_double_speed); } void cycles_closest_next() { - int_fast32_t diff = cycles.cnt - cycles.next; + int_fast32_t diff = cycles.cnt - cycles.next; - /* init */ - cycles_very_next = cycles.next; - cycles_next_type = CYCLES_NEXT_TYPE_CYCLES; + /* init */ + cycles_very_next = cycles.next; + cycles_next_type = CYCLES_NEXT_TYPE_CYCLES; - int_fast32_t diff_new = cycles.cnt - mmu.dma_next; + int_fast32_t diff_new = cycles.cnt - mmu.dma_next; - /* DMA? */ - if (diff_new < diff) - { - /* this is the new lowest */ - cycles_very_next = mmu.dma_next; - cycles_next_type = CYCLES_NEXT_TYPE_DMA; - } + /* DMA? */ + if (diff_new < diff) + { + /* this is the new lowest */ + cycles_very_next = mmu.dma_next; + cycles_next_type = CYCLES_NEXT_TYPE_DMA; + } } /* this function is gonna be called every M-cycle = 4 ticks of CPU */ void cycles_step() { - cycles.cnt += 4; + cycles.cnt += 4; cycles.sampleclock += 2 >> global_cpu_double_speed; -/* + /* while (cycles.cnt >= cycles_very_next) { switch (cycles_next_type) @@ -157,173 +154,168 @@ void cycles_step() } */ - /* 65536 == cpu clock / CYCLES_PAUSES pauses every second */ - if (cycles.cnt == cycles.next) - { - cycles.next += cycles.step; + /* 65536 == cpu clock / CYCLES_PAUSES pauses every second */ + if (cycles.cnt == cycles.next) + { + cycles.next += cycles.step; + } - /* update current running seconds */ - if (cycles.cnt % cycles.clock == 0) - cycles.seconds++; - } + /* hard sync next step */ + if (cycles.cnt == cycles.hs_next) + { + /* set cycles for hard sync */ + cycles.hs_next += ((4096 * 4) << global_cpu_double_speed); - /* hard sync next step */ - if (cycles.cnt == cycles.hs_next) - { - /* set cycles for hard sync */ - cycles.hs_next += ((4096 * 4) << global_cpu_double_speed); + /* hard sync is on? */ + if (cycles_hs_mode) + { + /* send my status and wait for peer status back */ + serial_send_byte(); - /* hard sync is on? */ - if (cycles_hs_mode) - { - /* send my status and wait for peer status back */ - serial_send_byte(); + /* wait for reply */ + serial_wait_data(); - /* wait for reply */ - serial_wait_data(); + /* verify if we need to trigger an interrupt */ + serial_verify_intr(); + } + } - /* verify if we need to trigger an interrupt */ - serial_verify_intr(); - } - } + /* DMA */ + if (mmu.dma_next == cycles.cnt) + { + memcpy(&mmu.memory[0xFE00], &mmu.memory[mmu.dma_address], 160); - /* DMA */ - if (mmu.dma_next == cycles.cnt) - { - memcpy(&mmu.memory[0xFE00], &mmu.memory[mmu.dma_address], 160); + /* reset address */ + mmu.dma_address = 0x0000; - /* reset address */ - mmu.dma_address = 0x0000; + /* reset */ + mmu.dma_next = 1; + } - /* reset */ - mmu.dma_next = 1; - } + /* update GPU state */ + if (gpu.next == cycles.cnt) + gpu_step(); - /* update GPU state */ - if (gpu.next == cycles.cnt) - gpu_step(); + /* fs clock */ + if (sound.fs_cycles_next == cycles.cnt) + sound_step_fs(); - /* fs clock */ - if (sound.fs_cycles_next == cycles.cnt) - sound_step_fs(); - - /* channel one */ - if (sound.channel_one.duty_cycles_next == cycles.cnt) - sound_step_ch1(); + /* channel one */ + if (sound.channel_one.duty_cycles_next == cycles.cnt) + sound_step_ch1(); - /* channel two */ - if (sound.channel_two.duty_cycles_next == cycles.cnt) - sound_step_ch2(); - - /* channel three */ - if (sound.channel_three.cycles_next <= cycles.cnt) - sound_step_ch3(); - - /* channel four */ - if (sound.channel_four.cycles_next == cycles.cnt) - sound_step_ch4(); + /* channel two */ + if (sound.channel_two.duty_cycles_next == cycles.cnt) + sound_step_ch2(); - /* update timer state */ - if (cycles.cnt == timer.next) - { - timer.next += 256; - timer.div++; - } + /* channel three */ + if (sound.channel_three.cycles_next <= cycles.cnt) + sound_step_ch3(); - /* timer is on? */ - if (timer.sub_next == cycles.cnt) - { - timer.sub_next += timer.threshold; - timer.cnt++; - - /* cnt value > 255? trigger an interrupt */ - if (timer.cnt > 255) - { - timer.cnt = timer.mod; + /* channel four */ + if (sound.channel_four.cycles_next == cycles.cnt) + sound_step_ch4(); - /* trigger timer interrupt */ - cycles_if->timer = 1; - } - } + /* update timer state */ + if (cycles.cnt == timer.next) + { + timer.next += 256; + timer.div++; + } - /* update serial state */ - if (serial.next == cycles.cnt) - { - /* nullize serial next */ - serial.next -= 1; + /* timer is on? */ + if (timer.sub_next == cycles.cnt) + { + timer.sub_next += timer.threshold; + timer.cnt++; - /* reset counter */ - serial.bits_sent = 0; + /* cnt value > 255? trigger an interrupt */ + if (timer.cnt > 255) + { + timer.cnt = timer.mod; - /* gotta reply with 0xff when asking for ff01 */ - serial.data = 0xFF; + /* trigger timer interrupt */ + cycles_if->timer = 1; + } + } - /* reset transfer_start flag to yell I'M DONE */ - serial.transfer_start = 0; - - /* if not connected, trig the fucking interrupt */ - cycles_if->serial_io = 1; - } + /* update serial state */ + if (serial.next == cycles.cnt) + { + /* nullize serial next */ + serial.next -= 1; + + /* reset counter */ + serial.bits_sent = 0; + + /* gotta reply with 0xff when asking for ff01 */ + serial.data = 0xFF; + + /* reset transfer_start flag to yell I'M DONE */ + serial.transfer_start = 0; + + /* if not connected, trig the fucking interrupt */ + cycles_if->serial_io = 1; + } } /* things to do when vsync kicks in */ void cycles_vblank() { - return; - + return; } /* stuff tied to entering into hblank state */ void cycles_hdma() { - /* HDMA (only CGB) */ - if (mmu.hdma_to_transfer) - { - /* hblank transfer */ - if (mmu.hdma_transfer_mode) - { - /* transfer when line is changed and we're into HBLANK phase */ - if (mmu.memory[0xFF44] < 143 && - mmu.hdma_current_line != mmu.memory[0xFF44] && - (mmu.memory[0xFF41] & 0x03) == 0x00) - { - /* update current line */ - mmu.hdma_current_line = mmu.memory[0xFF44]; + /* HDMA (only CGB) */ + if (mmu.hdma_to_transfer) + { + /* hblank transfer */ + if (mmu.hdma_transfer_mode) + { + /* transfer when line is changed and we're into HBLANK phase */ + if (mmu.memory[0xFF44] < 143 && + mmu.hdma_current_line != mmu.memory[0xFF44] && + (mmu.memory[0xFF41] & 0x03) == 0x00) + { + /* update current line */ + mmu.hdma_current_line = mmu.memory[0xFF44]; - /* copy 0x10 bytes */ - if (mmu.vram_idx) - memcpy(mmu_addr_vram1() + mmu.hdma_dst_address - 0x8000, - &mmu.memory[mmu.hdma_src_address], 0x10); - else - memcpy(mmu_addr_vram0() + mmu.hdma_dst_address - 0x8000, - &mmu.memory[mmu.hdma_src_address], 0x10); + /* copy 0x10 bytes */ + if (mmu.vram_idx) + memcpy(mmu_addr_vram1() + mmu.hdma_dst_address - 0x8000, + &mmu.memory[mmu.hdma_src_address], 0x10); + else + memcpy(mmu_addr_vram0() + mmu.hdma_dst_address - 0x8000, + &mmu.memory[mmu.hdma_src_address], 0x10); - /* decrease bytes to transfer */ - mmu.hdma_to_transfer -= 0x10; + /* decrease bytes to transfer */ + mmu.hdma_to_transfer -= 0x10; - /* increase pointers */ - mmu.hdma_dst_address += 0x10; - mmu.hdma_src_address += 0x10; - } - } - } + /* increase pointers */ + mmu.hdma_dst_address += 0x10; + mmu.hdma_src_address += 0x10; + } + } + } } char cycles_init() { - cycles.inited = 1; + cycles.inited = 1; - /* interrupt registers */ - cycles_if = mmu_addr(0xFF0F); + /* interrupt registers */ + cycles_if = mmu_addr(0xFF0F); - /* init clock and counter */ - cycles.clock = 4194304; - cycles.cnt = 0; - cycles.hs_next = 70224; + /* init clock and counter */ + cycles.clock = 4194304; + cycles.cnt = 0; + cycles.hs_next = 70224; - /* mask for pauses cycles fast calc */ - cycles.step = 4194304 / CYCLES_PAUSES; - cycles.next = 4194304 / CYCLES_PAUSES; + /* mask for pauses cycles fast calc */ + cycles.step = 4194304 / CYCLES_PAUSES; + cycles.next = 4194304 / CYCLES_PAUSES; - return 0; + return 0; } diff --git a/waterbox/pizza/lib/cycles.h b/waterbox/pizza/lib/cycles.h index 39cf216552..58c7c2bb4c 100644 --- a/waterbox/pizza/lib/cycles.h +++ b/waterbox/pizza/lib/cycles.h @@ -25,26 +25,23 @@ typedef struct cycles_s { - /* am i init'ed? */ - uint_fast32_t inited; - - /* ticks counter */ - uint64_t cnt; + /* am i init'ed? */ + uint_fast32_t inited; - // CPU clock. advances at 4MHz or 8MHz depending on current cgb setting - uint_fast32_t clock; + /* ticks counter */ + uint64_t cnt; - /* handy for calculation */ - uint64_t next; + // CPU clock. advances at 4MHz or 8MHz depending on current cgb setting + uint_fast32_t clock; - /* step varying on cpu and emulation speed */ - uint_fast32_t step; + /* handy for calculation */ + uint64_t next; - /* total running seconds */ - uint_fast32_t seconds; + /* step varying on cpu and emulation speed */ + uint_fast32_t step; - /* 2 spares */ - uint64_t hs_next; + /* 2 spares */ + uint64_t hs_next; // reference clock. advances at 2MHz always uint64_t sampleclock; @@ -56,7 +53,7 @@ extern cycles_t cycles; // extern uint8_t cycles_hs_peer_cnt; /* callback function */ -typedef void (*cycles_send_cb_t) (uint32_t v); +typedef void (*cycles_send_cb_t)(uint32_t v); /* prototypes */ void cycles_change_emulation_speed(); diff --git a/waterbox/pizza/lib/gameboy.c b/waterbox/pizza/lib/gameboy.c index 6fd8fc7977..be64e6436d 100644 --- a/waterbox/pizza/lib/gameboy.c +++ b/waterbox/pizza/lib/gameboy.c @@ -19,8 +19,6 @@ #include #include -#include -#include #include "cartridge.h" #include "sound.h" #include "mmu.h" @@ -36,206 +34,202 @@ char gameboy_inited = 0; - void gameboy_init() { - /* init z80 */ - z80_init(); + /* init z80 */ + z80_init(); - /* init cycles syncronizer */ - cycles_init(); + /* init cycles syncronizer */ + cycles_init(); - /* init timer */ - timer_init(); + /* init timer */ + timer_init(); - /* init serial */ - serial_init(); + /* init serial */ + serial_init(); - /* init sound (this will start audio thread) */ - sound_init(); + /* init sound (this will start audio thread) */ + sound_init(); - /* reset GPU counters */ - gpu_reset(); + /* reset GPU counters */ + gpu_reset(); - /* reset to default values */ - mmu_write_no_cyc(0xFF05, 0x00); - mmu_write_no_cyc(0xFF06, 0x00); - mmu_write_no_cyc(0xFF07, 0x00); - mmu_write_no_cyc(0xFF10, 0x80); - mmu_write_no_cyc(0xFF11, 0xBF); - mmu_write_no_cyc(0xFF12, 0xF3); - mmu_write_no_cyc(0xFF14, 0xBF); - mmu_write_no_cyc(0xFF16, 0x3F); - mmu_write_no_cyc(0xFF17, 0x00); - mmu_write_no_cyc(0xFF19, 0xBF); - mmu_write_no_cyc(0xFF1A, 0x7F); - mmu_write_no_cyc(0xFF1B, 0xFF); - mmu_write_no_cyc(0xFF1C, 0x9F); - mmu_write_no_cyc(0xFF1E, 0xBF); - mmu_write_no_cyc(0xFF20, 0xFF); - mmu_write_no_cyc(0xFF21, 0x00); - mmu_write_no_cyc(0xFF22, 0x00); - mmu_write_no_cyc(0xFF23, 0xBF); - mmu_write_no_cyc(0xFF24, 0x77); - mmu_write_no_cyc(0xFF25, 0xF3); - mmu_write_no_cyc(0xFF26, 0xF1); - mmu_write_no_cyc(0xFF40, 0x91); - mmu_write_no_cyc(0xFF41, 0x80); - mmu_write_no_cyc(0xFF42, 0x00); - mmu_write_no_cyc(0xFF43, 0x00); - mmu_write_no_cyc(0xFF44, 0x00); - mmu_write_no_cyc(0xFF45, 0x00); - mmu_write_no_cyc(0xFF47, 0xFC); - mmu_write_no_cyc(0xFF48, 0xFF); - mmu_write_no_cyc(0xFF49, 0xFF); - mmu_write_no_cyc(0xFF4A, 0x00); - mmu_write_no_cyc(0xFF4B, 0x00); - mmu_write_no_cyc(0xFF98, 0xDC); - mmu_write_no_cyc(0xFFFF, 0x00); - mmu_write_no_cyc(0xC000, 0x08); - mmu_write_no_cyc(0xFFFE, 0x69); + /* reset to default values */ + mmu_write_no_cyc(0xFF05, 0x00); + mmu_write_no_cyc(0xFF06, 0x00); + mmu_write_no_cyc(0xFF07, 0x00); + mmu_write_no_cyc(0xFF10, 0x80); + mmu_write_no_cyc(0xFF11, 0xBF); + mmu_write_no_cyc(0xFF12, 0xF3); + mmu_write_no_cyc(0xFF14, 0xBF); + mmu_write_no_cyc(0xFF16, 0x3F); + mmu_write_no_cyc(0xFF17, 0x00); + mmu_write_no_cyc(0xFF19, 0xBF); + mmu_write_no_cyc(0xFF1A, 0x7F); + mmu_write_no_cyc(0xFF1B, 0xFF); + mmu_write_no_cyc(0xFF1C, 0x9F); + mmu_write_no_cyc(0xFF1E, 0xBF); + mmu_write_no_cyc(0xFF20, 0xFF); + mmu_write_no_cyc(0xFF21, 0x00); + mmu_write_no_cyc(0xFF22, 0x00); + mmu_write_no_cyc(0xFF23, 0xBF); + mmu_write_no_cyc(0xFF24, 0x77); + mmu_write_no_cyc(0xFF25, 0xF3); + mmu_write_no_cyc(0xFF26, 0xF1); + mmu_write_no_cyc(0xFF40, 0x91); + mmu_write_no_cyc(0xFF41, 0x80); + mmu_write_no_cyc(0xFF42, 0x00); + mmu_write_no_cyc(0xFF43, 0x00); + mmu_write_no_cyc(0xFF44, 0x00); + mmu_write_no_cyc(0xFF45, 0x00); + mmu_write_no_cyc(0xFF47, 0xFC); + mmu_write_no_cyc(0xFF48, 0xFF); + mmu_write_no_cyc(0xFF49, 0xFF); + mmu_write_no_cyc(0xFF4A, 0x00); + mmu_write_no_cyc(0xFF4B, 0x00); + mmu_write_no_cyc(0xFF98, 0xDC); + mmu_write_no_cyc(0xFFFF, 0x00); + mmu_write_no_cyc(0xC000, 0x08); + mmu_write_no_cyc(0xFFFE, 0x69); - if (global_cgb) - state.a = 0x11; - else - state.a = 0x00; + if (global_cgb) + state.a = 0x11; + else + state.a = 0x00; - state.b = 0x00; - state.c = 0x13; - state.d = 0x00; - state.e = 0xd8; - state.h = 0x01; - state.l = 0x4d; - state.pc = 0x0100; - state.sp = 0xFFFE; - *state.f = 0xB0; + state.b = 0x00; + state.c = 0x13; + state.d = 0x00; + state.e = 0xd8; + state.h = 0x01; + state.l = 0x4d; + state.pc = 0x0100; + state.sp = 0xFFFE; + *state.f = 0xB0; - /* reset counter */ - cycles.cnt = 0; - /* start at normal speed */ - global_cpu_double_speed = 0; + /* reset counter */ + cycles.cnt = 0; + /* start at normal speed */ + global_cpu_double_speed = 0; - /* mark as inited */ - gameboy_inited = 1; + /* mark as inited */ + gameboy_inited = 1; - return; + return; } void gameboy_run(uint64_t target) { - uint8_t op; + uint8_t op; - /* get interrupt flags and interrupt enables */ - uint8_t *int_e; - uint8_t *int_f; + /* get interrupt flags and interrupt enables */ + uint8_t *int_e; + uint8_t *int_f; - /* pointers to memory location of interrupt enables/flags */ - int_e = mmu_addr(0xFFFF); - int_f = mmu_addr(0xFF0F); + /* pointers to memory location of interrupt enables/flags */ + int_e = mmu_addr(0xFFFF); + int_f = mmu_addr(0xFF0F); - /* run stuff! */ - /* mechanism is simple. */ - /* 1) execute instruction 2) update cycles counter 3) check interrupts */ - /* and repeat forever */ - while (cycles.sampleclock < target) - { - /* get op */ - op = mmu_read(state.pc); + /* run stuff! */ + /* mechanism is simple. */ + /* 1) execute instruction 2) update cycles counter 3) check interrupts */ + /* and repeat forever */ + while (cycles.sampleclock < target) + { + /* get op */ + op = mmu_read(state.pc); - /* print out CPU state if enabled by debug flag */ - if (global_debug) - { - utils_log("OP: %02x F: %02x PC: %04x:%02x:%02x SP: %04x:%02x:%02x ", - op, *state.f & 0xd0, state.pc, - mmu_read_no_cyc(state.pc + 1), - mmu_read_no_cyc(state.pc + 2), state.sp, - mmu_read_no_cyc(state.sp), - mmu_read_no_cyc(state.sp + 1)); + /* print out CPU state if enabled by debug flag */ + if (global_debug) + { + utils_log("OP: %02x F: %02x PC: %04x:%02x:%02x SP: %04x:%02x:%02x ", + op, *state.f & 0xd0, state.pc, + mmu_read_no_cyc(state.pc + 1), + mmu_read_no_cyc(state.pc + 2), state.sp, + mmu_read_no_cyc(state.sp), + mmu_read_no_cyc(state.sp + 1)); + utils_log("A: %02x BC: %04x DE: %04x HL: %04x FF41: %02x " + "FF44: %02x ENAB: %02x INTE: %02x INTF: %02x\n", + state.a, *state.bc, + *state.de, *state.hl, + mmu_read_no_cyc(0xFF41), + mmu_read_no_cyc(0xFF44), + state.int_enable, + *int_e, *int_f); + } - utils_log("A: %02x BC: %04x DE: %04x HL: %04x FF41: %02x " - "FF44: %02x ENAB: %02x INTE: %02x INTF: %02x\n", - state.a, *state.bc, - *state.de, *state.hl, - mmu_read_no_cyc(0xFF41), - mmu_read_no_cyc(0xFF44), - state.int_enable, - *int_e, *int_f); - } + /* execute instruction by the GB Z80 version */ + z80_execute(op); - /* execute instruction by the GB Z80 version */ - z80_execute(op); + /* if last op was Interrupt Enable (0xFB) */ + /* we need to check for INTR on next cycle */ + if (op == 0xFB) + continue; - /* if last op was Interrupt Enable (0xFB) */ - /* we need to check for INTR on next cycle */ - if (op == 0xFB) - continue; + /* interrupts filtered by enable flags */ + uint8_t int_r = (*int_f & *int_e); - /* interrupts filtered by enable flags */ - uint8_t int_r = (*int_f & *int_e); + /* check for interrupts */ + if ((state.int_enable || op == 0x76) && (int_r != 0)) + { + /* discard useless bits */ + if ((int_r & 0x1F) == 0x00) + continue; - /* check for interrupts */ - if ((state.int_enable || op == 0x76) && (int_r != 0)) - { - /* discard useless bits */ - if ((int_r & 0x1F) == 0x00) - continue; + /* beware of instruction that doesn't move PC! */ + /* like HALT (0x76) */ + if (op == 0x76) + { + state.pc++; - /* beware of instruction that doesn't move PC! */ - /* like HALT (0x76) */ - if (op == 0x76) - { - state.pc++; + if (state.int_enable == 0) + continue; + } - if (state.int_enable == 0) - continue; - } + /* reset int-enable flag, it will be restored after a RETI op */ + state.int_enable = 0; - /* reset int-enable flag, it will be restored after a RETI op */ - state.int_enable = 0; + if ((int_r & 0x01) == 0x01) + { + /* vblank interrupt triggers RST 5 */ - if ((int_r & 0x01) == 0x01) - { - /* vblank interrupt triggers RST 5 */ + /* reset flag */ + *int_f &= 0xFE; - /* reset flag */ - *int_f &= 0xFE; + /* handle the interrupt */ + z80_intr(0x0040); + } + else if ((int_r & 0x02) == 0x02) + { + /* LCD Stat interrupt */ - /* handle the interrupt */ - z80_intr(0x0040); - } - else if ((int_r & 0x02) == 0x02) - { - /* LCD Stat interrupt */ + /* reset flag */ + *int_f &= 0xFD; - /* reset flag */ - *int_f &= 0xFD; + /* handle the interrupt! */ + z80_intr(0x0048); + } + else if ((int_r & 0x04) == 0x04) + { + /* timer interrupt */ - /* handle the interrupt! */ - z80_intr(0x0048); - } - else if ((int_r & 0x04) == 0x04) - { - /* timer interrupt */ + /* reset flag */ + *int_f &= 0xFB; - /* reset flag */ - *int_f &= 0xFB; + /* handle the interrupt! */ + z80_intr(0x0050); + } + else if ((int_r & 0x08) == 0x08) + { + /* serial interrupt */ - /* handle the interrupt! */ - z80_intr(0x0050); - } - else if ((int_r & 0x08) == 0x08) - { - /* serial interrupt */ + /* reset flag */ + *int_f &= 0xF7; - /* reset flag */ - *int_f &= 0xF7; - - /* handle the interrupt! */ - z80_intr(0x0058); - } - } - } - - return; + /* handle the interrupt! */ + z80_intr(0x0058); + } + } + } } diff --git a/waterbox/pizza/lib/global.c b/waterbox/pizza/lib/global.c index 8f0818dd94..e14d158dc3 100644 --- a/waterbox/pizza/lib/global.c +++ b/waterbox/pizza/lib/global.c @@ -31,6 +31,7 @@ char global_rumble; char global_window; // if true, show window int global_lagged; void (*global_input_callback)(void); +int64_t global_currenttime; void global_init() { diff --git a/waterbox/pizza/lib/global.h b/waterbox/pizza/lib/global.h index dbc477bcc6..06e3cff320 100644 --- a/waterbox/pizza/lib/global.h +++ b/waterbox/pizza/lib/global.h @@ -20,6 +20,8 @@ #ifndef __GLOBAL__ #define __GLOBAL__ +#include + extern char global_window; extern char global_debug; extern char global_cgb; @@ -30,6 +32,7 @@ extern char global_rumble; extern char global_cart_name[256]; extern int global_lagged; extern void (*global_input_callback)(void); +extern int64_t global_currenttime; /* prototypes */ void global_init(); diff --git a/waterbox/pizza/lib/gpu.c b/waterbox/pizza/lib/gpu.c index 8f4ee2c848..44859f824d 100644 --- a/waterbox/pizza/lib/gpu.c +++ b/waterbox/pizza/lib/gpu.c @@ -17,10 +17,8 @@ */ -#include #include #include -#include #include "cycles.h" #include "gameboy.h" diff --git a/waterbox/pizza/lib/mmu.c b/waterbox/pizza/lib/mmu.c index 4fe931f3f2..8a8bc9b30b 100644 --- a/waterbox/pizza/lib/mmu.c +++ b/waterbox/pizza/lib/mmu.c @@ -32,7 +32,6 @@ #include #include #include -#include #include "sgb.h" #include @@ -140,7 +139,6 @@ void mmu_init(uint8_t c, uint8_t rn) mmu.dma_cycles = 0; mmu.dma_address = 0; mmu.rtc_mode = 0; - time(&mmu.rtc_time); /* reset memory */ bzero(mmu.memory, 65536); @@ -207,7 +205,7 @@ uint8_t mmu_read(uint16_t a) { if (mmu.rtc_mode != 0x00) { - time_t diff = mmu.rtc_latch_time - mmu.rtc_time; + int64_t diff = mmu.rtc_latch_time - mmu.rtc_time; switch (mmu.rtc_mode) { @@ -358,47 +356,6 @@ void mmu_save_saveram(uint8_t* dest, int sz) } } -void mmu_restore_rtc(char *fn) -{ - /* save only if cartridge got a battery */ - if (mmu.carttype == 0x10 || - mmu.carttype == 0x13) - { - FILE *fp = fopen(fn, "r+"); - - /* it could be not present */ - if (fp == NULL) - { - /* just pick current time */ - time(&mmu.rtc_time); - return; - } - - /* read last saved time */ - fscanf(fp, "%ld", &mmu.rtc_time); - - fclose(fp); - } -} - -void mmu_save_rtc(char *fn) -{ - /* save only if cartridge got a battery */ - if (mmu.carttype == 0x10 || - mmu.carttype == 0x13) - { - FILE *fp = fopen(fn, "w+"); - - if (fp == NULL) - { - printf("Error saving RTC\n"); - return; - } - - fprintf(fp, "%ld", mmu.rtc_time); - } -} - void mmu_set_rumble_cb(mmu_rumble_cb_t cb) { mmu_rumble_cb = cb; @@ -428,10 +385,9 @@ void mmu_write(uint16_t a, uint8_t v) /* wanna access to RTC register? */ if (a >= 0xA000 && a <= 0xBFFF && mmu.rtc_mode != 0x00) { - time_t t,s1,s2,m1,m2,h1,h2,d1,d2,days; + int64_t t,s1,s2,m1,m2,h1,h2,d1,d2,days; - /* get current time */ - time(&t); + t = global_currenttime; /* extract parts in seconds from current and ref times */ s1 = t % 60; @@ -727,7 +683,7 @@ void mmu_write(uint16_t a, uint8_t v) else if (a >= 0x6000 && a <= 0x7FFF) { /* latch clock data. move clock data to RTC registers */ - time(&mmu.rtc_latch_time); + mmu.rtc_latch_time = global_currenttime; } diff --git a/waterbox/pizza/lib/mmu.h b/waterbox/pizza/lib/mmu.h index 4fda013058..cc36b8e0cc 100644 --- a/waterbox/pizza/lib/mmu.h +++ b/waterbox/pizza/lib/mmu.h @@ -22,93 +22,91 @@ #include #include -#include -typedef struct mmu_s { - /* main 64K of memory */ - uint8_t memory[65536]; +typedef struct mmu_s +{ + /* main 64K of memory */ + uint8_t memory[65536]; - /* vram in standby */ - uint8_t vram0[0x2000]; - uint8_t vram1[0x2000]; + /* vram in standby */ + uint8_t vram0[0x2000]; + uint8_t vram1[0x2000]; - /* vram current idx */ - uint8_t vram_idx; - uint8_t spare; - uint16_t spare2; + /* vram current idx */ + uint8_t vram_idx; + uint8_t spare; + uint16_t spare2; - // cartridge RAM - uint8_t ram_external_enabled; - uint8_t ram_current_bank; + // cartridge RAM + uint8_t ram_external_enabled; + uint8_t ram_current_bank; - /* cartridge type */ - uint8_t carttype; + /* cartridge type */ + uint8_t carttype; - /* number of switchable roms */ - uint8_t roms; + /* number of switchable roms */ + uint8_t roms; - /* current ROM bank */ - uint8_t rom_current_bank; + /* current ROM bank */ + uint8_t rom_current_bank; - /* type of banking */ - uint8_t banking; + /* type of banking */ + uint8_t banking; - /* working RAM (only CGB) */ - uint8_t wram[0x8000]; + /* working RAM (only CGB) */ + uint8_t wram[0x8000]; - /* current WRAM bank (only CGB) */ - uint8_t wram_current_bank; - uint8_t spare3; - uint16_t spare4; + /* current WRAM bank (only CGB) */ + uint8_t wram_current_bank; + uint8_t spare3; + uint16_t spare4; - /* DMA transfer stuff */ - uint_fast16_t dma_address; - uint_fast16_t dma_cycles; + /* DMA transfer stuff */ + uint_fast16_t dma_address; + uint_fast16_t dma_cycles; - /* HDMA transfer stuff */ - uint16_t hdma_src_address; - uint16_t hdma_dst_address; - uint16_t hdma_to_transfer; - uint8_t hdma_transfer_mode; - uint8_t hdma_current_line; + /* HDMA transfer stuff */ + uint16_t hdma_src_address; + uint16_t hdma_dst_address; + uint16_t hdma_to_transfer; + uint8_t hdma_transfer_mode; + uint8_t hdma_current_line; - /* RTC stuff */ - uint8_t rtc_mode; - uint8_t spare5; - uint16_t spare6; - time_t rtc_time; - time_t rtc_latch_time; + /* RTC stuff */ + uint8_t rtc_mode; + int64_t rtc_time; + int64_t rtc_latch_time; - uint64_t dma_next; + uint64_t dma_next; } mmu_t; extern mmu_t mmu; /* callback function */ -typedef void (*mmu_rumble_cb_t) (uint8_t onoff); +typedef void (*mmu_rumble_cb_t)(uint8_t onoff); /* functions prototypes */ -void *mmu_addr(uint16_t a); -void *mmu_addr_vram0(); -void *mmu_addr_vram1(); -void mmu_dump_all(); -void mmu_init(uint8_t c, uint8_t rn); -void mmu_init_ram(uint32_t c); -void mmu_load(uint8_t *data, size_t sz, uint16_t a); -void mmu_load_cartridge(const uint8_t *data, size_t sz); -void mmu_move(uint16_t d, uint16_t s); -uint8_t mmu_read_no_cyc(uint16_t a); -uint8_t mmu_read(uint16_t a); -unsigned int mmu_read_16(uint16_t a); +void *mmu_addr(uint16_t a); +void *mmu_addr_vram0(); +void *mmu_addr_vram1(); +void mmu_dump_all(); +void mmu_init(uint8_t c, uint8_t rn); +void mmu_init_ram(uint32_t c); +void mmu_load(uint8_t *data, size_t sz, uint16_t a); +void mmu_load_cartridge(const uint8_t *data, size_t sz); +void mmu_move(uint16_t d, uint16_t s); +uint8_t mmu_read_no_cyc(uint16_t a); +uint8_t mmu_read(uint16_t a); +unsigned int mmu_read_16(uint16_t a); int mmu_saveram_size(void); -void mmu_restore_saveram(const uint8_t* data, int sz); -void mmu_save_saveram(uint8_t* dest, int sz); -void mmu_restore_rtc(char *fn); -void mmu_save_rtc(char *fn); -void mmu_set_rumble_cb(mmu_rumble_cb_t cb); -void mmu_step(); -void mmu_write_no_cyc(uint16_t a, uint8_t v); -void mmu_write(uint16_t a, uint8_t v); -void mmu_write_16(uint16_t a, uint16_t v); +void mmu_restore_saveram(const uint8_t *data, int sz); +void mmu_save_saveram(uint8_t *dest, int sz); +void mmu_restore_rtc(char *fn); +void mmu_save_rtc(char *fn); +void mmu_set_rumble_cb(mmu_rumble_cb_t cb); +void mmu_step(); +void mmu_write_no_cyc(uint16_t a, uint8_t v); +void mmu_write(uint16_t a, uint8_t v); +void mmu_write_16(uint16_t a, uint16_t v); #endif diff --git a/waterbox/pizza/pizza.c b/waterbox/pizza/pizza.c index 0736f7ef89..70f6083146 100644 --- a/waterbox/pizza/pizza.c +++ b/waterbox/pizza/pizza.c @@ -93,6 +93,7 @@ typedef struct int32_t Height; int32_t Samples; int32_t Lagged; + int64_t Time; uint32_t Keys; } MyFrameInfo; @@ -107,6 +108,7 @@ EXPORT void FrameAdvance(MyFrameInfo *frame) input_set_keys(frame->Keys); current_vbuff = frame->VideoBuffer; global_lagged = 1; + global_currenttime = frame->Time; uint64_t current = cycles.sampleclock; uint64_t target = current + 35112 - overflow;