From 1ebdb695167c8a3afa4da8ec8470886c57a0d751 Mon Sep 17 00:00:00 2001 From: byuu Date: Mon, 1 Jan 2007 21:04:34 +0000 Subject: [PATCH] Update to bsnes v019 release. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I´m releasing bsnes v0.019 today. This version contains Bandai Sufami Turbo support, new IRQ emulation code, and some various bugfixes. Unfortunately, this release is not entirely cause for celebration. Due to fatal errors in Microsoft´s "enterprise class" c++ compiler package, I am no longer able to compile bsnes with profile guided optimizations. I have tested v0.018 with and without these optimizations, and the difference is a 40% speedup when PGO is used, even more significant than I had previously believed. However, bsnes has now become too complex for Visual C++ to handle. Unfortunately, there is nothing I can do about this, except wait for Microsoft to fix their compiler. (Warning: this paragraph contains personal opinions, skip it if you can´t handle that) As if this wasn´t enough, I´m now doing my best to wean my dependence from Microsoft´s line of operating systems, as I´m particularly concerned about the black box nature of Vista and its´ DRM control mechanisms. This isn´t a road I wish to begin traveling down, and thusly have no interest in upgrading to future versions of Windows. Therefore, as of late, I´ve been writing a UI wrapper that will allow me to code applications that are truly platform independent. The biggest goal for this library is to design a GUI for bsnes that runs virtually identically on both Windows and Linux/BSD. This is mostly complete, however there were many tricks I used in bsnes using the win32 API that I simply cannot do with GTK+ on Linux/BSD, such as the memory editor window subclassing. I will be porting bsnes to use this new UI wrapper, and in turn this will lessen the attractiveness / functionality of the bsnes UI to a certain degree. Perhaps the most devastating news is that I am still contemplating the idea of designing a dot-based PPU renderer for bsnes. As if the loss of PGO wasn´t bad enough, this will likely eat away an unimaginable level of performance as well. I can only estimate the speed loss being between 100-500%. Yes, it will be that bad. And despite weeks of planning, I cannot think of a way to allow a scanline-based and dot-based renderer to coexist as selectable options, given their massive differences in implementation. And let´s not even joke about SA-1 or SuperFX support ... those processors are each four to eight times more powerful than the SNES´ main CPU. All of these speed losses will basically make bsnes mostly irrelevant as an alternative to ZSNES, SNES9x et al. Although I believe I really came close to a viable alternative with v0.018, I know that I cannot both create a mainstream emulator, as well as keep with my original goal to emulate the SNES as accurately as possible. The past few months have been very tough for me; trying to decide which of the above two goals to pursue. I´ve still not absolutely made up my mind. But for now, I´ve been sitting on a mostly untouched version of bsnes for the last few months, and have decided to release it to the public, profile guided optimizations be damned. I´m once again asking for help, if anyone can figure out why bsnes won´t compile with PGO support, please let me know. I´d very much like to get one last PGO build of bsnes released before starting on a dot-based PPU renderer. But given the usual response I get from these requests for help, I´d suggest no one getting their hopes up that bsnes will ever be as fast as it once was again. The new version can be downloaded at the usual place. I´m leaving v0.018 up, as it may very well be the last stable, fast version of bsnes ever released. --- bsnes_accurate.exe | Bin 1540096 -> 0 bytes bsnes_fast.exe | Bin 1544192 -> 0 bytes cart.db | Bin 1384 -> 0 bytes readme.txt | 28 +- src/base.h | 3 +- src/cart/cart.cpp | 444 ++++-------------- src/cart/cart.h | 49 +- src/cart/cart_file.cpp | 61 +++ src/cart/cart_header.cpp | 149 ++++++ src/cart/cart_normal.cpp | 66 +++ src/cart/cart_st.cpp | 45 ++ src/cart/cart_stdual.cpp | 66 +++ src/cart/db/cart.db | Bin 1384 -> 3276 bytes src/cart/db/cartdb.txt | 88 +++- src/cart/db/dbcreate.cpp | 18 +- src/cheat/cheat.cpp | 6 +- src/cheat/cheat.h | 4 +- src/chip/obc1/obc1.cpp | 42 +- src/config/config.cpp | 98 ++-- src/config/config.h | 15 +- src/cpu/cpu.h | 1 - src/cpu/scpu/core/op_misc.b | 8 +- src/cpu/scpu/core/op_misc.cpp | 8 +- src/cpu/scpu/core/op_rmw.b | 32 +- src/cpu/scpu/core/op_rmw.cpp | 48 +- src/cpu/scpu/core/opfn.cpp | 112 +++-- src/cpu/scpu/dma/dma.cpp | 27 +- src/cpu/scpu/dma/dma.h | 1 + src/cpu/scpu/mmio/mmio.cpp | 65 +-- src/cpu/scpu/scpu.cpp | 2 +- src/cpu/scpu/scpu.h | 20 +- src/cpu/scpu/timing/irq.cpp | 25 +- src/cpu/scpu/timing/irqtiming.cpp | 105 +++++ src/cpu/scpu/timing/irqtiming_accurate.cpp | 76 --- src/cpu/scpu/timing/irqtiming_fast.cpp | 111 ----- src/cpu/scpu/timing/joypad.cpp | 4 +- src/cpu/scpu/timing/timeshift.cpp | 8 +- src/cpu/scpu/timing/timing.cpp | 74 +-- src/cpu/scpu/timing/timing.h | 13 +- src/dsp/bdsp/bdsp.cpp | 2 +- src/lib/libbase.h | 136 +++++- src/lib/libco_win32.cpp | 82 ++-- src/lib/libco_win32.h | 27 +- src/lib/libco_x86.asm | 132 +++--- src/lib/libco_x86.h | 27 +- src/lib/libconfig.cpp | 45 +- src/lib/libconfig.h | 18 +- src/lib/libfile.h | 66 +-- src/lib/libsort.h | 34 ++ src/lib/libstring.cpp | 118 +++-- src/lib/libstring.h | 94 +++- src/lib/libstring_int.cpp | 5 + src/lib/libstring_oo.cpp | 83 ++++ src/lib/libstring_replace.cpp | 12 +- src/lib/libstring_split.cpp | 4 +- src/lib/libstring_sprintf.cpp | 2 +- src/lib/libups.h | 40 +- src/lib/libwin32_button.cpp | 10 +- src/lib/libwin32_checkbox.cpp | 12 +- src/lib/libwin32_combobox.cpp | 14 +- src/lib/libwin32_control.cpp | 4 +- src/lib/libwin32_editbox.cpp | 20 +- src/lib/libwin32_groupbox.cpp | 12 +- src/lib/libwin32_label.cpp | 20 +- src/lib/libwin32_listbox.cpp | 14 +- src/lib/libwin32_listview.cpp | 12 +- src/lib/libwin32_radiobox.cpp | 10 +- src/lib/libwin32_slider.cpp | 12 +- src/lib/libwin32_window.cpp | 24 +- src/lib/opgen_s.cpp | 2 +- src/memory/bmemory/bmemory.cpp | 4 +- src/memory/bmemory/bmemory_mapper_generic.cpp | 10 +- src/memory/bmemory/mapper/mapper.cpp | 32 +- src/memory/bmemory/mapper/mapper.h | 2 + src/memory/bmemory/mapper/mapper_pcb.cpp | 24 + src/ppu/bppu/bppu.cpp | 15 +- src/ppu/bppu/bppu_mmio.cpp | 16 +- src/ppu/bppu/bppu_render_cache.cpp | 28 +- src/ppu/bppu/bppu_render_oam.cpp | 11 +- src/reader/jmareader.cpp | 2 +- src/reader/jmareader.h | 2 +- src/reader/reader.cpp | 2 +- src/reader/reader.h | 2 +- src/reader/zipreader.cpp | 2 +- src/reader/zipreader.h | 2 +- src/smp/smp.h | 1 - src/smp/ssmp/core/op_mov.b | 40 +- src/smp/ssmp/core/op_mov.cpp | 61 +-- src/smp/ssmp/core/op_read.b | 8 +- src/smp/ssmp/core/op_read.cpp | 17 +- src/smp/ssmp/core/opfn.cpp | 62 ++- src/smp/ssmp/memory/memory.cpp | 71 +-- src/smp/ssmp/timing/timing.cpp | 3 +- src/snes/audio/audio.cpp | 22 +- src/snes/audio/audio.h | 12 +- src/snes/input/input.cpp | 6 +- src/snes/input/input.h | 12 +- src/snes/interface/interface.h | 20 + src/snes/scheduler/scheduler.cpp | 17 +- src/snes/scheduler/scheduler.h | 14 +- src/snes/snes.cpp | 2 +- src/snes/snes.h | 3 +- src/snes/video/filter_ntsc_core.h | 6 +- src/snes/video/video.cpp | 7 +- src/snes/video/video.h | 17 +- src/ui/Makefile | 18 +- src/ui/audio/dsound.cpp | 2 +- src/ui/cc.bat | 2 +- src/ui/input/input.cpp | 8 +- src/ui/interface.cpp | 31 ++ src/ui/main.cpp | 26 +- src/ui/video/d3d.cpp | 13 +- src/ui/video/d3d.h | 34 +- src/ui/video/ddraw.cpp | 7 +- src/ui/video/ddraw.h | 25 +- src/ui/video/video.cpp | 18 +- src/ui/video/video.h | 30 +- src/ui/win/bsnes.cpp | 57 +-- src/ui/win/bsnes.h | 29 +- src/ui/win/debugger/debugger.cpp | 4 +- src/ui/win/debugger/ui_debugger.cpp | 10 +- src/ui/win/event.cpp | 65 ++- src/ui/win/event.h | 5 +- src/ui/win/main.cpp | 13 +- src/ui/win/settings/ui_cheateditor.cpp | 2 +- src/ui/win/settings/ui_coloradjust.cpp | 16 +- src/ui/win/settings/ui_emusettings.cpp | 4 +- src/ui/win/ui.cpp | 12 +- src/ui/win/ui.h | 4 + src/ui/win/ui_main.cpp | 34 +- 130 files changed, 2281 insertions(+), 1758 deletions(-) delete mode 100644 bsnes_accurate.exe delete mode 100644 bsnes_fast.exe delete mode 100644 cart.db create mode 100644 src/cart/cart_file.cpp create mode 100644 src/cart/cart_header.cpp create mode 100644 src/cart/cart_normal.cpp create mode 100644 src/cart/cart_st.cpp create mode 100644 src/cart/cart_stdual.cpp create mode 100644 src/cpu/scpu/timing/irqtiming.cpp delete mode 100644 src/cpu/scpu/timing/irqtiming_accurate.cpp delete mode 100644 src/cpu/scpu/timing/irqtiming_fast.cpp create mode 100644 src/lib/libsort.h create mode 100644 src/lib/libstring_int.cpp create mode 100644 src/lib/libstring_oo.cpp create mode 100644 src/snes/interface/interface.h create mode 100644 src/ui/interface.cpp diff --git a/bsnes_accurate.exe b/bsnes_accurate.exe deleted file mode 100644 index 71a8c95c409d5204528c7528dcb2d1db0bdcb405..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1540096 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�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�@)(SxC;WqKjT}02oI<<41 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𝔒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

~vNT&BuMk;*O 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�@)(b$|p*Ha? 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 aP#?r!rZNZ094K?3%z-io${fhcf&T+~tA=3! diff --git a/cart.db b/cart.db deleted file mode 100644 index 83609d43d738fffdb3dd4f16d8343fe64da57269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1384 zcmWIca}9QJTEoD6{cV*?YLS9ZVqSVtW^pl)so|AakeH{b5Um)?Ko=0~5$3FG=xFS# zYixksLInl}AUgBzrzsA%YJ?f;8ERtJOjS{0-70x{uO!f|NtFu0C5bsXnfZAN>Xv5o z4O^#RP_UZ%>KYj02m@enH!v{d2DMBJ%Fj*AOU}$oR|rmYPlUS@60USe3b1f>(ls=~ z?pOhE8fZ$6P7exjR|qLC%`Pn}RWO1%6}u*yh(f~E98b6^0PSUDh+{dhG&nW6D78c( zKTW~4EVU>%zbI8fBQ)5NZn+B*u3o^rWrQPdIe^2}t!RH-aDHiCih^H$S!xbEeCb&j rz{AxLhf^6q;*1O_aw}896Z2A1i&Be<71E0Ga}^?s=^LyJ#HLpO9*S~5 diff --git a/readme.txt b/readme.txt index 0e4762af..93926220 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ bsnes -Version 0.018 +Version 0.019 Author: byuu @@ -14,29 +14,6 @@ http://byuu.org/ Please see license.txt for important licensing information. -Known Bugs ----------- -Koushien 2 (J): -- Severity: critical -- Issue: game periodically crashes -- Cause: unknown, possibly S-SMP related - -Mega lo Mania (J): -- Severity: minor -- Issue: horizontal line flickering during intro -- Cause: caching of OAM occurs too early. Not fixable without dot-based PPU core - -Street Racer (J): -- Severity: minor -- Issue: track sometimes flickers every several frames -- Cause: unknown, possibly timing related - -Unirally (J), Uniracers (U, E): -- Severity: critical -- Issue: 2-player mode sprites do not display at the correct positions -- Cause: mid-frame OAM writes. Not fixable without dot-based PPU core - - Known Limitations ----------------- S-CPU @@ -108,9 +85,6 @@ BS-X Flashcart Flash cartridge used by BS-X, as well as some standalone games by Asciisoft -Bandai Sufami Turbo -Special cartloader to play some Bandai games - Super Gameboy Cartridge passthrough used for playing Gameboy games diff --git a/src/base.h b/src/base.h index 66624047..a8d9d52f 100644 --- a/src/base.h +++ b/src/base.h @@ -1,4 +1,4 @@ -#define BSNES_VERSION "0.018.04" +#define BSNES_VERSION "0.019" #define BSNES_TITLE "bsnes v" BSNES_VERSION #define MEMCORE bMemBus @@ -34,6 +34,7 @@ #endif #include "lib/libbase.h" +#include "lib/libsort.h" #include "lib/libco_x86.h" #include "lib/libarray.h" #include "lib/libvector.h" diff --git a/src/cart/cart.cpp b/src/cart/cart.cpp index 612a1170..2f66c6b2 100644 --- a/src/cart/cart.cpp +++ b/src/cart/cart.cpp @@ -1,9 +1,20 @@ #include "../base.h" #include "database.cpp" +#include "cart_file.cpp" +#include "cart_header.cpp" + Cartridge cartridge; -void Cartridge::read_dbi() { +#include "cart_normal.cpp" +#include "cart_st.cpp" +#include "cart_stdual.cpp" + +void Cartridge::load_begin(uint cart_type) { + if(loaded() == true)return; + + info.type = cart_type; + info.srtc = false; info.sdd1 = false; info.c4 = false; @@ -13,372 +24,89 @@ void Cartridge::read_dbi() { info.dsp1_mapper = 0; - info.header_index = 0x7fc0; + info.header_index = 0xffc0; info.mapper = PCB; - strcpy(info.name, dbi.name); - strcpy(info.pcb, dbi.pcb); + strcpy(info.name, ""); + strcpy(info.pcb, ""); info.region = NTSC; info.cart_mmio = false; - info.rom_size = dbi.rom; - info.ram_size = dbi.ram; -} + info.rom_size = 0; + info.ram_size = 0; -void Cartridge::read_header() { - info.srtc = false; - info.sdd1 = false; - info.c4 = false; - info.dsp1 = false; - info.dsp2 = false; - info.obc1 = false; - - info.dsp1_mapper = 0; - - if(info.header_index == 0x7fc0 && info.rom_size >= 0x401000) { - info.mapper = EXLOROM; - strcpy(info.pcb, "UNL-EXLOROM"); - } else if(info.header_index == 0x7fc0 && rom[info.header_index + MAPPER] == 0x32) { - info.mapper = EXLOROM; - strcpy(info.pcb, "UNL-EXLOROM"); - } else if(info.header_index == 0x7fc0) { - info.mapper = LOROM; - strcpy(info.pcb, "UNL-LOROM"); - } else if(info.header_index == 0xffc0) { - info.mapper = HIROM; - strcpy(info.pcb, "UNL-HIROM"); - } else { //info.header_index == 0x40ffc0 - info.mapper = EXHIROM; - strcpy(info.pcb, "UNL-EXHIROM"); - } - -uint8 mapper = rom[info.header_index + MAPPER]; -uint8 rom_type = rom[info.header_index + ROM_TYPE]; - if(mapper == 0x35 && rom_type == 0x55) { - info.srtc = true; - } - - if(mapper == 0x32 && (rom_type == 0x43 || rom_type == 0x45)) { - info.sdd1 = true; - } - - if(mapper == 0x20 && rom_type == 0xf3) { - info.c4 = true; - } - - if((mapper == 0x20 || mapper == 0x21) && rom_type == 0x03) { - info.dsp1 = true; - } - - if(mapper == 0x30 && rom_type == 0x05) { - info.dsp1 = true; - } - - if(mapper == 0x31 && (rom_type == 0x03 || rom_type == 0x05)) { - info.dsp1 = true; - } - - if(info.dsp1 == true) { - if((mapper & 0x2f) == 0x20 && info.rom_size <= 0x100000) { - info.dsp1_mapper = DSP1_LOROM_1MB; - } else if((mapper & 0x2f) == 0x20) { - info.dsp1_mapper = DSP1_LOROM_2MB; - } else if((mapper & 0x2f) == 0x21) { - info.dsp1_mapper = DSP1_HIROM; - } - } - - if(mapper == 0x20 && rom_type == 0x05) { - info.dsp2 = true; - } - - if(mapper == 0x30 && rom_type == 0x25) { - info.obc1 = true; - } - - info.cart_mmio = info.c4 | info.dsp1 | info.dsp2 | info.obc1; - - if(rom[info.header_index + SRAM_SIZE] & 7) { - info.ram_size = 1024 << (rom[info.header_index + SRAM_SIZE] & 7); - } else { - info.ram_size = 0; - } - - memcpy(&info.name, &rom[info.header_index + CART_NAME], 21); - info.name[21] = 0; - - for(int i = 0; i < 22; i++) { - if(info.name[i] & 0x80) { - info.name[i] = '?'; - } + file.count = 0; + for(int i = 0; i < 8; i++) { + strcpy(file.rom_name[i], ""); + strcpy(file.ram_name[i], ""); + file.rom_size[i] = 0; + file.ram_size[i] = 0; + file.rom_data[i] = 0; + file.ram_data[i] = 0; } } -void Cartridge::find_header() { -int32 score_lo = 0, - score_hi = 0, - score_ex = 0; +void Cartridge::load(const char *rom_fn) { + if(!rom_fn || !*rom_fn)return; - if(info.rom_size < 0x010000) { - //cart too small to be anything but lorom - info.header_index = 0x007fc0; - return; - } - - if((rom[0x7fc0 + MAPPER] & ~0x10) == 0x20)score_lo++; - if((rom[0xffc0 + MAPPER] & ~0x10) == 0x21)score_hi++; - - if(rom[0x7fc0 + ROM_TYPE] < 0x08)score_lo++; - if(rom[0xffc0 + ROM_TYPE] < 0x08)score_hi++; - - if(rom[0x7fc0 + ROM_SIZE] < 0x10)score_lo++; - if(rom[0xffc0 + ROM_SIZE] < 0x10)score_hi++; - - if(rom[0x7fc0 + SRAM_SIZE] < 0x08)score_lo++; - if(rom[0xffc0 + SRAM_SIZE] < 0x08)score_hi++; - - if(rom[0x7fc0 + REGION] < 14)score_lo++; - if(rom[0xffc0 + REGION] < 14)score_hi++; - - if(rom[0x7fc0 + LICENSE] < 3)score_lo++; - if(rom[0xffc0 + LICENSE] < 3)score_hi++; - - if(rom[0x7fc0 + RESH] & 0x80)score_lo += 2; - if(rom[0xffc0 + RESH] & 0x80)score_hi += 2; - -uint16 cksum, icksum; - cksum = rom[0x7fc0 + CKSUM] | (rom[0x7fc0 + CKSUM + 1] << 8); - icksum = rom[0x7fc0 + ICKSUM] | (rom[0x7fc0 + ICKSUM + 1] << 8); - if((cksum + icksum) == 0xffff && (cksum != 0) && (icksum != 0)) { - score_lo += 8; - } - - cksum = rom[0xffc0 + CKSUM] | (rom[0xffc0 + CKSUM + 1] << 8); - icksum = rom[0xffc0 + ICKSUM] | (rom[0xffc0 + ICKSUM + 1] << 8); - if((cksum + icksum) == 0xffff && (cksum != 0) && (icksum != 0)) { - score_hi += 8; - } - - if(info.rom_size < 0x401000) { - score_ex = 0; - } else { - if(rom[0x7fc0 + MAPPER] == 0x32)score_lo++; - else score_ex += 16; - } - - if(score_lo >= score_hi && score_lo >= score_ex) { - info.header_index = 0x007fc0; - } else if(score_hi >= score_ex) { - info.header_index = 0x00ffc0; - } else { - info.header_index = 0x40ffc0; - } -} - -void Cartridge::load_sram() { - if(info.ram_size == 0) { - sram = 0; - return; - } - -FileReader ff(sram_fn); - if(!ff.ready()) { - sram = (uint8*)malloc(info.ram_size); - memset(sram, 0xff, info.ram_size); - return; - } - - sram = ff.read(info.ram_size); -} - -void Cartridge::save_sram() { - if(info.ram_size == 0)return; - -FileWriter ff(sram_fn); - if(!ff.ready())return; - - ff.write(sram, info.ram_size); -} - -void Cartridge::load_rom(Reader &rf) { -uint size = rf.size(); -bool header = ((size & 0x7fff) == 512); - info.rom_size = size - (header ? 512 : 0); - if(info.rom_size & 0x7fff) { - info.rom_size += 0x8000 - (info.rom_size & 0x7fff); - } - -uint8 *base_rom = rf.read(info.rom_size + (header ? 512 : 0)); - if(header) { - memcpy(rom_header, base_rom, 512); - } else { - memset(rom_header, 0x00, 512); - } - - rom = (uint8*)malloc(info.rom_size); - memcpy(rom, base_rom + (header ? 512 : 0), info.rom_size); - SafeFree(base_rom); - - info.crc32 = 0xffffffff; - for(int32 i = 0; i < info.rom_size; i++) { - info.crc32 = crc32_adjust(info.crc32, rom[i]); - } - info.crc32 = ~info.crc32; -} - -void Cartridge::patch_rom(Reader &rf) { -UPS ups; -uint patchsize = rf.size(); -uint8 *patchdata = rf.read(); - - fopen(ups.original, 0, file::mode_writeread); - fopen(ups.modified, 0, file::mode_writeread); - fopen(ups.patch.fp, 0, file::mode_writeread); - - fwrite(ups.original, rom, info.rom_size); - fwrite(ups.patch.fp, patchdata, patchsize); - - if(ups.apply() == true) { - info.crc32 = ups.modified_crc32; - info.rom_size = ups.modified_filesize; - rom = (uint8*)realloc(rom, info.rom_size); - fseek(ups.modified, 0, file::seek_start); - fread(ups.modified, rom, info.rom_size); - } -} - -bool Cartridge::load(const char *fn) { - if(cart_loaded == true)return false; - if(strlen(fn) < 3)return false; - - dprintf("* Loading \"%s\"...", fn); - - strcpy(rom_fn, fn); - - switch(Reader::detect(rom_fn)) { - - case Reader::RF_NORMAL: { - FileReader ff(rom_fn); - if(!ff.ready()) { - alert("Error loading image file (%s)!", rom_fn); - return false; - } - load_rom(ff); - } break; - -#ifdef GZIP_SUPPORT - case Reader::RF_GZ: { - GZReader gf(rom_fn); - if(!gf.ready()) { - alert("Error loading image file (%s)!", rom_fn); - return false; - } - load_rom(gf); - } break; - - case Reader::RF_ZIP: { - ZipReader zf(rom_fn); - load_rom(zf); - } break; -#endif - -#ifdef JMA_SUPPORT - case Reader::RF_JMA: { - try { - JMAReader jf(rom_fn); - load_rom(jf); - } catch(JMA::jma_errors jma_error) { - alert("Error loading image file (%s)!", rom_fn); - return false; - } - } break; -#endif - - } - -//remove ROM extension - strcpy(sram_fn, fn); +char fn[4096], ram_fn[4096]; + strcpy(fn, rom_fn); +//correct folder slashes for(int i = strlen(fn) - 1; i >= 0; i--) { - if(sram_fn[i] == '.') { - sram_fn[i] = 0; + if(fn[i] == '\\')fn[i] = '/'; + } + +uint i = file.count++; + strcpy(file.rom_name[i], fn); + + strcpy(fn, rom_fn); +//remove ROM extension + for(int i = strlen(fn) - 1; i >= 0; i--) { + if(fn[i] == '.') { + fn[i] = 0; break; } } -//add SRAM extension - strcat(sram_fn, "."); - strcat(sram_fn, config::fs.save_ext.sget()); + if(i == 0) { + strcpy(file.patch_name, fn); + strcat(file.patch_name, ".ups"); + } + strcpy(fn, strptr(config::file_updatepath(fn, config::path.save))); + if(i == 0) { + strcpy(file.cheat_name, fn); + strcat(file.cheat_name, ".cht"); + } + strcpy(file.ram_name[i], fn); + strcat(file.ram_name[i], "."); + strcat(file.ram_name[i], config::path.save_ext); +} -stringarray save_path; - strcpy(save_path, config::fs.save_path.sget()); - replace(save_path, "\\", "/"); - if(strlen(save_path) && !strend(save_path, "/")) { strcat(save_path, "/"); } - - if(strlen(save_path) != 0) { - //override default path (current directory) - stringarray new_fn, parts; - strcpy(new_fn, sram_fn); - replace(new_fn, "\\", "/"); - split(parts, "/", new_fn); - - //add new SRAM path - strcpy(new_fn, save_path); - - //append fs.base_path if fs.sram_path is not fully-qualified path - if(strbegin(new_fn, "./") == true) { - strltrim(new_fn, "./"); - strcpy(new_fn[1], new_fn[0]); - strcpy(new_fn[0], config::fs.base_path.sget()); - strcat(new_fn[0], new_fn[1]); - } - - //finally, append SRAM file name - strcat(new_fn, parts[count(parts) - 1]); - strcpy(sram_fn, strptr(new_fn)); +bool Cartridge::load_end() { + for(int i = 0; i < file.count; i++) { + load_file(file.rom_name[i], file.rom_data[i], file.rom_size[i]); } -//load cheat file if it exists - strcpy(cheat_fn, sram_fn); - strrtrim(cheat_fn, config::fs.save_ext.sget()); - strrtrim(cheat_fn, "."); - strcat(cheat_fn, ".cht"); - - if(fexists(cheat_fn) == true) { - FileReader ff(cheat_fn); - cheat.load(ff); + if(fexists(file.cheat_name) == true) { + cheat.clear(); + cheat.load(file.cheat_name); } -//load patch file if it exists - strcpy(patch_fn, sram_fn); - strrtrim(patch_fn, config::fs.save_ext.sget()); - strrtrim(patch_fn, "."); - strcat(patch_fn, ".ups"); - - if(fexists(patch_fn) == true) { - FileReader ff(patch_fn); - patch_rom(ff); + switch(info.type) { + case CART_NORMAL: { + load_rom_normal(); + load_ram_normal(); + } break; + case CART_ST: { + load_rom_st(); + load_ram_st(); + } break; + case CART_STDUAL: { + load_rom_stdual(); + load_ram_stdual(); + } break; } -#ifdef GZIP_SUPPORT - else { - strrtrim(patch_fn, ".ups"); - strcat(patch_fn, ".upz"); - if(fexists(patch_fn) == true) { - ZipReader zf(patch_fn); - patch_rom(zf); - } - } -#endif - - if(read_database() == true) { - read_dbi(); - } else { - find_header(); - read_header(); - } - - load_sram(); cart_loaded = true; - r_mem->load_cart(); return true; } @@ -388,13 +116,23 @@ bool Cartridge::unload() { r_mem->unload_cart(); - if(sram) { save_sram(); } - SafeFree(rom); - SafeFree(sram); + switch(info.type) { + case CART_NORMAL: { + save_ram_normal(); + } break; + case CART_ST: { + save_ram_st(); + } break; + case CART_STDUAL: { + save_ram_stdual(); + } break; + } - if(cheat.count() > 0 || fexists(cheat_fn)) { - FileWriter ff(cheat_fn); - cheat.save(ff); + SafeFree(rom); + SafeFree(ram); + + if(cheat.count() > 0 || fexists(file.cheat_name) == true) { + cheat.save(file.cheat_name); cheat.clear(); } @@ -407,8 +145,8 @@ Cartridge::Cartridge() { cart_loaded = false; - rom = 0; - sram = 0; + rom = 0; + ram = 0; } Cartridge::~Cartridge() { diff --git a/src/cart/cart.h b/src/cart/cart.h index ffc22457..5ab19607 100644 --- a/src/cart/cart.h +++ b/src/cart/cart.h @@ -15,10 +15,15 @@ db_item dbi; // -bool cart_loaded; -char rom_fn[4096], sram_fn[4096], cheat_fn[4096], patch_fn[4096]; +enum { + CART_NORMAL, + CART_ST, + CART_STDUAL, +}; -uint8 rom_header[512], *rom, *sram; +bool cart_loaded; + +uint8 rom_header[512], *rom, *ram; enum { //header fields @@ -26,7 +31,7 @@ enum { MAPPER = 0x15, ROM_TYPE = 0x16, ROM_SIZE = 0x17, - SRAM_SIZE = 0x18, + RAM_SIZE = 0x18, REGION = 0x19, LICENSE = 0x1a, VERSION = 0x1b, @@ -53,6 +58,17 @@ enum { }; struct { + uint count; + char cheat_name[4096], patch_name[4096]; + char rom_name[8][4096], ram_name[8][4096]; + uint rom_size[8], ram_size[8]; + uint8 *rom_data[8], *ram_data[8]; +} file; + +struct { + uint type; + +//cart information uint32 crc32; char name[128]; char pcb[32]; @@ -78,15 +94,28 @@ struct { uint header_index; } info; - void load_rom(Reader &rf); - void patch_rom(Reader &rf); - void load_sram(); - void save_sram(); - void read_dbi(); + bool load_file(const char *fn, uint8 *&data, uint &size); + bool save_file(const char *fn, uint8 *data, uint size); + + void load_rom_normal(); + void load_ram_normal(); + void save_ram_normal(); + + void load_rom_st(); + void load_ram_st(); + void save_ram_st(); + + void load_rom_stdual(); + void load_ram_stdual(); + void save_ram_stdual(); + void find_header(); void read_header(); + bool loaded() { return cart_loaded; } - bool load(const char *fn); + void load_begin(uint cart_type); + void load(const char *rom_fn); + bool load_end(); bool unload(); Cartridge(); diff --git a/src/cart/cart_file.cpp b/src/cart/cart_file.cpp new file mode 100644 index 00000000..b5ee0ead --- /dev/null +++ b/src/cart/cart_file.cpp @@ -0,0 +1,61 @@ +bool Cartridge::load_file(const char *fn, uint8 *&data, uint &size) { + dprintf("* Loading \"%s\"...", fn); + + if(fexists(fn) == false) { + return false; + } + + switch(Reader::detect(fn)) { + + case Reader::RF_NORMAL: { + FileReader ff(fn); + if(!ff.ready()) { + alert("Error loading image file (%s)!", fn); + return false; + } + size = ff.size(); + data = ff.read(); + } break; + +#ifdef GZIP_SUPPORT + case Reader::RF_GZ: { + GZReader gf(fn); + if(!gf.ready()) { + alert("Error loading image file (%s)!", fn); + return false; + } + size = gf.size(); + data = gf.read(); + } break; + + case Reader::RF_ZIP: { + ZipReader zf(fn); + size = zf.size(); + data = zf.read(); + } break; +#endif + +#ifdef JMA_SUPPORT + case Reader::RF_JMA: { + try { + JMAReader jf(fn); + size = jf.size(); + data = jf.read(); + } catch(JMA::jma_errors jma_error) { + alert("Error loading image file (%s)!", fn); + return false; + } + } break; +#endif + + } + + return true; +} + +bool Cartridge::save_file(const char *fn, uint8 *data, uint size) { +FileWriter ff(fn); + if(!ff.ready())return false; + ff.write(data, size); + return true; +} diff --git a/src/cart/cart_header.cpp b/src/cart/cart_header.cpp new file mode 100644 index 00000000..a677ad9a --- /dev/null +++ b/src/cart/cart_header.cpp @@ -0,0 +1,149 @@ +void Cartridge::read_header() { + info.srtc = false; + info.sdd1 = false; + info.c4 = false; + info.dsp1 = false; + info.dsp2 = false; + info.obc1 = false; + + info.dsp1_mapper = 0; + + if(info.header_index == 0x7fc0 && info.rom_size >= 0x401000) { + info.mapper = EXLOROM; + strcpy(info.pcb, "UNL-EXLOROM"); + } else if(info.header_index == 0x7fc0 && rom[info.header_index + MAPPER] == 0x32) { + info.mapper = EXLOROM; + strcpy(info.pcb, "UNL-EXLOROM"); + } else if(info.header_index == 0x7fc0) { + info.mapper = LOROM; + strcpy(info.pcb, "UNL-LOROM"); + } else if(info.header_index == 0xffc0) { + info.mapper = HIROM; + strcpy(info.pcb, "UNL-HIROM"); + } else { //info.header_index == 0x40ffc0 + info.mapper = EXHIROM; + strcpy(info.pcb, "UNL-EXHIROM"); + } + +uint8 mapper = rom[info.header_index + MAPPER]; +uint8 rom_type = rom[info.header_index + ROM_TYPE]; + if(mapper == 0x35 && rom_type == 0x55) { + info.srtc = true; + } + + if(mapper == 0x32 && (rom_type == 0x43 || rom_type == 0x45)) { + info.sdd1 = true; + } + + if(mapper == 0x20 && rom_type == 0xf3) { + info.c4 = true; + } + + if((mapper == 0x20 || mapper == 0x21) && rom_type == 0x03) { + info.dsp1 = true; + } + + if(mapper == 0x30 && rom_type == 0x05) { + info.dsp1 = true; + } + + if(mapper == 0x31 && (rom_type == 0x03 || rom_type == 0x05)) { + info.dsp1 = true; + } + + if(info.dsp1 == true) { + if((mapper & 0x2f) == 0x20 && info.rom_size <= 0x100000) { + info.dsp1_mapper = DSP1_LOROM_1MB; + } else if((mapper & 0x2f) == 0x20) { + info.dsp1_mapper = DSP1_LOROM_2MB; + } else if((mapper & 0x2f) == 0x21) { + info.dsp1_mapper = DSP1_HIROM; + } + } + + if(mapper == 0x20 && rom_type == 0x05) { + info.dsp2 = true; + } + + if(mapper == 0x30 && rom_type == 0x25) { + info.obc1 = true; + } + + info.cart_mmio = info.c4 | info.dsp1 | info.dsp2 | info.obc1; + + if(rom[info.header_index + RAM_SIZE] & 7) { + info.ram_size = 1024 << (rom[info.header_index + RAM_SIZE] & 7); + } else { + info.ram_size = 0; + } + + memcpy(&info.name, &rom[info.header_index + CART_NAME], 21); + info.name[21] = 0; + + for(int i = 0; i < 22; i++) { + if(info.name[i] & 0x80) { + info.name[i] = '?'; + } + } +} + +void Cartridge::find_header() { +int32 score_lo = 0, + score_hi = 0, + score_ex = 0; + + if(info.rom_size < 0x010000) { + //cart too small to be anything but lorom + info.header_index = 0x007fc0; + return; + } + + if((rom[0x7fc0 + MAPPER] & ~0x10) == 0x20)score_lo++; + if((rom[0xffc0 + MAPPER] & ~0x10) == 0x21)score_hi++; + + if(rom[0x7fc0 + ROM_TYPE] < 0x08)score_lo++; + if(rom[0xffc0 + ROM_TYPE] < 0x08)score_hi++; + + if(rom[0x7fc0 + ROM_SIZE] < 0x10)score_lo++; + if(rom[0xffc0 + ROM_SIZE] < 0x10)score_hi++; + + if(rom[0x7fc0 + RAM_SIZE] < 0x08)score_lo++; + if(rom[0xffc0 + RAM_SIZE] < 0x08)score_hi++; + + if(rom[0x7fc0 + REGION] < 14)score_lo++; + if(rom[0xffc0 + REGION] < 14)score_hi++; + + if(rom[0x7fc0 + LICENSE] < 3)score_lo++; + if(rom[0xffc0 + LICENSE] < 3)score_hi++; + + if(rom[0x7fc0 + RESH] & 0x80)score_lo += 2; + if(rom[0xffc0 + RESH] & 0x80)score_hi += 2; + +uint16 cksum, icksum; + cksum = rom[0x7fc0 + CKSUM] | (rom[0x7fc0 + CKSUM + 1] << 8); + icksum = rom[0x7fc0 + ICKSUM] | (rom[0x7fc0 + ICKSUM + 1] << 8); + if((cksum + icksum) == 0xffff && (cksum != 0) && (icksum != 0)) { + score_lo += 8; + } + + cksum = rom[0xffc0 + CKSUM] | (rom[0xffc0 + CKSUM + 1] << 8); + icksum = rom[0xffc0 + ICKSUM] | (rom[0xffc0 + ICKSUM + 1] << 8); + if((cksum + icksum) == 0xffff && (cksum != 0) && (icksum != 0)) { + score_hi += 8; + } + + if(info.rom_size < 0x401000) { + score_ex = 0; + } else { + if(rom[0x7fc0 + MAPPER] == 0x32)score_lo++; + else score_ex += 16; + } + + if(score_lo >= score_hi && score_lo >= score_ex) { + info.header_index = 0x007fc0; + } else if(score_hi >= score_ex) { + info.header_index = 0x00ffc0; + } else { + info.header_index = 0x40ffc0; + } +} diff --git a/src/cart/cart_normal.cpp b/src/cart/cart_normal.cpp new file mode 100644 index 00000000..fad95cb6 --- /dev/null +++ b/src/cart/cart_normal.cpp @@ -0,0 +1,66 @@ +void Cartridge::load_rom_normal() { +uint size = 0; + for(int i = 0; i < file.count; i++) { + size += file.rom_size[i] - (((file.rom_size[i] & 0x7fff) == 512) ? 512 : 0); + } + + info.rom_size = size; + rom = (uint8*)malloc(info.rom_size); + memset(rom, 0, info.rom_size); + +uint offset = 0; + for(int i = 0; i < file.count; i++) { + uint8 *data = file.rom_data[i] + (((file.rom_size[i] & 0x7fff) == 512) ? 512 : 0); + uint size = file.rom_size[i] - (((file.rom_size[i] & 0x7fff) == 512) ? 512 : 0); + memcpy(rom + offset, data, size); + offset += size; + safe_free(file.rom_data[i]); + } + + info.crc32 = crc32_calculate(rom, info.rom_size); + + if(read_database() == true) { + info.srtc = false; + info.sdd1 = false; + info.c4 = false; + info.dsp1 = false; + info.dsp2 = false; + info.obc1 = false; + + info.dsp1_mapper = 0; + + info.header_index = 0xffc0; + info.mapper = PCB; + strcpy(info.name, dbi.name); + strcpy(info.pcb, dbi.pcb); + info.region = NTSC; + info.cart_mmio = false; + + info.rom_size = dbi.rom; + info.ram_size = dbi.ram; + } else { + find_header(); + read_header(); + } +} + +void Cartridge::load_ram_normal() { + if(info.ram_size == 0) { + ram = 0; + return; + } + + ram = (uint8*)malloc(info.ram_size); + memset(ram, 0xff, info.ram_size); + + if(load_file(file.ram_name[0], file.ram_data[0], file.ram_size[0]) == true) { + memcpy(ram, file.ram_data[0], min(info.ram_size, file.ram_size[0])); + safe_free(file.ram_data[0]); + } +} + +void Cartridge::save_ram_normal() { + if(info.ram_size == 0)return; + + save_file(file.ram_name[0], ram, info.ram_size); +} diff --git a/src/cart/cart_st.cpp b/src/cart/cart_st.cpp new file mode 100644 index 00000000..4f639032 --- /dev/null +++ b/src/cart/cart_st.cpp @@ -0,0 +1,45 @@ +void Cartridge::load_rom_st() { +uint8 *data; +uint size; +string bios = config::file_updatepath("stbios.bin", config::path.bios); + info.rom_size = 0x200000; + rom = (uint8*)malloc(info.rom_size); + memset(rom, 0, info.rom_size); + + load_file(strptr(bios), data, size); + memcpy(rom, data, min(size, 0x040000)); + safe_free(data); + + memcpy(rom + 0x100000, file.rom_data[0], min(file.rom_size[0], 0x100000)); + safe_free(file.rom_data[0]); + +// + strcpy(info.name, "???"); + strcpy(info.pcb, "STC-SOLO"); + + info.mapper = PCB; + info.region = NTSC; + + info.rom_size = 0x200000; + info.ram_size = 0x020000; +// + + info.crc32 = crc32_calculate(rom + 0x100000, file.rom_size[0]); + if(read_database() == true) { + strcpy(info.name, dbi.name); + } +} + +void Cartridge::load_ram_st() { + ram = (uint8*)malloc(info.ram_size); + memset(ram, 0xff, info.ram_size); + + if(load_file(file.ram_name[0], file.ram_data[0], file.ram_size[0]) == true) { + memcpy(ram, file.ram_data[0], min(file.ram_size[0], 0x020000)); + safe_free(file.ram_data[0]); + } +} + +void Cartridge::save_ram_st() { + save_file(file.ram_name[0], ram, 0x020000); +} diff --git a/src/cart/cart_stdual.cpp b/src/cart/cart_stdual.cpp new file mode 100644 index 00000000..5b7a4a55 --- /dev/null +++ b/src/cart/cart_stdual.cpp @@ -0,0 +1,66 @@ +void Cartridge::load_rom_stdual() { +uint8 *data; +uint size; +string bios = config::file_updatepath("stbios.bin", config::path.bios); + info.rom_size = 0x300000; + rom = (uint8*)malloc(info.rom_size); + memset(rom, 0, info.rom_size); + + load_file(strptr(bios), data, size); + memcpy(rom, data, min(size, 0x040000)); + safe_free(data); + + memcpy(rom + 0x100000, file.rom_data[0], min(file.rom_size[0], 0x100000)); + safe_free(file.rom_data[0]); + + memcpy(rom + 0x200000, file.rom_data[1], min(file.rom_size[1], 0x100000)); + safe_free(file.rom_data[1]); + +char name_a[4096], name_b[4096]; + strcpy(name_a, "???"); + strcpy(name_b, "???"); +// + info.mapper = PCB; + info.region = NTSC; + + info.rom_size = 0x300000; + info.ram_size = 0x040000; +// + + info.crc32 = crc32_calculate(rom + 0x100000, file.rom_size[0]); + if(read_database() == true) { + strcpy(name_a, dbi.name); + } + + info.crc32 = crc32_calculate(rom + 0x200000, file.rom_size[1]); + if(read_database() == true) { + strcpy(name_b, dbi.name); + } + +// + info.crc32 = 0; + strcpy(info.name, name_a); + strcat(info.name, " + "); + strcat(info.name, name_b); + strcpy(info.pcb, "STC-DUAL"); +} + +void Cartridge::load_ram_stdual() { + ram = (uint8*)malloc(info.ram_size); + memset(ram, 0xff, info.ram_size); + + if(load_file(file.ram_name[0], file.ram_data[0], file.ram_size[0]) == true) { + memcpy(ram + 0x000000, file.ram_data[0], min(file.ram_size[0], 0x020000)); + safe_free(file.ram_data[0]); + } + + if(load_file(file.ram_name[1], file.ram_data[1], file.ram_size[1]) == true) { + memcpy(ram + 0x020000, file.ram_data[1], min(file.ram_size[1], 0x020000)); + safe_free(file.ram_data[1]); + } +} + +void Cartridge::save_ram_stdual() { + save_file(file.ram_name[0], ram + 0x000000, 0x020000); + save_file(file.ram_name[1], ram + 0x020000, 0x020000); +} diff --git a/src/cart/db/cart.db b/src/cart/db/cart.db index 83609d43d738fffdb3dd4f16d8343fe64da57269..a489d594f1d3d4ed7658ccd7646303e77a988fd6 100644 GIT binary patch literal 3276 zcmd6py>HV%7{(9Lfdz@7OBeJ;45WjrCKX>3#CDR>Hc{2kgA9$A{TL#&37Mzz5tGL>1K)dSxPz*ZF{Q>j5P^0cu0uR@{!MC8WzwJ9Md#_n78vfe)T zR!6d0$eOz=5jY-eJ z3N~aH#AW@v^W$?QYXMm;g{rn;mN|ic46>D9dto8#lIvr4GMVqY93d%hVf<~3KM&`Z zA$Nqhx{f}1Jn}zl7yY=gu8(|rN_katAJhiqTU^w`O(btQnlMvVG>P zYn@(D&>z>S!cG8X)#5HJdVv$@gJVyiYZ20&vo4j4Odr&6&LSsB?d-GK3X?Ui!%<~J Qt0t`C$daV2ByNxW2YL}w>Hq)$ delta 108 zcmX>j`GSi**v~cC#c9ptc*eDgXWsoZbxAE!@JY-|FUl+~1~N6g5(^UZG!-<$4D}2( zH#ahxGfv*avPQ5eIXXQkz+EAvxHP-8s8qpd@<)#Fi3u{3Cor+Gn)~V+7)}fnXH{Te MU|`&QoQstS07^?ESO5S3 diff --git a/src/cart/db/cartdb.txt b/src/cart/db/cartdb.txt index 056ba7c3..668aadb1 100644 --- a/src/cart/db/cartdb.txt +++ b/src/cart/db/cartdb.txt @@ -1,32 +1,98 @@ +[0xbb5c4238] +name = "Bishoujo Senshi Sailor Moon Sailor Stars - Fuwa Fuwa Panic 2 (Japan)" +pcb = "STC-????" +rom = 8mbit +ram = 32kbit + +[0x8eb753f3] +name = "Crayon Shin-chan - Nagagutsu Dobon!! (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 8kbit + [0x7aedd703] name = "Der Langrisser (Japan) [!]" pcb = "SHVC-1A3M-30" rom = 16mbit ram = 64kbit -[0x35f9eecc] -name = "Der Langrisser (Japan) (V1.1)" -pcb = "SHVC-1A3M-30" ;unverified (guess) -rom = 16mbit -ram = 64kbit - [0x19bdcb19] name = "Derby Stallion '96 (Japan) [!]" pcb = "BSC-1A5M-01" rom = 24mbit ram = 256kbit +[0x4296500d] +name = "Gegege no Kitarou - Youkai Donjara (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 16kbit + +[0x14c66fca] +name = "Gekisou Sentai Car Rangers (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 8kbit + +[0x32b2b3dd] +name = "Poi Poi Ninja World (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 8kbit + [0x9684526d] name = "Romancing SaGa (Japan) (V1.1) [!]" pcb = "SHVC-1A3B-12" rom = 8mbit ram = 64kbit -[0x675b6382] -name = "RPG Tsukuru 2 (Japan)" -pcb = "BSC-1A7M-01" ;unverified -rom = 16mbit -ram = 512kbit +[0xafd74dcb] +name = "SD Gundam Generation A - Ichinen Sensouki (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 8kbit + +[0x48ecae44] +name = "SD Gundam Generation B - Grips Senki (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 8kbit + +[0x72b4235f] +name = "SD Gundam Generation C - Axis Senki (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 8kbit + +[0x792d884c] +name = "SD Gundam Generation D - Babylonia Kenkoku Senki (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 8kbit + +[0xefd3a865] +name = "SD Gundam Generation E - Zanskar Senki (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 8kbit + +[0xc5dfa8fd] +name = "SD Gundam Generation F - Colony Kakutouki (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 8kbit + +[0x43ad5a45] +name = "SD Ultra Battle - Seven Densetsu (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 8kbit + +[0x04939d14] +name = "SD Ultra Battle - Ultra Densetsu (Japan)" +pcb = "STC-????" +rom = 4mbit +ram = 8kbit [0xa5c0045e] name = "Secret of Evermore (USA) [!]" diff --git a/src/cart/db/dbcreate.cpp b/src/cart/db/dbcreate.cpp index 288d778b..2ad529c5 100644 --- a/src/cart/db/dbcreate.cpp +++ b/src/cart/db/dbcreate.cpp @@ -8,7 +8,7 @@ FILE *fp; -uint decode_size(substring &str) { +uint decode_size(string &str) { //hex encoding if(strbegin(str, "0x")) { strltrim(str, "0x"); @@ -31,8 +31,8 @@ uint decode_size(substring &str) { return strdec(str); } -void build_block(substring &block) { -string line, hashpart, part; +void build_block(string &block) { +stringarray line, hashpart, part; split(line, "\n", block); if(strbegin(line[0], "[") == false) { @@ -58,26 +58,26 @@ db_item dbi; strset(line[i], pos, 0); } - if(strmatch(line[i], ""))continue; + if(line[i] == "")continue; split(part, "=", line[i]); strunquote(part[1]); - if(strmatch(part[0], "name")) { + if(part[0] == "name") { strncpy(dbi.name, strptr(part[1]), 128); dbi.name[128] = 0; } - if(strmatch(part[0], "pcb")) { + if(part[0] == "pcb") { strncpy(dbi.pcb, strptr(part[1]), 32); dbi.pcb[31] = 0; } - if(strmatch(part[0], "rom")) { + if(part[0] == "rom") { dbi.rom = decode_size(part[1]); } - if(strmatch(part[0], "ram")) { + if(part[0] == "ram") { dbi.ram = decode_size(part[1]); } } @@ -89,7 +89,7 @@ db_item dbi; } void build_database() { -string data, block; +stringarray data, block; if(strfread(data, "cartdb.txt") == false)return; fp = fopen("cart.db", "wb"); diff --git a/src/cheat/cheat.cpp b/src/cheat/cheat.cpp index e64e88e5..00e3c7a1 100644 --- a/src/cheat/cheat.cpp +++ b/src/cheat/cheat.cpp @@ -268,7 +268,8 @@ void Cheat::disable(uint32 n) { * cheat file manipulation routines *****/ -bool Cheat::load(Reader &rf) { +bool Cheat::load(const char *fn) { +FileReader rf(fn); if(!rf.ready())return false; uint8 *raw_data = rf.read(); @@ -299,7 +300,8 @@ stringarray data, line; return true; } -bool Cheat::save(Writer &wf) { +bool Cheat::save(const char *fn) { +FileWriter wf(fn); if(!wf.ready())return false; string data; diff --git a/src/cheat/cheat.h b/src/cheat/cheat.h index eb5b0181..51386f57 100644 --- a/src/cheat/cheat.h +++ b/src/cheat/cheat.h @@ -38,8 +38,8 @@ public: bool enabled(uint32 n); void enable (uint32 n); void disable(uint32 n); - bool load(Reader &rf); - bool save(Writer &wf); + bool load(const char *fn); + bool save(const char *fn); void clear(); Cheat(); diff --git a/src/chip/obc1/obc1.cpp b/src/chip/obc1/obc1.cpp index 15cbbc63..01bffac7 100644 --- a/src/chip/obc1/obc1.cpp +++ b/src/chip/obc1/obc1.cpp @@ -10,34 +10,34 @@ void OBC1::power() { } void OBC1::reset() { - memset(cartridge.sram, 0xff, 0x2000); - status.baseptr = (cartridge.sram[0x1ff5] & 1) ? 0x1800 : 0x1c00; - status.address = (cartridge.sram[0x1ff6] & 0x7f); - status.shift = (cartridge.sram[0x1ff6] & 3) << 1; + memset(cartridge.ram, 0xff, 0x2000); + status.baseptr = (cartridge.ram[0x1ff5] & 1) ? 0x1800 : 0x1c00; + status.address = (cartridge.ram[0x1ff6] & 0x7f); + status.shift = (cartridge.ram[0x1ff6] & 3) << 1; } uint8 OBC1::read(uint16 addr) { addr &= 0x1fff; if((addr & 0x1ff8) != 0x1ff0) { - return cartridge.sram[addr]; + return cartridge.ram[addr]; } switch(addr) { case 0x1ff0: - return cartridge.sram[status.baseptr + (status.address << 2) + 0]; + return cartridge.ram[status.baseptr + (status.address << 2) + 0]; case 0x1ff1: - return cartridge.sram[status.baseptr + (status.address << 2) + 1]; + return cartridge.ram[status.baseptr + (status.address << 2) + 1]; case 0x1ff2: - return cartridge.sram[status.baseptr + (status.address << 2) + 2]; + return cartridge.ram[status.baseptr + (status.address << 2) + 2]; case 0x1ff3: - return cartridge.sram[status.baseptr + (status.address << 2) + 3]; + return cartridge.ram[status.baseptr + (status.address << 2) + 3]; case 0x1ff4: - return cartridge.sram[status.baseptr + (status.address >> 2) + 0x200]; + return cartridge.ram[status.baseptr + (status.address >> 2) + 0x200]; case 0x1ff5: case 0x1ff6: case 0x1ff7: - return cartridge.sram[addr]; + return cartridge.ram[addr]; } //never used, blocks compiler warning @@ -48,40 +48,40 @@ void OBC1::write(uint16 addr, uint8 data) { addr &= 0x1fff; if((addr & 0x1ff8) != 0x1ff0) { - cartridge.sram[addr] = data; + cartridge.ram[addr] = data; return; } switch(addr) { case 0x1ff0: - cartridge.sram[status.baseptr + (status.address << 2) + 0] = data; + cartridge.ram[status.baseptr + (status.address << 2) + 0] = data; break; case 0x1ff1: - cartridge.sram[status.baseptr + (status.address << 2) + 1] = data; + cartridge.ram[status.baseptr + (status.address << 2) + 1] = data; break; case 0x1ff2: - cartridge.sram[status.baseptr + (status.address << 2) + 2] = data; + cartridge.ram[status.baseptr + (status.address << 2) + 2] = data; break; case 0x1ff3: - cartridge.sram[status.baseptr + (status.address << 2) + 3] = data; + cartridge.ram[status.baseptr + (status.address << 2) + 3] = data; break; case 0x1ff4: { uint8 temp; - temp = cartridge.sram[status.baseptr + (status.address >> 2) + 0x200]; + temp = cartridge.ram[status.baseptr + (status.address >> 2) + 0x200]; temp = (temp & ~(3 << status.shift)) | ((data & 3) << status.shift); - cartridge.sram[status.baseptr + (status.address >> 2) + 0x200] = temp; + cartridge.ram[status.baseptr + (status.address >> 2) + 0x200] = temp; } break; case 0x1ff5: status.baseptr = (data & 1) ? 0x1800 : 0x1c00; - cartridge.sram[addr] = data; + cartridge.ram[addr] = data; break; case 0x1ff6: status.address = (data & 0x7f); status.shift = (data & 3) << 1; - cartridge.sram[addr] = data; + cartridge.ram[addr] = data; break; case 0x1ff7: - cartridge.sram[addr] = data; + cartridge.ram[addr] = data; break; } } diff --git a/src/config/config.cpp b/src/config/config.cpp index f6be3747..3a045834 100644 --- a/src/config/config.cpp +++ b/src/config/config.cpp @@ -2,24 +2,52 @@ Config config_file; namespace config { -Setting FS::base_path(0, "fs.base_path", - "Directory that bsnes resides in", ""); -Setting FS::rom_path(&config_file, "fs.rom_path", - "Default path to look for ROM files in (\"\" = use default directory)", ""); -Setting FS::save_path(&config_file, "fs.save_path", - "Default path for all save RAM and cheat files (\"\" = use current directory)", ""); +string file_updatepath(const char *req_file, const char *req_path) { +string file(req_file); + replace(file, "\\", "/"); + if(!req_path || strlen(req_path) == 0) { return file; } -Setting FS::save_ext(&config_file, "fs.save_ext", +string path(req_path); + replace(path, "\\", "/"); + if(!strend(path, "/")) { strcat(path, "/"); } + + if(strbegin(path, "./")) { + strltrim(path, "./"); + string temp; + strcpy(temp, config::path.base); + strcat(temp, path); + strcpy(path, temp); + } + +stringarray part; + split(part, "/", file); + strcat(path, part[count(part) - 1]); + return path; +} + +Setting Path::base(0, "fs.base_path", + "Path that bsnes resides in", ""); +Setting Path::rom(&config_file, "path.rom", + "Default path to look for ROM files in (\"\" = use default directory)", ""); +Setting Path::save(&config_file, "path.save", + "Default path for all save RAM and cheat files (\"\" = use current directory)", ""); +Setting Path::bios(&config_file, "path.bios", + "Path where BIOS file(s) are located\n" + "Supported BIOS files:\n" + "stbios.bin - Bandai Sufami Turbo" + "", "./bios"); + +Setting Path::save_ext(&config_file, "path.save_ext", "Extension to be used for all save RAM files", "srm"); Setting SNES::gamma_ramp(&config_file, "snes.colorfilter.gamma_ramp", - "Use precalculated TV-style gamma ramp", true, Setting::TRUE_FALSE); + "Use precalculated TV-style gamma ramp", true, Setting::BOOL); Setting SNES::sepia(&config_file, "snes.colorfilter.sepia", - "Convert color to sepia tone", false, Setting::TRUE_FALSE); + "Convert color to sepia tone", false, Setting::BOOL); Setting SNES::grayscale(&config_file, "snes.colorfilter.grayscale", - "Convert color to grayscale tone", false, Setting::TRUE_FALSE); + "Convert color to grayscale tone", false, Setting::BOOL); Setting SNES::invert(&config_file, "snes.colorfilter.invert", - "Invert output image colors", false, Setting::TRUE_FALSE); + "Invert output image colors", false, Setting::BOOL); Setting SNES::contrast(&config_file, "snes.colorfilter.contrast", "Contrast", 0, Setting::DEC); Setting SNES::brightness(&config_file, "snes.colorfilter.brightness", @@ -30,10 +58,10 @@ Setting SNES::gamma(&config_file, "snes.colorfilter.gamma", Setting SNES::ntsc_merge_fields(&config_file, "snes.ntsc_merge_fields", "Merge fields in NTSC video filter\n" "Set to true if using filter at any refresh rate other than 60hz\n" - "", true, Setting::TRUE_FALSE); + "", true, Setting::BOOL); Setting SNES::mute(&config_file, "snes.mute", "Mutes SNES audio output when enabled", - false, Setting::TRUE_FALSE); + false, Setting::BOOL); Setting SNES::controller_port0(&config_file, "snes.controller_port_1", "Controller attached to SNES port 1", ::SNES::DEVICEID_JOYPAD1, Setting::DEC); @@ -43,31 +71,37 @@ Setting SNES::controller_port1(&config_file, "snes.controller_port_2", Setting CPU::ntsc_clock_rate(&config_file, "cpu.ntsc_clock_rate", "NTSC S-CPU clock rate (in hz)", 21477272, Setting::DEC); Setting CPU::pal_clock_rate(&config_file, "cpu.pal_clock_rate", - "PAL S-CPU clock rate (in hz)", 21241370, Setting::DEC); + "PAL S-CPU clock rate (in hz)", 21281370, Setting::DEC); + Setting CPU::hdma_enable(0, "cpu.hdma_enable", - "Enable HDMA effects", true, Setting::TRUE_FALSE); + "Enable HDMA effects", true, Setting::BOOL); Setting SMP::ntsc_clock_rate(&config_file, "smp.ntsc_clock_rate", - "NTSC S-SMP clock rate (in hz)", 24576000, Setting::DEC); + "NTSC S-SMP clock rate (in hz)", 24606720, Setting::DEC); Setting SMP::pal_clock_rate(&config_file, "smp.pal_clock_rate", - "PAL S-SMP clock rate (in hz)", 24576000, Setting::DEC); + "PAL S-SMP clock rate (in hz)", 24606720, Setting::DEC); -Setting PPU::render_scanline_position(&config_file, "ppu.render_scanline_position", +Setting PPU::Hack::render_scanline_position(&config_file, "ppu.hack.render_scanline_position", "Approximate HCLOCK position to render at for scanline-based renderers", - 256, Setting::DEC); -Setting PPU::opt_enable(0, "ppu.opt_enable", "Enable offset-per-tile effects", true, Setting::TRUE_FALSE); + 512, Setting::DEC); +Setting PPU::Hack::obj_cache(&config_file, "ppu.hack.obj_cache", + "Cache OAM OBJ attributes one scanline before rendering\n" + "This is technically closer to the actual operation of the SNES,\n" + "but can cause problems in many games if enabled", + false, Setting::BOOL); -Setting PPU::bg1_pri0_enable(0, "ppu.bg1_pri0_enable", "Enable BG1 Priority 0", true, Setting::TRUE_FALSE); -Setting PPU::bg1_pri1_enable(0, "ppu.bg1_pri1_enable", "Enable BG1 Priority 1", true, Setting::TRUE_FALSE); -Setting PPU::bg2_pri0_enable(0, "ppu.bg2_pri0_enable", "Enable BG2 Priority 0", true, Setting::TRUE_FALSE); -Setting PPU::bg2_pri1_enable(0, "ppu.bg2_pri1_enable", "Enable BG2 Priority 1", true, Setting::TRUE_FALSE); -Setting PPU::bg3_pri0_enable(0, "ppu.bg3_pri0_enable", "Enable BG3 Priority 0", true, Setting::TRUE_FALSE); -Setting PPU::bg3_pri1_enable(0, "ppu.bg3_pri1_enable", "Enable BG3 Priority 1", true, Setting::TRUE_FALSE); -Setting PPU::bg4_pri0_enable(0, "ppu.bg4_pri0_enable", "Enable BG4 Priority 0", true, Setting::TRUE_FALSE); -Setting PPU::bg4_pri1_enable(0, "ppu.bg4_pri1_enable", "Enable BG4 Priority 1", true, Setting::TRUE_FALSE); -Setting PPU::oam_pri0_enable(0, "ppu.oam_pri0_enable", "Enable OAM Priority 0", true, Setting::TRUE_FALSE); -Setting PPU::oam_pri1_enable(0, "ppu.oam_pri1_enable", "Enable OAM Priority 1", true, Setting::TRUE_FALSE); -Setting PPU::oam_pri2_enable(0, "ppu.oam_pri2_enable", "Enable OAM Priority 2", true, Setting::TRUE_FALSE); -Setting PPU::oam_pri3_enable(0, "ppu.oam_pri3_enable", "Enable OAM Priority 3", true, Setting::TRUE_FALSE); +Setting PPU::opt_enable(0, "ppu.opt_enable", "Enable offset-per-tile effects", true, Setting::BOOL); +Setting PPU::bg1_pri0_enable(0, "ppu.bg1_pri0_enable", "Enable BG1 Priority 0", true, Setting::BOOL); +Setting PPU::bg1_pri1_enable(0, "ppu.bg1_pri1_enable", "Enable BG1 Priority 1", true, Setting::BOOL); +Setting PPU::bg2_pri0_enable(0, "ppu.bg2_pri0_enable", "Enable BG2 Priority 0", true, Setting::BOOL); +Setting PPU::bg2_pri1_enable(0, "ppu.bg2_pri1_enable", "Enable BG2 Priority 1", true, Setting::BOOL); +Setting PPU::bg3_pri0_enable(0, "ppu.bg3_pri0_enable", "Enable BG3 Priority 0", true, Setting::BOOL); +Setting PPU::bg3_pri1_enable(0, "ppu.bg3_pri1_enable", "Enable BG3 Priority 1", true, Setting::BOOL); +Setting PPU::bg4_pri0_enable(0, "ppu.bg4_pri0_enable", "Enable BG4 Priority 0", true, Setting::BOOL); +Setting PPU::bg4_pri1_enable(0, "ppu.bg4_pri1_enable", "Enable BG4 Priority 1", true, Setting::BOOL); +Setting PPU::oam_pri0_enable(0, "ppu.oam_pri0_enable", "Enable OAM Priority 0", true, Setting::BOOL); +Setting PPU::oam_pri1_enable(0, "ppu.oam_pri1_enable", "Enable OAM Priority 1", true, Setting::BOOL); +Setting PPU::oam_pri2_enable(0, "ppu.oam_pri2_enable", "Enable OAM Priority 2", true, Setting::BOOL); +Setting PPU::oam_pri3_enable(0, "ppu.oam_pri3_enable", "Enable OAM Priority 3", true, Setting::BOOL); }; diff --git a/src/config/config.h b/src/config/config.h index 45d72fcb..d0c4baba 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -2,10 +2,12 @@ extern Config config_file; namespace config { -extern struct FS { - static Setting base_path, rom_path, save_path; +string file_updatepath(const char *, const char *); + +extern struct Path { + static Setting base, rom, save, bios; static Setting save_ext; -} fs; +} path; extern struct SNES { static Setting gamma_ramp, sepia, grayscale, invert, contrast, brightness, gamma; @@ -25,9 +27,12 @@ extern struct SMP { } smp; extern struct PPU { - static Setting render_scanline_position; - static Setting opt_enable; + struct Hack { + static Setting render_scanline_position; + static Setting obj_cache; + } hack; + static Setting opt_enable; static Setting bg1_pri0_enable, bg1_pri1_enable; static Setting bg2_pri0_enable, bg2_pri1_enable; static Setting bg3_pri0_enable, bg3_pri1_enable; diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index ae2b9555..ae8fa24e 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -2,7 +2,6 @@ class CPU : public MMIO { public: -thread_t thread; virtual void enter() = 0; public: diff --git a/src/cpu/scpu/core/op_misc.b b/src/cpu/scpu/core/op_misc.b index 33c2554f..e6f6b3ab 100644 --- a/src/cpu/scpu/core/op_misc.b +++ b/src/cpu/scpu/core/op_misc.b @@ -58,9 +58,7 @@ cop(0x02, 0xfff4, 0xfff5, 0xffe4, 0xffe5) { stp(0xdb) { 1:op_io(); 2:last_cycle(); - while(1) { - op_io(); - } + while(1) { op_io(); } } wai(0xcb) { @@ -77,9 +75,9 @@ wai(0xcb) { xce(0xfb) { 1:last_cycle(); op_io(); -bool c = regs.p.c; +bool carry = regs.p.c; regs.p.c = regs.e; - regs.e = c; + regs.e = carry; if(regs.e) { regs.p |= 0x30; regs.s.h = 0x01; diff --git a/src/cpu/scpu/core/op_misc.cpp b/src/cpu/scpu/core/op_misc.cpp index e72b63e9..e96bd0c9 100644 --- a/src/cpu/scpu/core/op_misc.cpp +++ b/src/cpu/scpu/core/op_misc.cpp @@ -98,9 +98,7 @@ case 0x02: { case 0xdb: { op_io(); last_cycle(); - while(1) { - op_io(); - } + while(1) { op_io(); } } break; //wai @@ -119,9 +117,9 @@ case 0xcb: { case 0xfb: { last_cycle(); op_io(); -bool c = regs.p.c; +bool carry = regs.p.c; regs.p.c = regs.e; - regs.e = c; + regs.e = carry; if(regs.e) { regs.p |= 0x30; regs.s.h = 0x01; diff --git a/src/cpu/scpu/core/op_rmw.b b/src/cpu/scpu/core/op_rmw.b index cea0cd99..d3b8b2f1 100644 --- a/src/cpu/scpu/core/op_rmw.b +++ b/src/cpu/scpu/core/op_rmw.b @@ -5,11 +5,11 @@ iny(0xc8, regs.p.x, y) { op_io(); if($1) { regs.$2.l++; - regs.p.n = bool(regs.$2.l & 0x80); + regs.p.n = !!(regs.$2.l & 0x80); regs.p.z = (regs.$2.l == 0); } else { regs.$2.w++; - regs.p.n = bool(regs.$2.w & 0x8000); + regs.p.n = !!(regs.$2.w & 0x8000); regs.p.z = (regs.$2.w == 0); } } @@ -21,11 +21,11 @@ dey(0x88, regs.p.x, y) { op_io(); if($1) { regs.$2.l--; - regs.p.n = bool(regs.$2.l & 0x80); + regs.p.n = !!(regs.$2.l & 0x80); regs.p.z = (regs.$2.l == 0); } else { regs.$2.w--; - regs.p.n = bool(regs.$2.w & 0x8000); + regs.p.n = !!(regs.$2.w & 0x8000); regs.p.z = (regs.$2.w == 0); } } @@ -34,14 +34,14 @@ asl(0x0a) { 1:last_cycle(); op_io(); if(regs.p.m) { - regs.p.c = bool(regs.a.l & 0x80); + regs.p.c = !!(regs.a.l & 0x80); regs.a.l <<= 1; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } else { - regs.p.c = bool(regs.a.w & 0x8000); + regs.p.c = !!(regs.a.w & 0x8000); regs.a.w <<= 1; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } } @@ -52,12 +52,12 @@ lsr(0x4a) { if(regs.p.m) { regs.p.c = regs.a.l & 1; regs.a.l >>= 1; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } else { regs.p.c = regs.a.w & 1; regs.a.w >>= 1; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } } @@ -67,16 +67,16 @@ rol(0x2a) { op_io(); uint16 c = regs.p.c; if(regs.p.m) { - regs.p.c = bool(regs.a.l & 0x80); + regs.p.c = !!(regs.a.l & 0x80); regs.a.l <<= 1; regs.a.l |= c; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } else { - regs.p.c = bool(regs.a.w & 0x8000); + regs.p.c = !!(regs.a.w & 0x8000); regs.a.w <<= 1; regs.a.w |= c; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } } @@ -90,14 +90,14 @@ ror(0x6a) { regs.p.c = regs.a.l & 1; regs.a.l >>= 1; regs.a.l |= c; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } else { c = (regs.p.c)?0x8000:0; regs.p.c = regs.a.w & 1; regs.a.w >>= 1; regs.a.w |= c; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } } diff --git a/src/cpu/scpu/core/op_rmw.cpp b/src/cpu/scpu/core/op_rmw.cpp index 104e47a6..7924a1ab 100644 --- a/src/cpu/scpu/core/op_rmw.cpp +++ b/src/cpu/scpu/core/op_rmw.cpp @@ -4,11 +4,11 @@ case 0x1a: { op_io(); if(regs.p.m) { regs.a.l++; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } else { regs.a.w++; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } } break; @@ -19,11 +19,11 @@ case 0xe8: { op_io(); if(regs.p.x) { regs.x.l++; - regs.p.n = bool(regs.x.l & 0x80); + regs.p.n = !!(regs.x.l & 0x80); regs.p.z = (regs.x.l == 0); } else { regs.x.w++; - regs.p.n = bool(regs.x.w & 0x8000); + regs.p.n = !!(regs.x.w & 0x8000); regs.p.z = (regs.x.w == 0); } } break; @@ -34,11 +34,11 @@ case 0xc8: { op_io(); if(regs.p.x) { regs.y.l++; - regs.p.n = bool(regs.y.l & 0x80); + regs.p.n = !!(regs.y.l & 0x80); regs.p.z = (regs.y.l == 0); } else { regs.y.w++; - regs.p.n = bool(regs.y.w & 0x8000); + regs.p.n = !!(regs.y.w & 0x8000); regs.p.z = (regs.y.w == 0); } } break; @@ -49,11 +49,11 @@ case 0x3a: { op_io(); if(regs.p.m) { regs.a.l--; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } else { regs.a.w--; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } } break; @@ -64,11 +64,11 @@ case 0xca: { op_io(); if(regs.p.x) { regs.x.l--; - regs.p.n = bool(regs.x.l & 0x80); + regs.p.n = !!(regs.x.l & 0x80); regs.p.z = (regs.x.l == 0); } else { regs.x.w--; - regs.p.n = bool(regs.x.w & 0x8000); + regs.p.n = !!(regs.x.w & 0x8000); regs.p.z = (regs.x.w == 0); } } break; @@ -79,11 +79,11 @@ case 0x88: { op_io(); if(regs.p.x) { regs.y.l--; - regs.p.n = bool(regs.y.l & 0x80); + regs.p.n = !!(regs.y.l & 0x80); regs.p.z = (regs.y.l == 0); } else { regs.y.w--; - regs.p.n = bool(regs.y.w & 0x8000); + regs.p.n = !!(regs.y.w & 0x8000); regs.p.z = (regs.y.w == 0); } } break; @@ -93,14 +93,14 @@ case 0x0a: { last_cycle(); op_io(); if(regs.p.m) { - regs.p.c = bool(regs.a.l & 0x80); + regs.p.c = !!(regs.a.l & 0x80); regs.a.l <<= 1; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } else { - regs.p.c = bool(regs.a.w & 0x8000); + regs.p.c = !!(regs.a.w & 0x8000); regs.a.w <<= 1; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } } break; @@ -112,12 +112,12 @@ case 0x4a: { if(regs.p.m) { regs.p.c = regs.a.l & 1; regs.a.l >>= 1; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } else { regs.p.c = regs.a.w & 1; regs.a.w >>= 1; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } } break; @@ -128,16 +128,16 @@ case 0x2a: { op_io(); uint16 c = regs.p.c; if(regs.p.m) { - regs.p.c = bool(regs.a.l & 0x80); + regs.p.c = !!(regs.a.l & 0x80); regs.a.l <<= 1; regs.a.l |= c; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } else { - regs.p.c = bool(regs.a.w & 0x8000); + regs.p.c = !!(regs.a.w & 0x8000); regs.a.w <<= 1; regs.a.w |= c; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } } break; @@ -152,14 +152,14 @@ case 0x6a: { regs.p.c = regs.a.l & 1; regs.a.l >>= 1; regs.a.l |= c; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } else { c = (regs.p.c)?0x8000:0; regs.p.c = regs.a.w & 1; regs.a.w >>= 1; regs.a.w |= c; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } } break; diff --git a/src/cpu/scpu/core/opfn.cpp b/src/cpu/scpu/core/opfn.cpp index ca981f41..9527d983 100644 --- a/src/cpu/scpu/core/opfn.cpp +++ b/src/cpu/scpu/core/opfn.cpp @@ -23,8 +23,8 @@ int32 r = regs.a.l + rd.l + regs.p.c; r = regs.a.l + rd.l + regs.p.c; regs.p.c = (r > 0xff); } - regs.p.n = bool(r & 0x80); - regs.p.v = bool(~(regs.a.l ^ rd.l) & (regs.a.l ^ r) & 0x80); + regs.p.n = !!(r & 0x80); + regs.p.v = !!(~(regs.a.l ^ rd.l) & (regs.a.l ^ r) & 0x80); regs.p.z = ((uint8)r == 0); regs.a.l = r; } @@ -67,135 +67,135 @@ int32 r; r = regs.a.w + rd.w + regs.p.c; regs.p.c = (r > 0xffff); } - regs.p.n = bool(r & 0x8000); - regs.p.v = bool(~(regs.a.w ^ rd.w) & (regs.a.w ^ r) & 0x8000); + regs.p.n = !!(r & 0x8000); + regs.p.v = !!(~(regs.a.w ^ rd.w) & (regs.a.w ^ r) & 0x8000); regs.p.z = ((uint16)r == 0); regs.a.w = r; } inline void sCPU::op_and_b() { regs.a.l &= rd.l; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } inline void sCPU::op_and_w() { regs.a.w &= rd.w; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } inline void sCPU::op_bit_b() { - regs.p.n = bool(rd.l & 0x80); - regs.p.v = bool(rd.l & 0x40); + regs.p.n = !!(rd.l & 0x80); + regs.p.v = !!(rd.l & 0x40); regs.p.z = ((rd.l & regs.a.l) == 0); } inline void sCPU::op_bit_w() { - regs.p.n = bool(rd.w & 0x8000); - regs.p.v = bool(rd.w & 0x4000); + regs.p.n = !!(rd.w & 0x8000); + regs.p.v = !!(rd.w & 0x4000); regs.p.z = ((rd.w & regs.a.w) == 0); } inline void sCPU::op_cmp_b() { int32 r = regs.a.l - rd.l; - regs.p.n = bool(r & 0x80); + regs.p.n = !!(r & 0x80); regs.p.z = ((uint8)r == 0); regs.p.c = (r >= 0); } inline void sCPU::op_cmp_w() { int32 r = regs.a.w - rd.w; - regs.p.n = bool(r & 0x8000); + regs.p.n = !!(r & 0x8000); regs.p.z = ((uint16)r == 0); regs.p.c = (r >= 0); } inline void sCPU::op_cpx_b() { int32 r = regs.x.l - rd.l; - regs.p.n = bool(r & 0x80); + regs.p.n = !!(r & 0x80); regs.p.z = ((uint8)r == 0); regs.p.c = (r >= 0); } inline void sCPU::op_cpx_w() { int32 r = regs.x.w - rd.w; - regs.p.n = bool(r & 0x8000); + regs.p.n = !!(r & 0x8000); regs.p.z = ((uint16)r == 0); regs.p.c = (r >= 0); } inline void sCPU::op_cpy_b() { int32 r = regs.y.l - rd.l; - regs.p.n = bool(r & 0x80); + regs.p.n = !!(r & 0x80); regs.p.z = ((uint8)r == 0); regs.p.c = (r >= 0); } inline void sCPU::op_cpy_w() { int32 r = regs.y.w - rd.w; - regs.p.n = bool(r & 0x8000); + regs.p.n = !!(r & 0x8000); regs.p.z = ((uint16)r == 0); regs.p.c = (r >= 0); } inline void sCPU::op_eor_b() { regs.a.l ^= rd.l; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } inline void sCPU::op_eor_w() { regs.a.w ^= rd.w; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } inline void sCPU::op_lda_b() { regs.a.l = rd.l; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } inline void sCPU::op_lda_w() { regs.a.w = rd.w; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } inline void sCPU::op_ldx_b() { regs.x.l = rd.l; - regs.p.n = bool(regs.x.l & 0x80); + regs.p.n = !!(regs.x.l & 0x80); regs.p.z = (regs.x.l == 0); } inline void sCPU::op_ldx_w() { regs.x.w = rd.w; - regs.p.n = bool(regs.x.w & 0x8000); + regs.p.n = !!(regs.x.w & 0x8000); regs.p.z = (regs.x.w == 0); } inline void sCPU::op_ldy_b() { regs.y.l = rd.l; - regs.p.n = bool(regs.y.l & 0x80); + regs.p.n = !!(regs.y.l & 0x80); regs.p.z = (regs.y.l == 0); } inline void sCPU::op_ldy_w() { regs.y.w = rd.w; - regs.p.n = bool(regs.y.w & 0x8000); + regs.p.n = !!(regs.y.w & 0x8000); regs.p.z = (regs.y.w == 0); } inline void sCPU::op_ora_b() { regs.a.l |= rd.l; - regs.p.n = bool(regs.a.l & 0x80); + regs.p.n = !!(regs.a.l & 0x80); regs.p.z = (regs.a.l == 0); } inline void sCPU::op_ora_w() { regs.a.w |= rd.w; - regs.p.n = bool(regs.a.w & 0x8000); + regs.p.n = !!(regs.a.w & 0x8000); regs.p.z = (regs.a.w == 0); } @@ -221,8 +221,8 @@ int32 r; r = regs.a.l - rd.l - !regs.p.c; regs.p.c = (r >= 0); } - regs.p.n = bool(r & 0x80); - regs.p.v = bool((regs.a.l ^ rd.l) & (regs.a.l ^ r) & 0x80); + regs.p.n = !!(r & 0x80); + regs.p.v = !!((regs.a.l ^ rd.l) & (regs.a.l ^ r) & 0x80); regs.p.z = ((uint8)r == 0); regs.a.l = r; } @@ -261,8 +261,8 @@ int32 r; r = regs.a.w - rd.w - !regs.p.c; regs.p.c = (r >= 0); } - regs.p.n = bool(r & 0x8000); - regs.p.v = bool((regs.a.w ^ rd.w) & (regs.a.w ^ r) & 0x8000); + regs.p.n = !!(r & 0x8000); + regs.p.v = !!((regs.a.w ^ rd.w) & (regs.a.w ^ r) & 0x8000); regs.p.z = ((uint16)r == 0); regs.a.w = r; } @@ -270,89 +270,85 @@ int32 r; //op_rmw inline void sCPU::op_inc_b() { rd.l++; - regs.p.n = bool(rd.l & 0x80); + regs.p.n = !!(rd.l & 0x80); regs.p.z = (rd.l == 0); } inline void sCPU::op_inc_w() { rd.w++; - regs.p.n = bool(rd.w & 0x8000); + regs.p.n = !!(rd.w & 0x8000); regs.p.z = (rd.w == 0); } inline void sCPU::op_dec_b() { rd.l--; - regs.p.n = bool(rd.l & 0x80); + regs.p.n = !!(rd.l & 0x80); regs.p.z = (rd.l == 0); } inline void sCPU::op_dec_w() { rd.w--; - regs.p.n = bool(rd.w & 0x8000); + regs.p.n = !!(rd.w & 0x8000); regs.p.z = (rd.w == 0); } inline void sCPU::op_asl_b() { - regs.p.c = bool(rd.l & 0x80); + regs.p.c = !!(rd.l & 0x80); rd.l <<= 1; - regs.p.n = bool(rd.l & 0x80); + regs.p.n = !!(rd.l & 0x80); regs.p.z = (rd.l == 0); } inline void sCPU::op_asl_w() { - regs.p.c = bool(rd.w & 0x8000); + regs.p.c = !!(rd.w & 0x8000); rd.w <<= 1; - regs.p.n = bool(rd.w & 0x8000); + regs.p.n = !!(rd.w & 0x8000); regs.p.z = (rd.w == 0); } inline void sCPU::op_lsr_b() { regs.p.c = rd.l & 1; rd.l >>= 1; - regs.p.n = bool(rd.l & 0x80); + regs.p.n = !!(rd.l & 0x80); regs.p.z = (rd.l == 0); } inline void sCPU::op_lsr_w() { regs.p.c = rd.w & 1; rd.w >>= 1; - regs.p.n = bool(rd.w & 0x8000); + regs.p.n = !!(rd.w & 0x8000); regs.p.z = (rd.w == 0); } inline void sCPU::op_rol_b() { -uint16 c = regs.p.c; - regs.p.c = bool(rd.l & 0x80); - rd.l <<= 1; - rd.l |= c; - regs.p.n = bool(rd.l & 0x80); +uint16 carry = (uint16)regs.p.c; + regs.p.c = !!(rd.l & 0x80); + rd.l = (rd.l << 1) | carry; + regs.p.n = !!(rd.l & 0x80); regs.p.z = (rd.l == 0); } inline void sCPU::op_rol_w() { -uint16 c = regs.p.c; - regs.p.c = bool(rd.w & 0x8000); - rd.w <<= 1; - rd.w |= c; - regs.p.n = bool(rd.w & 0x8000); +uint16 carry = (uint16)regs.p.c; + regs.p.c = !!(rd.w & 0x8000); + rd.w = (rd.w << 1) | carry; + regs.p.n = !!(rd.w & 0x8000); regs.p.z = (rd.w == 0); } inline void sCPU::op_ror_b() { -uint16 c = (regs.p.c)?0x80:0; +uint16 carry = (uint16)regs.p.c << 7; regs.p.c = rd.l & 1; - rd.l >>= 1; - rd.l |= c; - regs.p.n = bool(rd.l & 0x80); + rd.l = carry | (rd.l >> 1); + regs.p.n = !!(rd.l & 0x80); regs.p.z = (rd.l == 0); } inline void sCPU::op_ror_w() { -uint16 c = (regs.p.c)?0x8000:0; +uint16 carry = (uint16)regs.p.c << 15; regs.p.c = rd.w & 1; - rd.w >>= 1; - rd.w |= c; - regs.p.n = bool(rd.w & 0x8000); + rd.w = carry | (rd.w >> 1); + regs.p.n = !!(rd.w & 0x8000); regs.p.z = (rd.w == 0); } diff --git a/src/cpu/scpu/dma/dma.cpp b/src/cpu/scpu/dma/dma.cpp index bf15c955..c1d87fe5 100644 --- a/src/cpu/scpu/dma/dma.cpp +++ b/src/cpu/scpu/dma/dma.cpp @@ -1,3 +1,8 @@ +void sCPU::dma_add_clocks(uint clocks) { + status.dma_clocks += clocks; + add_clocks(clocks); +} + /***** * used by both DMA and HDMA * @@ -29,8 +34,7 @@ uint8 r; r_mem->write(abus, r); } - status.dma_clocks += 8; - add_clocks(8); + dma_add_clocks(8); cycle_edge(); } @@ -104,8 +108,7 @@ inline void sCPU::dma_write(uint8 i, uint8 index) { void sCPU::dma_run() { for(int i = 0; i < 8; i++) { if(channel[i].dma_enabled == false)continue; - status.dma_clocks += 8; - add_clocks(8); + dma_add_clocks(8); if(cartridge.info.sdd1 == true) { sdd1->dma_begin(i, (channel[i].srcbank << 16) | (channel[i].srcaddr), @@ -129,7 +132,7 @@ void sCPU::dma_run() { channel[i].dma_enabled = false; } - counter.set(counter.irq_delay, 24); + counter.set(counter.irq_delay, 2); } /***** @@ -166,19 +169,19 @@ uint8 r = 0; void sCPU::hdma_update(uint8 i) { channel[i].hdma_line_counter = r_mem->read(hdma_addr(i)); - add_clocks(8); + dma_add_clocks(8); channel[i].hdma_completed = (channel[i].hdma_line_counter == 0); channel[i].hdma_do_transfer = !channel[i].hdma_completed; if(channel[i].hdma_indirect) { channel[i].hdma_iaddr = r_mem->read(hdma_addr(i)) << 8; - add_clocks(8); + dma_add_clocks(8); if(!channel[i].hdma_completed || hdma_active_after(i)) { channel[i].hdma_iaddr >>= 8; channel[i].hdma_iaddr |= r_mem->read(hdma_addr(i)) << 8; - add_clocks(8); + dma_add_clocks(8); } } } @@ -188,7 +191,7 @@ static uint8 hdma_xferlen[8] = { 1, 2, 2, 4, 4, 4, 2, 4 }; for(int i = 0; i < 8; i++) { if(hdma_active(i) == false)continue; channel[i].dma_enabled = false; //HDMA run during DMA will stop DMA mid-transfer - add_clocks(8); + dma_add_clocks(8); if(channel[i].hdma_do_transfer) { int xferlen = hdma_xferlen[channel[i].xfermode]; @@ -197,7 +200,7 @@ static uint8 hdma_xferlen[8] = { 1, 2, 2, 4, 4, 4, 2, 4 }; dma_transfer(channel[i].direction, dma_bbus(i, index), !channel[i].hdma_indirect ? hdma_addr(i) : hdma_iaddr(i)); } else { - add_clocks(8); + dma_add_clocks(8); cycle_edge(); } } @@ -210,7 +213,7 @@ static uint8 hdma_xferlen[8] = { 1, 2, 2, 4, 4, 4, 2, 4 }; } } - counter.set(counter.irq_delay, 24); + counter.set(counter.irq_delay, 2); } void sCPU::hdma_init_reset() { @@ -229,7 +232,7 @@ void sCPU::hdma_init() { hdma_update(i); } - counter.set(counter.irq_delay, 24); + counter.set(counter.irq_delay, 2); } /***** diff --git a/src/cpu/scpu/dma/dma.h b/src/cpu/scpu/dma/dma.h index 104ebe44..845e2f8d 100644 --- a/src/cpu/scpu/dma/dma.h +++ b/src/cpu/scpu/dma/dma.h @@ -45,6 +45,7 @@ struct { bool hdma_do_transfer; } channel[8]; + void dma_add_clocks(uint clocks); void dma_transfer(bool direction, uint8 bbus, uint32 abus); uint8 dma_bbus(uint8 i, uint8 index); diff --git a/src/cpu/scpu/mmio/mmio.cpp b/src/cpu/scpu/mmio/mmio.cpp index fdd9534e..66b1320d 100644 --- a/src/cpu/scpu/mmio/mmio.cpp +++ b/src/cpu/scpu/mmio/mmio.cpp @@ -41,7 +41,7 @@ void sCPU::mmio_w4016(uint8 data) { status.joypad_strobe_latch = !!(data & 1); if(status.joypad_strobe_latch == 1) { - snes->poll_input(); + snes.poll_input(); } } @@ -53,7 +53,7 @@ void sCPU::mmio_w4016(uint8 data) { //realtime or buffered status of joypadN.b uint8 sCPU::mmio_r4016() { uint8 r = regs.mdr & 0xfc; - r |= (uint8)snes->port_read(0); + r |= (uint8)snes.port_read(0); return r; } @@ -63,43 +63,14 @@ uint8 r = regs.mdr & 0xfc; //1-0 = Joypad serial data uint8 sCPU::mmio_r4017() { uint8 r = (regs.mdr & 0xe0) | 0x1c; - r |= (uint8)snes->port_read(1); + r |= (uint8)snes.port_read(1); return r; } //NMITIMEN void sCPU::mmio_w4200(uint8 data) { - status.nmi_enabled = !!(data & 0x80); - status.virq_enabled = !!(data & 0x20); - status.hirq_enabled = !!(data & 0x10); status.auto_joypad_poll = !!(data & 0x01); - - if(status.nmi_read == 0) { - if(status.nmi_line == 1 && status.nmi_enabled == 1) { - status.nmi_transition = 1; - } - status.nmi_line = !status.nmi_enabled; - } - - if(status.irq_read == 0) { - if(status.irq_line == 1 && (status.virq_enabled || status.hirq_enabled)) { - status.irq_transition = 1; - } - status.irq_line = !(status.virq_enabled || status.hirq_enabled); - } - - if(status.virq_enabled == true && status.hirq_enabled == false) { - status.irq_lock = false; - } - - if(status.virq_enabled == false && status.hirq_enabled == false) { - status.irq_line = 1; - status.irq_read = 1; - status.irq_transition = 0; - } - - update_interrupts(); - counter.set(counter.irq_delay, 2); + nmitimen_update(data); } //WRIO @@ -144,32 +115,28 @@ void sCPU::mmio_w4206(uint8 data) { void sCPU::mmio_w4207(uint8 data) { status.hirq_pos = (status.hirq_pos & ~0xff) | (data); status.hirq_pos &= 0x01ff; - update_interrupts(); - irqpos_update(0x4207); + hvtime_update(0x4207); } //HTIMEH void sCPU::mmio_w4208(uint8 data) { status.hirq_pos = (status.hirq_pos & 0xff) | (data << 8); status.hirq_pos &= 0x01ff; - update_interrupts(); - irqpos_update(0x4208); + hvtime_update(0x4208); } //VTIMEL void sCPU::mmio_w4209(uint8 data) { status.virq_pos = (status.virq_pos & ~0xff) | (data); status.virq_pos &= 0x01ff; - update_interrupts(); - irqpos_update(0x4209); + hvtime_update(0x4209); } //VTIMEH void sCPU::mmio_w420a(uint8 data) { status.virq_pos = (status.virq_pos & 0xff) | (data << 8); status.virq_pos &= 0x01ff; - update_interrupts(); - irqpos_update(0x420a); + hvtime_update(0x420a); } //DMAEN @@ -201,12 +168,7 @@ void sCPU::mmio_w420d(uint8 data) { //3-0 = CPU (5a22) version uint8 sCPU::mmio_r4210() { uint8 r = (regs.mdr & 0x70); - r |= (uint8)(!status.nmi_read) << 7; - - if(!nmi_edge()) { - status.nmi_read = 1; - } - + r |= (uint8)(rdnmi()) << 7; r |= (cpu_version & 0x0f); return r; } @@ -216,14 +178,7 @@ uint8 r = (regs.mdr & 0x70); //6-0 = MDR uint8 sCPU::mmio_r4211() { uint8 r = (regs.mdr & 0x7f); - r |= (uint8)(!status.irq_read) << 7; - - if(!irq_edge()) { - status.irq_read = 1; - status.irq_line = 1; - status.irq_transition = 0; - } - + r |= (uint8)(timeup()) << 7; return r; } diff --git a/src/cpu/scpu/scpu.cpp b/src/cpu/scpu/scpu.cpp index e7658acc..4fdba6fd 100644 --- a/src/cpu/scpu/scpu.cpp +++ b/src/cpu/scpu/scpu.cpp @@ -7,7 +7,7 @@ #include "timing/timing.cpp" void sCPU::power() { - status.region = (bool)snes->region(); + status.region = (bool)snes.region(); regs.a = regs.x = regs.y = 0x0000; regs.s = 0x01ff; diff --git a/src/cpu/scpu/scpu.h b/src/cpu/scpu/scpu.h index f2d45c9c..a9c991ed 100644 --- a/src/cpu/scpu/scpu.h +++ b/src/cpu/scpu/scpu.h @@ -16,6 +16,9 @@ struct { } event; struct { + uint nmi_hold; + uint irq_hold; + uint nmi_fire; uint irq_fire; uint irq_delay; @@ -55,6 +58,7 @@ struct { bool interlace, interlace_field; bool overscan; uint16 field_lines, line_clocks; + uint16 prev_field_lines, prev_line_clocks; uint16 vblstart; bool line_rendered; @@ -70,15 +74,17 @@ struct { uint16 irq_delay; - uint16 nmi_trigger_pos; - uint16 nmi_read_pos, nmi_line_pos; - bool nmi_read, nmi_line, nmi_transition; - bool nmi_lock, nmi_pending; + uint16 vnmi_trigger_pos; + bool nmi_valid; + bool nmi_line; + bool nmi_transition; + bool nmi_pending; uint16 virq_trigger_pos, hirq_trigger_pos; - uint16 irq_read_pos, irq_line_pos; - bool irq_read, irq_line, irq_transition; - bool irq_lock, irq_pending; + bool irq_valid; + bool irq_line; + bool irq_transition; + bool irq_pending; //dma uint dma_counter; diff --git a/src/cpu/scpu/timing/irq.cpp b/src/cpu/scpu/timing/irq.cpp index f84c71dc..0765ee93 100644 --- a/src/cpu/scpu/timing/irq.cpp +++ b/src/cpu/scpu/timing/irq.cpp @@ -1,8 +1,4 @@ -#if defined(FAVOR_ACCURACY) - #include "irqtiming_accurate.cpp" -#elif defined(FAVOR_SPEED) - #include "irqtiming_fast.cpp" -#endif +#include "irqtiming.cpp" bool sCPU::irq_pos_valid() { uint vpos = status.virq_pos; @@ -21,15 +17,25 @@ uint vlimit = region_scanlines() >> 1; return true; } -alwaysinline bool sCPU::nmi_test() { - if(status.nmi_transition == 0)return false; +alwaysinline +bool sCPU::nmi_test() { + if(status.nmi_transition == false) { return false; } + status.nmi_transition = false; - status.nmi_transition = 0; event.wai = false; return true; } -alwaysinline bool sCPU::irq_test() { +alwaysinline +bool sCPU::irq_test() { + if(status.irq_transition == false) { return false; } + status.irq_transition = false; + + event.wai = false; + return (regs.p.i) ? false : true; +} + +/* if(status.irq_transition == 1)goto irq_trigger; if(status.irq_read == 0) { @@ -51,3 +57,4 @@ irq_trigger: event.wai = false; return (regs.p.i) ? false : true; } +*/ diff --git a/src/cpu/scpu/timing/irqtiming.cpp b/src/cpu/scpu/timing/irqtiming.cpp new file mode 100644 index 00000000..f29e6d5d --- /dev/null +++ b/src/cpu/scpu/timing/irqtiming.cpp @@ -0,0 +1,105 @@ +void sCPU::update_interrupts() { + status.vnmi_trigger_pos = status.vblstart; + + if(irq_pos_valid() == true) { + status.virq_trigger_pos = status.virq_pos; + status.hirq_trigger_pos = 4 * ((status.hirq_enabled) ? (status.hirq_pos + 1) : 0); + } else { + status.virq_trigger_pos = IRQ_TRIGGER_NEVER; + status.hirq_trigger_pos = IRQ_TRIGGER_NEVER; + } +} + +alwaysinline +void sCPU::poll_interrupts() { +uint vpos = status.vcounter, hpos = status.hclock; + +//NMI test + timeshift_backward(2, vpos, hpos); +bool nmi_valid = (vpos >= status.vnmi_trigger_pos); + if(status.nmi_valid == false && nmi_valid == true) { + //0->1 edge sensitive transition + status.nmi_line = true; + counter.nmi_hold = 6; + } else if(status.nmi_valid == true && nmi_valid == false) { + //1->0 edge sensitive transition + status.nmi_line = false; + } + status.nmi_valid = nmi_valid; + +//NMI hold + if(counter.nmi_hold) { + counter.nmi_hold -= 2; + if(counter.nmi_hold == 0) { + if(status.nmi_enabled == true) { status.nmi_transition = true; } + } + } + +//IRQ test + timeshift_backward(8, vpos, hpos); +bool irq_valid = (status.virq_enabled == true || status.hirq_enabled == true); + if(irq_valid == true) { + if(status.virq_enabled == true && vpos != status.virq_trigger_pos) { irq_valid = false; } + if(status.hirq_enabled == true && hpos != status.hirq_trigger_pos) { irq_valid = false; } + } + if(status.irq_valid == false && irq_valid == true) { + //0->1 edge sensitive transition + status.irq_line = true; + counter.irq_hold = 6; + } + status.irq_valid = irq_valid; + +//IRQ hold + if(counter.irq_hold) { counter.irq_hold -= 2; } + if(status.irq_line == true && counter.irq_hold == 0) { + if(status.virq_enabled == true || status.hirq_enabled == true) { status.irq_transition = true; } + } +} + +void sCPU::nmitimen_update(uint8 data) { +bool nmi_enabled = status.nmi_enabled; +bool virq_enabled = status.virq_enabled; +bool hirq_enabled = status.hirq_enabled; + status.nmi_enabled = !!(data & 0x80); + status.virq_enabled = !!(data & 0x20); + status.hirq_enabled = !!(data & 0x10); + +//0->1 edge sensitive transition + if(nmi_enabled == false && status.nmi_enabled == true && status.nmi_line == true) { + status.nmi_transition = true; + } + +//?->1 level sensitive transition + if(status.virq_enabled == true && status.hirq_enabled == false && status.irq_line == true) { + status.irq_transition = true; + } + + if(status.virq_enabled == false && status.hirq_enabled == false) { + status.irq_line = false; + status.irq_transition = false; + } + + update_interrupts(); + counter.set(counter.irq_delay, 2); +} + +void sCPU::hvtime_update(uint16 addr) { + update_interrupts(); +} + +bool sCPU::rdnmi() { +bool result = status.nmi_line; + if(counter.nmi_hold == 0) { + status.nmi_line = false; + } + return result; +} + +bool sCPU::timeup() { +bool result = status.irq_line; + if(counter.irq_hold == 0) { + status.irq_line = false; + status.irq_transition = false; + } + return result; +} diff --git a/src/cpu/scpu/timing/irqtiming_accurate.cpp b/src/cpu/scpu/timing/irqtiming_accurate.cpp deleted file mode 100644 index 31365381..00000000 --- a/src/cpu/scpu/timing/irqtiming_accurate.cpp +++ /dev/null @@ -1,76 +0,0 @@ -void sCPU::update_interrupts() { - status.nmi_trigger_pos = (status.vcounter == status.vblstart) ? 2 : IRQ_TRIGGER_NEVER; - - if(irq_pos_valid() == true) { - status.virq_trigger_pos = status.virq_pos; - status.hirq_trigger_pos = 4 * ((status.hirq_enabled) ? (status.hirq_pos + 1) : 0); - } else { - status.virq_trigger_pos = IRQ_TRIGGER_NEVER; - status.hirq_trigger_pos = IRQ_TRIGGER_NEVER; - } -} - -alwaysinline void sCPU::poll_interrupts(uint clocks) { - clocks >>= 1; - while(clocks--) { - status.hclock += 2; - if(status.hclock >= status.line_clocks) { scanline(); } - - //NMI tick - if(counter.nmi_fire) { - counter.nmi_fire -= 2; - if(counter.nmi_fire == 0) { - if(status.nmi_enabled == true && status.nmi_line == 1) { - status.nmi_line = 0; - status.nmi_transition = 1; - } - } - } - - //IRQ tick - if(counter.irq_fire) { - counter.irq_fire -= 2; - if(counter.irq_fire == 0) { - if(status.virq_enabled == true || status.hirq_enabled == true) { - status.irq_line = 0; - status.irq_transition = 1; - } - } - } - - //NMI test - if(status.hclock == status.nmi_trigger_pos) { - status.nmi_read = 0; - counter.nmi_fire = 4; - } - - //IRQ test - if(status.hclock == 10) { status.irq_lock = false; } - - if(status.hirq_trigger_pos == IRQ_TRIGGER_NEVER) { continue; } - if(status.virq_enabled == false && status.hirq_enabled == false) { continue; } - if(status.irq_lock == true) { continue; } - - uint vpos = status.vcounter, hpos = status.hclock; - timeshift_backward(10, vpos, hpos); - - bool trigger_irq = true; - if(status.virq_enabled == true && vpos != status.virq_trigger_pos)trigger_irq = false; - if(status.hirq_enabled == true && hpos != status.hirq_trigger_pos)trigger_irq = false; - - if(trigger_irq == true) { - status.irq_lock = true; - status.irq_read = 0; - counter.irq_fire = 4; - } - } -} - -bool sCPU::nmi_edge() { return (counter.nmi_fire != 0); } -bool sCPU::irq_edge() { return (counter.irq_fire != 0); } - -void sCPU::irqpos_update(uint16 addr) { -uint vpos = status.vcounter, hpos = status.hclock; - timeshift_backward(10, vpos, hpos); - if(hpos < status.hirq_trigger_pos) { status.irq_lock = false; } -} diff --git a/src/cpu/scpu/timing/irqtiming_fast.cpp b/src/cpu/scpu/timing/irqtiming_fast.cpp deleted file mode 100644 index 4d2b4d83..00000000 --- a/src/cpu/scpu/timing/irqtiming_fast.cpp +++ /dev/null @@ -1,111 +0,0 @@ -void sCPU::update_interrupts() { - status.nmi_read_pos = (status.vcounter == status.vblstart) ? 2 : IRQ_TRIGGER_NEVER; - status.nmi_line_pos = (status.vcounter == status.vblstart) ? 6 : IRQ_TRIGGER_NEVER; - - if(irq_pos_valid() == false) { - status.irq_read_pos = IRQ_TRIGGER_NEVER; - status.irq_line_pos = IRQ_TRIGGER_NEVER; - return; - } - -uint vpos = status.virq_pos; -uint hpos = 4 * ((status.hirq_enabled) ? (status.hirq_pos + 1) : 0); - timeshift_forward(10, vpos, hpos); - if(!status.virq_enabled || (status.virq_enabled && status.vcounter == vpos)) { - status.irq_read_pos = hpos; - } else { - status.irq_read_pos = IRQ_TRIGGER_NEVER; - } - - timeshift_forward(4, vpos, hpos); - if(!status.virq_enabled || (status.virq_enabled && status.vcounter == vpos)) { - status.irq_line_pos = hpos; - } else { - status.irq_line_pos = IRQ_TRIGGER_NEVER; - } -} - -alwaysinline void sCPU::poll_interrupts(uint clocks) { - if(status.hclock + clocks >= status.line_clocks) { - clocks = (status.hclock + clocks) - status.line_clocks; - poll_interrupts_range(status.line_clocks - status.hclock); - scanline(); - status.irq_lock = false; - if(clocks == 0) { return; } - } - - poll_interrupts_range(clocks); - status.hclock += clocks; -} - -alwaysinline void sCPU::poll_interrupts_range(uint clocks) { -int start, end; - if(status.hclock == 0) { - start = -1; - end = clocks; - } else { - start = status.hclock; - end = status.hclock + clocks; - } - - if(start < status.nmi_read_pos && status.nmi_read_pos <= end) { - status.nmi_read = 0; - } - - if(start < status.nmi_line_pos && status.nmi_line_pos <= end) { - if(status.nmi_enabled == true) { - if(status.nmi_line == 1) { - status.nmi_transition = 1; - } - status.nmi_line = 0; - } - } - - if(status.virq_enabled == false && status.hirq_enabled == false) { - return; - } - - if(status.hirq_enabled == false) { - if(status.irq_lock == false) { - if(end >= status.irq_read_pos) { - status.irq_read = 0; - } - - if(end >= status.irq_line_pos) { - status.irq_lock = true; - status.irq_line = 0; - status.irq_transition = 1; - } - } - } else { - if(start < status.irq_read_pos && status.irq_read_pos <= end) { - status.irq_read = 0; - } - - if(start < status.irq_line_pos && status.irq_line_pos <= end) { - status.irq_lock = true; - status.irq_line = 0; - status.irq_transition = 1; - } - } -} - -bool sCPU::nmi_edge() { -uint vpos = status.vcounter, hpos = status.hclock; - if(hpos == status.nmi_read_pos)return true; - timeshift_backward(2, vpos, hpos); - if(hpos == status.nmi_read_pos)return true; - return false; -} - -bool sCPU::irq_edge() { -uint vpos = status.vcounter, hpos = status.hclock; - if(hpos == status.irq_read_pos)return true; - timeshift_backward(2, vpos, hpos); - if(hpos == status.irq_read_pos)return true; - return false; -} - -void sCPU::irqpos_update(uint16 addr) { - if(status.hclock < status.irq_line_pos) { status.irq_lock = false; } -} diff --git a/src/cpu/scpu/timing/joypad.cpp b/src/cpu/scpu/timing/joypad.cpp index 841c9ae7..3cd1924a 100644 --- a/src/cpu/scpu/timing/joypad.cpp +++ b/src/cpu/scpu/timing/joypad.cpp @@ -1,8 +1,8 @@ void sCPU::run_auto_joypad_poll() { uint16 joy1 = 0, joy2 = 0; for(int i = 0; i < 16; i++) { - joy1 |= (uint16)snes->port_read(0) ? (0x8000 >> i) : 0; - joy2 |= (uint16)snes->port_read(1) ? (0x8000 >> i) : 0; + joy1 |= (uint16)snes.port_read(0) ? (0x8000 >> i) : 0; + joy2 |= (uint16)snes.port_read(1) ? (0x8000 >> i) : 0; } status.joy1l = joy1; diff --git a/src/cpu/scpu/timing/timeshift.cpp b/src/cpu/scpu/timing/timeshift.cpp index 79ad8927..1f1408fb 100644 --- a/src/cpu/scpu/timing/timeshift.cpp +++ b/src/cpu/scpu/timing/timeshift.cpp @@ -1,6 +1,5 @@ alwaysinline void sCPU::timeshift_forward(uint clocks, uint &vtime, uint &htime) { htime += clocks; - if(htime >= status.line_clocks) { htime -= status.line_clocks; if(++vtime >= status.field_lines) { @@ -13,14 +12,11 @@ alwaysinline void sCPU::timeshift_backward(uint clocks, uint &vtime, uint &htime if(htime >= clocks) { htime -= clocks; } else { - htime += 1364 - clocks; - if(status.region == SNES::NTSC && status.vcounter == 241 && - status.interlace == false && status.interlace_field == 1)htime -= 4; + htime += status.prev_line_clocks - clocks; if(vtime > 0) { vtime--; } else { - vtime = status.region_scanlines; - if(status.interlace == true && status.interlace_field == 1)vtime++; + vtime = status.prev_field_lines - 1; } } } diff --git a/src/cpu/scpu/timing/timing.cpp b/src/cpu/scpu/timing/timing.cpp index a2c2e461..e14d1e0a 100644 --- a/src/cpu/scpu/timing/timing.cpp +++ b/src/cpu/scpu/timing/timing.cpp @@ -55,11 +55,12 @@ void sCPU::add_clocks(uint clocks) { counter.sub(counter.irq_delay, clocks); scheduler.addclocks_cpu(clocks); -//TODO: rename function to more descriptive term -//below function is responsible for incrementing status.hclock -//by clocks, calling scanline() when a new line is reached, and -//testing for and triggering NMIs and IRQs - poll_interrupts(clocks); + clocks >>= 1; + while(clocks--) { + status.hclock += 2; + if(status.hclock >= status.line_clocks) { scanline(); } + poll_interrupts(); + } } void sCPU::scanline() { @@ -70,6 +71,7 @@ void sCPU::scanline() { frame(); } + status.prev_line_clocks = status.line_clocks; status.line_clocks = (ntsc_color_burst_phase_shift_scanline() == false) ? 1364 : 1360; //dram refresh occurs once every scanline @@ -89,23 +91,20 @@ void sCPU::scanline() { status.hdma_triggered = (status.vcounter <= (!overscan() ? 224 : 239)) ? false : true; r_ppu->scanline(); - snes->scanline(); + snes.scanline(); update_interrupts(); if(status.auto_joypad_poll == true && status.vcounter == (!overscan() ? 227 : 242)) { - snes->poll_input(); + snes.poll_input(); run_auto_joypad_poll(); } } void sCPU::frame() { - status.nmi_read = 1; - status.nmi_line = 1; - status.nmi_transition = 0; - status.vcounter = 0; status.interlace_field ^= 1; + status.prev_field_lines = status.field_lines; status.field_lines = (status.region_scanlines >> 1); //interlaced even fields have one extra scanline //(263+262=525 NTSC, 313+312=625 PAL) @@ -119,7 +118,7 @@ void sCPU::frame() { } r_ppu->frame(); - snes->frame(); + snes.frame(); } /***** @@ -171,15 +170,16 @@ void sCPU::cycle_edge() { if(status.hdmainit_triggered == false) { if(status.hclock >= status.hdmainit_trigger_position || status.vcounter) { status.hdmainit_triggered = true; - hdma_init_reset(); if(hdma_enabled_channels()) { - if(status.dma_state == DMASTATE_INACTIVE) { - status.dma_state = DMASTATE_DMASYNC; - status.hdmainit_pending = true; - } else { - hdma_init(); - } + add_clocks(12); + hdma_init(); + //if(status.dma_state == DMASTATE_INACTIVE) { + // status.dma_state = DMASTATE_DMASYNC; + // status.hdmainit_pending = true; + //} else { + // hdma_init(); + //} } } } @@ -188,12 +188,14 @@ void sCPU::cycle_edge() { if(status.hclock >= 1106) { status.hdma_triggered = true; if(hdma_active_channels()) { - if(status.dma_state == DMASTATE_INACTIVE) { - status.dma_state = DMASTATE_DMASYNC; - status.hdma_pending = true; - } else { - hdma_run(); - } + add_clocks(12); + hdma_run(); + //if(status.dma_state == DMASTATE_INACTIVE) { + // status.dma_state = DMASTATE_DMASYNC; + // status.hdma_pending = true; + //} else { + // hdma_run(); + //} } } } @@ -221,6 +223,9 @@ void sCPU::timing_power() { } void sCPU::timing_reset() { + counter.nmi_hold = 0; + counter.irq_hold = 0; + counter.nmi_fire = 0; counter.irq_fire = 0; counter.irq_delay = 0; @@ -241,8 +246,11 @@ void sCPU::timing_reset() { status.field_lines = status.region_scanlines >> 1; status.line_clocks = 1364; + status.prev_field_lines = status.region_scanlines >> 1; + status.prev_line_clocks = 1364; + status.line_rendered = false; - status.line_render_position = minmax<0, 1112>((uint16)config::ppu.render_scanline_position); + status.line_render_position = minmax<0, 1112>((uint16)config::ppu.hack.render_scanline_position); status.dram_refreshed = false; status.dram_refresh_position = (cpu_version == 1) ? 530 : 538; @@ -254,16 +262,14 @@ void sCPU::timing_reset() { status.irq_delay = 0; - status.nmi_read = 1; - status.nmi_line = 1; - status.nmi_transition = 0; - status.nmi_lock = false; + status.nmi_valid = false; + status.nmi_line = false; + status.nmi_transition = false; status.nmi_pending = false; - status.irq_read = 1; - status.irq_line = 1; - status.irq_transition = 0; - status.irq_lock = false; + status.irq_valid = false; + status.irq_line = false; + status.irq_transition = false; status.irq_pending = false; update_interrupts(); diff --git a/src/cpu/scpu/timing/timing.h b/src/cpu/scpu/timing/timing.h index 05817c90..975aa1b5 100644 --- a/src/cpu/scpu/timing/timing.h +++ b/src/cpu/scpu/timing/timing.h @@ -31,13 +31,12 @@ //irq.cpp enum { IRQ_TRIGGER_NEVER = 0x3fff }; void update_interrupts(); - void poll_interrupts(uint clocks); -#ifdef FAVOR_SPEED - void poll_interrupts_range(uint clocks); -#endif - bool nmi_edge(); - bool irq_edge(); - void irqpos_update(uint16 addr); + void poll_interrupts(); + void nmitimen_update(uint8 data); + void hvtime_update(uint16 addr); + bool rdnmi(); + bool timeup(); + bool irq_pos_valid(); bool nmi_test(); bool irq_test(); diff --git a/src/dsp/bdsp/bdsp.cpp b/src/dsp/bdsp/bdsp.cpp index debc9d4f..681a4327 100644 --- a/src/dsp/bdsp/bdsp.cpp +++ b/src/dsp/bdsp/bdsp.cpp @@ -558,7 +558,7 @@ int32 fir_samplel, fir_sampler; msampler = sclamp<16>(msampler); } - return uint32( uint16(msamplel) | (uint16(msampler) << 16) ); + return (uint32)( (uint16)msamplel | ((uint16)msampler << 16) ); } bDSP::bDSP() {} diff --git a/src/lib/libbase.h b/src/lib/libbase.h index 800bec54..90bbc1b9 100644 --- a/src/lib/libbase.h +++ b/src/lib/libbase.h @@ -1,5 +1,5 @@ /* - libbase : version 0.08c ~byuu (09/28/06) + libbase : version 0.08f ~byuu (2006-11-07) */ #ifndef __LIBBASE @@ -9,6 +9,7 @@ //disable libc deprecation warnings in MSVC 2k5+ #pragma warning(disable:4996) + #define NOMINMAX #define ftruncate _chsize #define vsnprintf _vsnprintf #endif @@ -28,7 +29,10 @@ #define alwaysinline inline #define fastcall __attribute__((fastcall)) #else - #error "unsupported compiler" + #define noinline + #define inline inline + #define alwaysinline inline + #define fastcall #endif #include @@ -47,6 +51,7 @@ #define TRUE !FALSE #endif +//deprecated #define SafeFree(__n) if(__n) { free(__n); __n = 0; } #define SafeDelete(__n) if(__n) { delete(__n); __n = 0; } #define SafeRelease(__n) if(__n) { __n->Release(); __n = 0; } @@ -78,14 +83,45 @@ typedef signed long long int64; * templates *****/ +template inline void safe_free(T &handle) { + if(handle) { + free(handle); + handle = 0; + } +} + +template inline void safe_delete(T &handle) { + if(handle) { + delete handle; + handle = 0; + } +} + +template inline void safe_release(T &handle) { + if(handle) { + handle->Release(); + handle = 0; + } +} + template inline void swap(T &x, T &y) { T z = x; x = y; y = z; } +#ifdef min +#undef min +#endif +#define min(x, y) ((x < y) ? x : y) + +#ifdef max +#undef max +#endif +#define max(x, y) ((x > y) ? x : y) + template inline T minmax(const T x) { - return (x < T(min)) ? T(min) : (x > T(max)) ? T(max) : x; + return (x < (T)min) ? (T)min : (x > (T)max) ? (T)max : x; } template inline unsigned uclamp(const unsigned x) { @@ -243,6 +279,90 @@ typedef int_t<48, int64> int48; * libc extensions *****/ +static uint8 fgetb(FILE *fp) { return fgetc(fp); } +static uint8 fgetlb(FILE *fp) { return fgetc(fp); } +static uint8 fgetmb(FILE *fp) { return fgetc(fp); } + +static uint16 fgetlw(FILE *fp) { + return (fgetc(fp)) | (fgetc(fp) << 8); +} + +static uint16 fgetmw(FILE *fp) { + return (fgetc(fp) << 8) | (fgetc(fp) << 8); +} + +static uint32 fgetld(FILE *fp) { + return (fgetc(fp)) | (fgetc(fp) << 8) | (fgetc(fp) << 16) | (fgetc(fp) << 24); +} + +static uint32 fgetmd(FILE *fp) { + return (fgetc(fp) << 24) | (fgetc(fp) << 16) | (fgetc(fp) << 8) | (fgetc(fp)); +} + +static uint64 fgetlq(FILE *fp) { + return ((uint64)fgetc(fp) << 0) | ((uint64)fgetc(fp) << 8) | + ((uint64)fgetc(fp) << 16) | ((uint64)fgetc(fp) << 24) | + ((uint64)fgetc(fp) << 32) | ((uint64)fgetc(fp) << 40) | + ((uint64)fgetc(fp) << 48) | ((uint64)fgetc(fp) << 56); +} + +static uint64 fgetmq(FILE *fp) { + return ((uint64)fgetc(fp) << 56) | ((uint64)fgetc(fp) << 48) | + ((uint64)fgetc(fp) << 40) | ((uint64)fgetc(fp) << 32) | + ((uint64)fgetc(fp) << 24) | ((uint64)fgetc(fp) << 16) | + ((uint64)fgetc(fp) << 8) | ((uint64)fgetc(fp) << 0); +} + +static void fputb(FILE *fp, uint8 data) { fputc(data, fp); } +static void fputlb(FILE *fp, uint8 data) { fputc(data, fp); } +static void fputmb(FILE *fp, uint8 data) { fputc(data, fp); } + +static void fputlw(FILE *fp, uint16 data) { + fputc(data >> 0, fp); + fputc(data >> 8, fp); +} + +static void fputmw(FILE *fp, uint16 data) { + fputc(data >> 8, fp); + fputc(data >> 0, fp); +} + +static void fputld(FILE *fp, uint32 data) { + fputc(data >> 0, fp); + fputc(data >> 8, fp); + fputc(data >> 16, fp); + fputc(data >> 24, fp); +} + +static void fputmd(FILE *fp, uint32 data) { + fputc(data >> 24, fp); + fputc(data >> 16, fp); + fputc(data >> 8, fp); + fputc(data >> 0, fp); +} + +static void fputlq(FILE *fp, uint64 data) { + fputc(data >> 0, fp); + fputc(data >> 8, fp); + fputc(data >> 16, fp); + fputc(data >> 24, fp); + fputc(data >> 32, fp); + fputc(data >> 40, fp); + fputc(data >> 48, fp); + fputc(data >> 56, fp); +} + +static void fputmq(FILE *fp, uint64 data) { + fputc(data >> 56, fp); + fputc(data >> 48, fp); + fputc(data >> 40, fp); + fputc(data >> 32, fp); + fputc(data >> 24, fp); + fputc(data >> 16, fp); + fputc(data >> 8, fp); + fputc(data >> 0, fp); +} + static bool fexists(const char *fn) { FILE *fp = fopen(fn, "rb"); if(!fp)return false; @@ -270,7 +390,7 @@ uint32 size = ftell(fp); return size; } -inline int ftruncate(FILE *fp, long size) { return ftruncate(fileno(fp), size); } +static int ftruncate(FILE *fp, long size) { return ftruncate(fileno(fp), size); } /***** * crc32 calculation @@ -327,4 +447,12 @@ inline uint32 crc32_adjust(uint32 crc32, uint8 input) { return ((crc32 >> 8) & 0x00ffffff) ^ crc32_table[(crc32 ^ input) & 0xff]; } +inline uint32 crc32_calculate(uint8 *data, uint length) { +uint32 crc32 = ~0; + for(uint i = 0; i < length; i++) { + crc32 = crc32_adjust(crc32, data[i]); + } + return ~crc32; +} + #endif diff --git a/src/lib/libco_win32.cpp b/src/lib/libco_win32.cpp index 7418d168..33fe0c70 100644 --- a/src/lib/libco_win32.cpp +++ b/src/lib/libco_win32.cpp @@ -1,5 +1,5 @@ /* - libco_win32 : version 0.06 ~byuu (05/21/06) + libco_win32 : version 0.08 ~byuu (10/21/06) win32-x86 implementation of libco */ @@ -9,60 +9,62 @@ #include "libco_win32.h" -namespace libco_win32 { - bool co_enabled = false; - int co_stackptr = 0; - thread_t co_stack[4096]; - - void __stdcall coentry_proc(void *coentry) { - thread_p main = (thread_p)coentry; - main(); - } +struct cothread_struct { + void *cohandle; + cothread_p coentry; + cothread_t colink; }; -void co_init() { - if(libco_win32::co_enabled == true)return; - libco_win32::co_enabled = true; +cothread_t __co_active = 0, __co_primary = 0; +void __stdcall co_entryproc(void *coentry) { +cothread_struct *s = static_cast(coentry); + s->coentry(); + co_exit(0); +} + +cothread_t co_init() { ConvertThreadToFiber(0); +cothread_struct *s = static_cast(malloc(sizeof(cothread_struct))); + s->colink = 0; + s->coentry = 0; + s->cohandle = GetCurrentFiber(); + __co_active = __co_primary = static_cast(s); + return __co_active; } void co_term() { -/***** -//ConverFiberToThread() only exists on WinXP+ - - if(libco_win32::co_enabled == false)return; - libco_win32::co_enabled = false; - - ConvertFiberToThread(); -*****/ +//primary fiber cannot be deleted; free memory used by handle to fiber only + free(__co_primary); +//ConvertFiberToThread(); //only exists on WinXP+ } -thread_t co_active() { - if(libco_win32::co_enabled == false)co_init(); - - return GetCurrentFiber(); +cothread_t co_active() { + return __co_active; } -thread_t co_create(thread_p coentry, unsigned int heapsize) { - if(libco_win32::co_enabled == false)co_init(); - - return CreateFiber(heapsize, libco_win32::coentry_proc, (void*)coentry); +cothread_t co_create(cothread_p coentry, unsigned int heapsize) { +cothread_struct *s = static_cast(malloc(sizeof(cothread_struct))); + s->colink = co_active(); + s->coentry = coentry; + s->cohandle = CreateFiber(heapsize + 512, co_entryproc, static_cast(s)); + return static_cast(s); } -void co_delete(thread_t cothread) { - DeleteFiber(cothread); +void co_delete(cothread_t cothread) { +cothread_struct *s = static_cast(cothread); + DeleteFiber(s->cohandle); + free(cothread); } -void co_jump(thread_t cothread) { - SwitchToFiber(cothread); +void co_switch(cothread_t cothread) { + __co_active = cothread; +cothread_struct *s = static_cast(cothread); + SwitchToFiber(s->cohandle); } -void co_call(thread_t cothread) { - libco_win32::co_stack[libco_win32::co_stackptr++] = co_active(); - co_jump(cothread); -} - -void co_return() { - co_jump(libco_win32::co_stack[--libco_win32::co_stackptr]); +void co_exit(cothread_t cothread) { + if(cothread != 0) { co_switch(cothread); } +cothread_struct *s = static_cast(__co_active); + co_switch(s->colink); } diff --git a/src/lib/libco_win32.h b/src/lib/libco_win32.h index 8cd9857a..9c753110 100644 --- a/src/lib/libco_win32.h +++ b/src/lib/libco_win32.h @@ -1,15 +1,20 @@ /* - libco_win32 : version 0.06 ~byuu (05/21/2006) + libco_win32 : version 0.08 ~byuu (10/21/2006) */ -typedef void (*thread_t); -typedef void (*thread_p)(); +#define COTHREAD_STACKSIZE_TINY 0x1000 +#define COTHREAD_STACKSIZE_SMALL 0x4000 +#define COTHREAD_STACKSIZE_NORMAL 0x10000 +#define COTHREAD_STACKSIZE_LARGE 0x40000 +#define COTHREAD_STACKSIZE_HUGE 0x100000 -void co_init(); -void co_term(); -thread_t co_active(); -thread_t co_create(thread_p coentry, unsigned int heapsize); -void co_delete(thread_t cothread); -void co_jump(thread_t cothread); -void co_call(thread_t cothread); -void co_return(); +typedef void (*cothread_t); +typedef void (*cothread_p)(void); + +cothread_t co_init(); +void co_term(); +cothread_t co_active(); +cothread_t co_create(cothread_p coentry, unsigned int heapsize); +void co_delete(cothread_t cothread); +void co_switch(cothread_t cothread); +void co_exit(cothread_t cothread); diff --git a/src/lib/libco_x86.asm b/src/lib/libco_x86.asm index 0db03ed3..01fc6fed 100644 --- a/src/lib/libco_x86.asm +++ b/src/lib/libco_x86.asm @@ -1,9 +1,9 @@ ;***** -;libco_x86 : version 0.07 ~byuu (08/15/06) +;libco_x86 : version 0.08 ~byuu (10/21/06) ;cross-platform x86 implementation of libco ; ;context save/restore adheres to c/c++ ABI -;for x86 windows, linux and freebsd +;for x86 windows, osx, linux and freebsd ; ;context saves esp+ebp+esi+edi+ebx ;context ignores eax+ecx+edx @@ -14,8 +14,8 @@ section .data align 4 -co_initialized dd 0 co_active_context dd 0 +co_primary_context dd 0 section .code @@ -31,9 +31,21 @@ section .code %define co_active @co_active@0 %define co_create @co_create@8 %define co_delete @co_delete@4 -%define co_jump @co_jump@4 -%define co_call @co_call@4 -%define co_return @co_return@0 +%define co_switch @co_switch@4 +%define co_exit @co_exit@4 +%endif + +%ifdef OSX86 +%define malloc _malloc +%define free _free + +%define co_init _co_init +%define co_term _co_term +%define co_active _co_active +%define co_create _co_create +%define co_delete _co_delete +%define co_switch _co_switch +%define co_exit _co_exit %endif extern malloc @@ -44,26 +56,22 @@ global co_term global co_active global co_create global co_delete -global co_jump -global co_call -global co_return +global co_switch +global co_exit ;***** -;extern "C" void fastcall co_init(); +;extern "C" cothread_t fastcall co_init(); +;return = eax ;***** align 16 co_init: - cmp dword[co_initialized],0 ;only run co_init once - jne .end - inc dword[co_initialized] - -;create context for main thread +;create context for main cothread mov ecx,0 ;entry point for main thread is not needed - mov edx,256 ;main thread uses default program stack + mov edx,512 ;main cothread uses default program stack call co_create mov dword[co_active_context],eax -.end + mov dword[co_primary_context],eax ret ;***** @@ -72,24 +80,22 @@ co_init: align 16 co_term: + mov ecx,dword[co_primary_context] + call co_delete ret ;***** -;extern "C" thread_t fastcall co_active(); +;extern "C" cothread_t fastcall co_active(); ;return = eax ;***** align 16 co_active: - cmp dword[co_initialized],0 ;make sure co_init has been called - jne .next - call co_init -.next: mov eax,dword[co_active_context] ret ;***** -;extern "C" thread_t fastcall co_create(thread_p coentry, unsigned int heapsize); +;extern "C" cothread_t fastcall co_create(cothread_p coentry, unsigned int heapsize); ;ecx = coentry ;edx = heapsize ;return = eax @@ -97,17 +103,8 @@ co_active: align 16 co_create: - cmp dword[co_initialized],0 ;make sure co_init has been called - jne .next - push ecx - push edx - call co_init - pop edx - pop ecx -.next: - ;create heap space (stack + register storage) - add edx,28 ;+8(esp+prev_call_context)+4(coentry)+16(stack_align) + add edx,512 ;+4(esp)+4(coentry)+4(colink)+256(stack_align) push ecx push edx @@ -119,10 +116,10 @@ co_create: pop ecx add edx,eax ;set edx to point to top of stack heap - and edx,0xfffffff0 ;force 16-byte alignment of stack heap + and edx,0xffffff00 ;force 256-byte alignment of stack heap -;store thread entry point + registers so that first call to co_jump will go to coentry - mov dword[edx-4],ecx ;edx=*stack,ecx=coentry +;store thread entry point + registers so that first call to co_switch will execute coentry + mov dword[edx-4],co_entrypoint ;edx=*stack mov dword[edx-8],0 mov dword[edx-12],0 mov dword[edx-16],0 @@ -130,13 +127,15 @@ co_create: sub edx,20 ;initialize context memory heap - mov dword[eax],edx ;thread_t[0-3] = stack heap pointer (esp) - mov dword[eax+4],0 ;thread_t[4-7] = (null) pointer to prev_call_context + mov dword[eax],edx ;cothread_t[ 0- 3] = stack heap pointer (esp) + mov dword[eax+4],ecx ;cothread_t[ 4- 7] = entry point + mov ecx,dword[co_active_context] + mov dword[eax+8],ecx ;cothread_t[ 8-11] = return context ret ;return allocated memory block as thread handle ;***** -;extern "C" void fastcall co_delete(thread_t cothread); +;extern "C" void fastcall co_delete(cothread_t cothread); ;ecx = cothread ;***** @@ -148,12 +147,12 @@ co_delete: ret ;***** -;extern "C" void fastcall co_jump(thread_t cothread); +;extern "C" void fastcall co_switch(cothread_t cothread); ;ecx = cothread ;***** align 16 -co_jump: +co_switch: mov eax,dword[co_active_context] ;backup current context mov dword[co_active_context],ecx ;set new active context @@ -172,50 +171,27 @@ co_jump: ret ;***** -;extern "C" void fastcall co_call(thread_t cothread); +;extern "C" void fastcall co_exit(cothread_t cothread); ;ecx = cothread ;***** align 16 -co_call: - mov eax,dword[co_active_context] ;backup current context - mov dword[co_active_context],ecx ;set new active context - mov dword[ecx+4],eax +co_exit: + cmp ecx,0 + jne co_switch - push ebp - push esi - push edi - push ebx - mov dword[eax],esp - - mov esp,dword[ecx] - pop ebx - pop edi - pop esi - pop ebp - - ret +;if cothread is null, switch to context that created current context + mov eax,dword[co_active_context] + mov ecx,dword[eax+8] + jmp co_switch ;***** -;extern "C" void fastcall co_return(); +;void fastcall co_entrypoint(); ;***** align 16 -co_return: - mov eax,dword[co_active_context] ;backup current context - mov ecx,dword[eax+4] ;restore pre-call context - mov dword[co_active_context],ecx ;set new active context - - push ebp - push esi - push edi - push ebx - mov dword[eax],esp - - mov esp,dword[ecx] - pop ebx - pop edi - pop esi - pop ebp - - ret +co_entrypoint: + mov eax,dword[co_active_context] + call dword[eax+4] + xor ecx,ecx + jmp co_exit diff --git a/src/lib/libco_x86.h b/src/lib/libco_x86.h index a08a5347..3f482c7e 100644 --- a/src/lib/libco_x86.h +++ b/src/lib/libco_x86.h @@ -1,15 +1,20 @@ /* - libco_x86 : version 0.06 ~byuu (05/21/2006) + libco_x86 : version 0.08 ~byuu (10/21/2006) */ -typedef void (*thread_t); -typedef void (*thread_p)(); +#define COTHREAD_STACKSIZE_TINY 0x1000 +#define COTHREAD_STACKSIZE_SMALL 0x4000 +#define COTHREAD_STACKSIZE_NORMAL 0x10000 +#define COTHREAD_STACKSIZE_LARGE 0x40000 +#define COTHREAD_STACKSIZE_HUGE 0x100000 -extern "C" void fastcall co_init(); -extern "C" void fastcall co_term(); -extern "C" thread_t fastcall co_active(); -extern "C" thread_t fastcall co_create(thread_p coentry, unsigned int heapsize); -extern "C" void fastcall co_delete(thread_t cothread); -extern "C" void fastcall co_jump(thread_t cothread); -extern "C" void fastcall co_call(thread_t cothread); -extern "C" void fastcall co_return(); +typedef void (*cothread_t); +typedef void (*cothread_p)(void); + +extern "C" cothread_t fastcall co_init(); +extern "C" void fastcall co_term(); +extern "C" cothread_t fastcall co_active(); +extern "C" cothread_t fastcall co_create(cothread_p coentry, unsigned int heapsize); +extern "C" void fastcall co_delete(cothread_t cothread); +extern "C" void fastcall co_switch(cothread_t cothread); +extern "C" void fastcall co_exit(cothread_t cothread); diff --git a/src/lib/libconfig.cpp b/src/lib/libconfig.cpp index bf4b8a41..49a86dae 100644 --- a/src/lib/libconfig.cpp +++ b/src/lib/libconfig.cpp @@ -14,7 +14,7 @@ void Setting::set(uint _data) { data = _data; switch(type) { - case TRUE_FALSE: + case BOOL: case ENABLED_DISABLED: case ON_OFF: case YES_NO: @@ -32,22 +32,20 @@ void Setting::set(uint _data) { } } -char *Setting::sget() { +char *Setting::strget() { return strptr(char_data); } -void Setting::sset(const char *_data) { +void Setting::strset(const char *_data) { strcpy(char_data, _data); - strunquote(char_data); } Setting::Setting(Config *_parent, char *_name, char *_desc, uint _data, uint _type) { -int s; if(_parent) { _parent->add(this); } - s = strlen(_name); +uint s = strlen(_name); name = (char*)malloc(s + 1); strcpy(name, _name); @@ -66,12 +64,11 @@ int s; } Setting::Setting(Config *_parent, char *_name, char *_desc, char *_data) { -int s; if(_parent) { _parent->add(this); } - s = strlen(_name); +uint s = strlen(_name); name = (char*)malloc(s + 1); strcpy(name, _name); @@ -87,7 +84,7 @@ int s; strcpy(char_data, _data); strcpy(char_def, _data); - type = STR; + type = STRING; } void Config::add(Setting *setting) { @@ -95,18 +92,18 @@ void Config::add(Setting *setting) { } uint Config::string_to_uint(uint type, char *input) { - if(strmatch(input, "true") || - strmatch(input, "enabled") || - strmatch(input, "on") || - strmatch(input, "yes") + if(!strcmp(input, "true") || + !strcmp(input, "enabled") || + !strcmp(input, "on") || + !strcmp(input, "yes") ) { return (uint)true; } - if(strmatch(input, "false") || - strmatch(input, "disabled") || - strmatch(input, "off") || - strmatch(input, "no") + if(!strcmp(input, "false") || + !strcmp(input, "disabled") || + !strcmp(input, "off") || + !strcmp(input, "no") ) { return (uint)false; } @@ -121,7 +118,7 @@ uint Config::string_to_uint(uint type, char *input) { char *Config::uint_to_string(uint type, uint input) { static char output[512]; switch(type) { - case Setting::TRUE_FALSE: + case Setting::BOOL: sprintf(output, "%s", (input & 1) ? "true" : "false"); break; case Setting::ENABLED_DISABLED: @@ -144,7 +141,7 @@ static char output[512]; return output; } -bool Config::load(char *fn) { +bool Config::load(const char *fn) { FILE *fp; fp = fopen(fn, "rb"); if(!fp)return false; @@ -172,11 +169,12 @@ char *buffer = (char*)malloc(fsize + 1); qsplit(part, "=", line[i]); for(int l = 0; l < list_count; l++) { - if(strmatch(list[l]->name, part[0])) { + if(!strcmp(list[l]->name, part[0])) { if(list[l]->type != Setting::STR) { list[l]->set(string_to_uint(list[l]->type, strptr(part[1]))); } else { - list[l]->sset(strptr(part[1])); + list[l]->strset(strptr(part[1])); + strunquote(list[l]->char_data); } } } @@ -186,7 +184,7 @@ char *buffer = (char*)malloc(fsize + 1); } bool Config::load(string &fn) { return load(strptr(fn)); } -bool Config::save(char *fn) { +bool Config::save(const char *fn) { FILE *fp; fp = fopen(fn, "wb"); if(!fp)return false; @@ -198,7 +196,7 @@ FILE *fp; for(int l = 0; l < count(line); l++) { fprintf(fp, "# %s\r\n", strptr(line[l])); } - if(list[i]->type != Setting::STR) { + if(list[i]->type != Setting::STRING) { fprintf(fp, "# (default = %s)\r\n", uint_to_string(list[i]->type, list[i]->def)); fprintf(fp, "%s = %s\r\n\r\n", list[i]->name, uint_to_string(list[i]->type, list[i]->data)); } else { @@ -207,6 +205,7 @@ FILE *fp; } } + fclose(fp); return true; } bool Config::save(string &fn) { return save(strptr(fn)); } diff --git a/src/lib/libconfig.h b/src/lib/libconfig.h index 45c4ea30..3cf9af0a 100644 --- a/src/lib/libconfig.h +++ b/src/lib/libconfig.h @@ -1,5 +1,5 @@ /* - libconfig : version 0.10 ~byuu (10/10/06) + libconfig : version 0.11 ~byuu (2006/11/12) */ #ifndef __LIBCONFIG @@ -30,16 +30,18 @@ enum { HEX16 = 7, HEX24 = 8, HEX32 = 9, + STRING = 10, STR = 10, }; + char *name, *desc; string char_data, char_def; virtual void toggle(); virtual uint get(); virtual void set(uint _data); - virtual char *sget(); - virtual void sset(const char *_data); + virtual char *strget(); + virtual void strset(const char *_data); Setting(Config *_parent, char *_name, char *_desc, uint _data, uint _type); Setting(Config *_parent, char *_name, char *_desc, char *_data); @@ -52,6 +54,12 @@ string char_data, char_def; template inline bool operator> (const T &x) { return (T)get() > x; } template inline bool operator<=(const T &x) { return (T)get() <= x; } template inline bool operator< (const T &x) { return (T)get() < x; } + + inline operator char*() { return strget(); } + inline Setting &operator=(char *x) { strset(x); return *this; } + inline Setting &operator=(const char *x) { strset(x); return *this; } + inline bool operator==(const char *x) { return !strcmp(strget(), x); } + inline bool operator!=(const char *x) { return strcmp(strget(), x); } }; class Config { @@ -67,9 +75,9 @@ char *uint_to_string(uint type, uint input); public: void add(Setting *setting); - bool load(char *fn); + bool load(const char *fn); bool load(string &fn); - bool save(char *fn); + bool save(const char *fn); bool save(string &fn); Config(); }; diff --git a/src/lib/libfile.h b/src/lib/libfile.h index 094cea1a..ba9a3c1a 100644 --- a/src/lib/libfile.h +++ b/src/lib/libfile.h @@ -1,5 +1,5 @@ /* - libfile : version 0.05 ~byuu (10/12/06) + libfile : version 0.05a ~byuu (10/26/06) */ #ifndef __LIBFILE @@ -51,10 +51,12 @@ uint32 crc32 = 0xffffffff; inline void fread(file &s, uint8 *data, uint length) { s.read(data, length); } inline uint8 fread(file &s) { return s.read(); } inline uint8 fgetc(file &s) { return s.read(); } +inline uint fgetb(file &s) { return s.read(); } inline void fwrite(file &s, uint8 *data, uint length) { s.write(data, length); } inline void fwrite(file &s, uint8 data) { s.write(data); } -inline void fputc(file &s, uint8 data) { s.write(data); } +inline void fputc(uint8 data, file &s) { s.write(data); } +inline void fputb(file &s, uint8 data) { s.write(data); } inline uint32 fcrc32(file &s) { return s.crc32(); } @@ -107,53 +109,53 @@ inline uint64 fgetmq(file &s) { ((uint64)fgetc(s) << 8) | ((uint64)fgetc(s) << 0); } -inline void fputlb(file &s, uint8 data) { fputc(s, data); } -inline void fputmb(file &s, uint8 data) { fputc(s, data); } +inline void fputlb(file &s, uint8 data) { fputc(data, s); } +inline void fputmb(file &s, uint8 data) { fputc(data, s); } inline void fputlw(file &s, uint16 data) { - fputc(s, data >> 0); - fputc(s, data >> 8); + fputc(data >> 0, s); + fputc(data >> 8, s); } inline void fputmw(file &s, uint16 data) { - fputc(s, data >> 8); - fputc(s, data >> 0); + fputc(data >> 8, s); + fputc(data >> 0, s); } inline void fputld(file &s, uint32 data) { - fputc(s, data >> 0); - fputc(s, data >> 8); - fputc(s, data >> 16); - fputc(s, data >> 24); + fputc(data >> 0, s); + fputc(data >> 8, s); + fputc(data >> 16, s); + fputc(data >> 24, s); } inline void fputmd(file &s, uint32 data) { - fputc(s, data >> 24); - fputc(s, data >> 16); - fputc(s, data >> 8); - fputc(s, data >> 0); + fputc(data >> 24, s); + fputc(data >> 16, s); + fputc(data >> 8, s); + fputc(data >> 0, s); } inline void fputlq(file &s, uint64 data) { - fputc(s, data >> 0); - fputc(s, data >> 8); - fputc(s, data >> 16); - fputc(s, data >> 24); - fputc(s, data >> 32); - fputc(s, data >> 40); - fputc(s, data >> 48); - fputc(s, data >> 56); + fputc(data >> 0, s); + fputc(data >> 8, s); + fputc(data >> 16, s); + fputc(data >> 24, s); + fputc(data >> 32, s); + fputc(data >> 40, s); + fputc(data >> 48, s); + fputc(data >> 56, s); } inline void fputmq(file &s, uint64 data) { - fputc(s, data >> 56); - fputc(s, data >> 48); - fputc(s, data >> 40); - fputc(s, data >> 32); - fputc(s, data >> 24); - fputc(s, data >> 16); - fputc(s, data >> 8); - fputc(s, data >> 0); + fputc(data >> 56, s); + fputc(data >> 48, s); + fputc(data >> 40, s); + fputc(data >> 32, s); + fputc(data >> 24, s); + fputc(data >> 16, s); + fputc(data >> 8, s); + fputc(data >> 0, s); } /***** diff --git a/src/lib/libsort.h b/src/lib/libsort.h new file mode 100644 index 00000000..d0899e10 --- /dev/null +++ b/src/lib/libsort.h @@ -0,0 +1,34 @@ +/* + libsort : version 0.01 ~byuu (2006-11-15) +*/ + +#ifndef __LIBSORT +#define __LIBSORT + +template +void sort(T list[], uint length) { + for(uint d = 0; d < length; d++) { + uint min = d; + for(uint s = d + 1; s < length; s++) { + if(list[s] < list[min]) { min = s; } + } + if(min != d) { + swap(list[d], list[min]); + } + } +} + +template +void sort(T list[], uint length, Tcmp comparator) { + for(uint d = 0; d < length; d++) { + uint min = d; + for(uint s = d + 1; s < length; s++) { + if(comparator(list[s], list[min]) == true) { min = s; } + } + if(min != d) { + swap(list[d], list[min]); + } + } +} + +#endif __LIBSORT diff --git a/src/lib/libstring.cpp b/src/lib/libstring.cpp index fe846645..0dbb02a1 100644 --- a/src/lib/libstring.cpp +++ b/src/lib/libstring.cpp @@ -1,5 +1,6 @@ #include "libbase.h" #include "libstring.h" +#include "libstring_oo.cpp" uint count(stringarray &str) { return str.size(); } @@ -13,12 +14,6 @@ char chrupper(char c) { return c; } -void strresize(string &str, uint size) { - str.s = (char*)realloc(str.s, size + 1); - str.s[size] = 0; - str.size = size; -} - char *strptr(string &str) { return str.s; } uint strlen(string &str) { return strlen(strptr(str)); } @@ -39,49 +34,41 @@ int stricmp(string &dest, const char *src) { return __stricmp(strptr(dest), src) int stricmp(const char *dest, string &src) { return __stricmp(dest, strptr(src)); } int stricmp(string &dest, string &src) { return __stricmp(strptr(dest), strptr(src)); } -bool strmatch(const char *dest, const char *src) { return !strcmp(dest, src); } -bool strmatch(string &dest, const char *src) { return strmatch(strptr(dest), src); } -bool strmatch(const char *dest, string &src) { return strmatch(dest, strptr(src)); } -bool strmatch(string &dest, string &src) { return strmatch(strptr(dest), strptr(src)); } - -bool strimatch(const char *dest, const char *src) { return !stricmp(dest, src); } -bool strimatch(string &dest, const char *src) { return strimatch(strptr(dest), src); } -bool strimatch(const char *dest, string &src) { return strimatch(dest, strptr(src)); } -bool strimatch(string &dest, string &src) { return strimatch(strptr(dest), strptr(src)); } - void strcpy(string &dest, const char src) { - if(1 > dest.size) { strresize(dest, 1); } + dest.reserve(2); dest.s[0] = src; dest.s[1] = 0; } void strcpy(string &dest, const char *src) { int srclen = strlen(src); - if(srclen > dest.size) { strresize(dest, srclen); } + dest.reserve(srclen); strcpy(dest.s, src); } void strcpy(string &dest, string &src) { strcpy(dest, strptr(src)); } -//this differs from libc's strncpy in that it always -//appends a null terminator to the end of a copied string -void strncpy(string &dest, const char *src, uint32 length) { -int srclen = strlen(src); -//never copy more text than is in the string - if(srclen > length)srclen = length; - if(srclen > dest.size) { strresize(dest, srclen); } - strncpy(dest.s, src, srclen); - dest.s[srclen] = 0; +uint strlcpy(char *dest, const char *src, uint length) { +uint srclen = strlen(src); + length--; + if(length > srclen)length = srclen; + memcpy(dest, src, length); + dest[length] = 0; + return srclen; } -void strncpy(string &dest, string &src, uint32 length) { strncpy(dest, strptr(src), length); } -void strset(string &dest, uint pos, uint8 c) { - if(pos > dest.size) { strresize(dest, pos); } - dest.s[pos] = c; +uint strlcpy(string &dest, const char *src, uint length) { + dest.reserve(length); + return strlcpy(strptr(dest), src, length); +} + +uint strlcpy(string &dest, string &src, uint length) { + dest.reserve(length); + return strlcpy(strptr(dest), strptr(src), length); } void strcat(string &dest, const char src) { int length = strlen(dest); - if(length + 1 > dest.size) { strresize(dest, length + 1); } + dest.reserve(length + 1); dest.s[length] = src; dest.s[length + 1] = 0; } @@ -89,32 +76,62 @@ int length = strlen(dest); void strcat(string &dest, const char *src) { int srclen = strlen(src); int destlen = strlen(dest); - if(srclen + destlen > dest.size) { strresize(dest, srclen + destlen); } + dest.reserve(srclen + destlen); strcat(dest.s, src); } void strcat(string &dest, string &src) { strcat(dest, strptr(src)); } +uint strlcat(char *dest, const char *src, uint length) { +uint destlen = strlen(dest), srclen = strlen(src); + length--; + if(length > destlen + srclen)length = destlen + srclen; + memcpy(dest + destlen, src, length - destlen); + dest[length] = 0; + return destlen + srclen; +} + +uint strlcat(string &dest, const char *src, uint length) { + dest.reserve(length); + return strlcat(strptr(dest), src, length); +} + +uint strlcat(string &dest, string &src, uint length) { + dest.reserve(length); + return strlcat(strptr(dest), strptr(src), length); +} + +string substr(string &dest, const char *src, uint start, uint length) { +string temp; + if(length == 0) { + //copy entire string + strcpy(temp, src + start); + } else { + //copy partial string + strlcpy(temp, src + start, length + 1); + } + return temp; +} + +string substr(string &dest, string &src, uint start, uint length) { return substr(dest, strptr(src), start, length); } + void strinsert(string &dest, const char *src, uint pos) { -static string s; - strcpy(s, strptr(dest) + pos); - strset(dest, pos, 0); +string temp; + strcpy(temp, strptr(dest) + pos); + dest[pos] = 0; strcat(dest, src); - strcat(dest, s); + strcat(dest, temp); } void strinsert(string &dest, string &src, uint pos) { strinsert(dest, strptr(src), pos); } void strremove(string &dest, uint start, uint length) { -int destlen; -char *s; -int i, sl = strlen(dest.s); - if(start > dest.size) { strresize(dest, start); } +int i, destlen = strlen(dest); + dest.reserve(start); if(!length) { - strset(dest, start, 0); + dest[start] = 0; return; } - s = dest.s; - for(i=start;i size) { + size = reqsize; + s = (char*)realloc(s, size + 1); + s[size] = 0; + } + } + + void swap(string &str) { + ::swap(s, str.s); + ::swap(size, str.size); + } + string() { size = 16; s = (char*)malloc(size + 1); - *s = 0; + s[0] = 0; } - ~string() { SafeFree(s); } - - void operator=(const string &p) { - SafeFree(s); - size = p.size; + string(const char *str) { + size = strlen(str); s = (char*)malloc(size + 1); - strcpy(s, p.s); + strcpy(s, str); } + + string(string &str) { + size = strlen(str); + s = (char*)malloc(size + 1); + strcpy(s, strptr(str)); + } + + ~string() { safe_free(s); } + + const char *operator()(); + char &operator[](uint); + string &operator=(int); + string &operator=(const char *); + string &operator=(string &); + string &operator+=(int); + string &operator+=(const char *); + string &operator+=(string &); + bool operator==(const char *); + bool operator==(string &); + bool operator!=(const char *); + bool operator!=(string &); + bool operator<(const char *); + bool operator<(string &); + bool operator<=(const char *); + bool operator<=(string &); + bool operator>(const char *); + bool operator>(string &); + bool operator>=(const char *); + bool operator>=(string &); + + string operator+(int); + string operator+(const char *); + string operator+(string &); }; +string operator+(int, string &); +string operator+(const char *, string &); + +inline void swap(string &x, string &y) { x.swap(y); } + #endif //__LIBSTRING diff --git a/src/lib/libstring_int.cpp b/src/lib/libstring_int.cpp new file mode 100644 index 00000000..9c4c7ae4 --- /dev/null +++ b/src/lib/libstring_int.cpp @@ -0,0 +1,5 @@ +string strfmt(const char *fmt, int num) { +string temp; + sprintf(temp, fmt, num); + return temp; +} diff --git a/src/lib/libstring_oo.cpp b/src/lib/libstring_oo.cpp new file mode 100644 index 00000000..4b6c4c56 --- /dev/null +++ b/src/lib/libstring_oo.cpp @@ -0,0 +1,83 @@ +const char *string::operator()() { + return s; +} + +char &string::operator[](const uint index) { + reserve(index); + return s[index]; +} + +string &string::operator=(int num) { + strcpy(*this, strfmt("%d", num)); + return *this; +} + +string &string::operator=(const char *str) { + strcpy(*this, str); + return *this; +} + +string &string::operator=(string &str) { + strcpy(*this, str); + return *this; +} + +string &string::operator+=(int num) { + strcat(*this, strfmt("%d", num)); + return *this; +} + +string &string::operator+=(const char *str) { + strcat(*this, str); + return *this; +} + +string &string::operator+=(string &str) { + strcat(*this, str); + return *this; +} + +bool string::operator==(const char *str) { return strcmp(strptr(*this), str) == 0; } +bool string::operator==(string &str) { return strcmp(strptr(*this), strptr(str)) == 0; } +bool string::operator!=(const char *str) { return strcmp(strptr(*this), str) != 0; } +bool string::operator!=(string &str) { return strcmp(strptr(*this), strptr(str)) != 0; } +bool string::operator<(const char *str) { return strcmp(strptr(*this), str) < 0; } +bool string::operator<(string &str) { return strcmp(strptr(*this), strptr(str)) < 0; } +bool string::operator<=(const char *str) { return strcmp(strptr(*this), str) <= 0; } +bool string::operator<=(string &str) { return strcmp(strptr(*this), strptr(str)) <= 0; } +bool string::operator>(const char *str) { return strcmp(strptr(*this), str) > 0; } +bool string::operator>(string &str) { return strcmp(strptr(*this), strptr(str)) > 0; } +bool string::operator>=(const char *str) { return strcmp(strptr(*this), str) >= 0; } +bool string::operator>=(string &str) { return strcmp(strptr(*this), strptr(str)) >= 0; } + +string string::operator+(int num) { +string temp(*this); + strcat(temp, strfmt("%d", num)); + return temp; +} + +string string::operator+(const char *str) { +string temp(*this); + strcat(temp, str); + return temp; +} + +string string::operator+(string &str) { +string temp(*this); + strcat(temp, str); + return temp; +} + +// + +string operator+(int x, string &y) { +string temp(strfmt("%d", x)); + strcat(temp, y); + return temp; +} + +string operator+(const char *x, string &y) { +string temp(x); + strcat(temp, y); + return temp; +} diff --git a/src/lib/libstring_replace.cpp b/src/lib/libstring_replace.cpp index eb0d93ed..c7421a7c 100644 --- a/src/lib/libstring_replace.cpp +++ b/src/lib/libstring_replace.cpp @@ -4,17 +4,17 @@ uint replace_count = 0, size = ssl; char *data; if(ksl > ssl)return str; if(tsl > ksl) { //the new string may be longer than the old string... - for(i=0;i<=ssl-ksl;) { //so let's find out how big of a string we'll need... + for(i = 0; i <= ssl - ksl;) { //so let's find out how big of a string we'll need... if(!memcmp(str.s + i, key, ksl)) { replace_count++; i += ksl; } else i++; } size = ssl + ((tsl - ksl) * replace_count); - if(size > str.size)strresize(str, size); + str.reserve(size); } data = (char*)malloc(size + 1); - for(i=z=0;i ssl)return str; if(tsl > ksl) { - for(i=0;i<=ssl-ksl;) { + for(i = 0; i <= ssl - ksl;) { x = str.s[i]; if(x == '\"' || x == '\'') { l = i; @@ -55,10 +55,10 @@ char *data; } else i++; } size = ssl + ((tsl - ksl) * replace_count); - if(size > str.size)strresize(str, size); + str.reserve(size); } data = (char*)malloc(size + 1); - for(i=z=0;i= ssl)i = z; } if(!memcmp(src + i, key, ksl)) { - strncpy(dest[split_count++], src + lp, i - lp); + strlcpy(dest[split_count++], src + lp, i - lp + 1); i += ksl; lp = i; } else i++; diff --git a/src/lib/libstring_sprintf.cpp b/src/lib/libstring_sprintf.cpp index 778e9074..c7bb0259 100644 --- a/src/lib/libstring_sprintf.cpp +++ b/src/lib/libstring_sprintf.cpp @@ -8,7 +8,7 @@ uint length = vsprintf(str, s, args); uint vsprintf(string &str, const char *s, va_list args) { uint length = vsnprintf(0, 0, s, args); - strresize(str, length + 1); + str.reserve(length + 1); return vsprintf(strptr(str), s, args); } diff --git a/src/lib/libups.h b/src/lib/libups.h index cf312655..8da9fb1d 100644 --- a/src/lib/libups.h +++ b/src/lib/libups.h @@ -226,33 +226,33 @@ uint ptr = 0; template void UPS::ptr_write(uint ptr) { if(ptr <= 0xf7) { - fputc(patch.fp, ptr); + fputb(patch.fp, ptr); return; } ptr -= 0xf8; if(ptr <= 0xffff) { - fputc(patch.fp, 0xf8); - fputc(patch.fp, ptr); - fputc(patch.fp, ptr >> 8); + fputb(patch.fp, 0xf8); + fputb(patch.fp, ptr); + fputb(patch.fp, ptr >> 8); return; } ptr -= 0x10000; if(ptr <= 0xffffff) { - fputc(patch.fp, 0xf9); - fputc(patch.fp, ptr); - fputc(patch.fp, ptr >> 8); - fputc(patch.fp, ptr >> 16); + fputb(patch.fp, 0xf9); + fputb(patch.fp, ptr); + fputb(patch.fp, ptr >> 8); + fputb(patch.fp, ptr >> 16); return; } ptr -= 0x1000000; - fputc(patch.fp, 0xfa); - fputc(patch.fp, ptr); - fputc(patch.fp, ptr >> 8); - fputc(patch.fp, ptr >> 16); - fputc(patch.fp, ptr >> 24); + fputb(patch.fp, 0xfa); + fputb(patch.fp, ptr); + fputb(patch.fp, ptr >> 8); + fputb(patch.fp, ptr >> 16); + fputb(patch.fp, ptr >> 24); } template @@ -298,14 +298,14 @@ uint last_ptr = 0, rle_count, last_out, rep_count; ptr_write((i - 1) - last_ptr); //data - fputc(patch.fp, r); + fputb(patch.fp, r); last_out = r; rep_count = 0; do { r = fgetc(original) ^ fgetc(modified); i++; - fputc(patch.fp, r); + fputb(patch.fp, r); if(last_out != r) { rep_count = 0; @@ -319,7 +319,7 @@ uint last_ptr = 0, rle_count, last_out, rep_count; } while(i < largest_filesize); ptr_write(rle_count); - if(i < largest_filesize) { fputc(patch.fp, r); } + if(i < largest_filesize) { fputb(patch.fp, r); } rep_count = 0; } } @@ -331,7 +331,7 @@ uint last_ptr = 0, rle_count, last_out, rep_count; last_ptr = i; } - fputc(patch.fp, 0xff); + fputb(patch.fp, 0xff); } template @@ -385,7 +385,7 @@ void UPS::apply_linear() { fseek(original, 0, file::seek_start); fseek(modified, 0, file::seek_start); for(uint i = 0; i < modified_filesize; i++) { - fputc(modified, fgetc(original)); + fputb(modified, fgetc(original)); } fseek(original, 0, file::seek_start); @@ -408,14 +408,14 @@ uint rle_count, last_in, rep_count; if(ftell(modified) >= modified_filesize) { break; } uint8 r = fgetc(patch.fp); - fputc(modified, r ^ fgetc(original)); + fputb(modified, r ^ fgetc(original)); if(r != last_in) { rep_count = 0; } else { if(++rep_count == (3 - 1)) { rle_count = ptr_read(); while(rle_count-- && ftell(modified) < modified_filesize) { - fputc(modified, r ^ fgetc(original)); + fputb(modified, r ^ fgetc(original)); } rep_count = 0; } diff --git a/src/lib/libwin32_button.cpp b/src/lib/libwin32_button.cpp index a2d12160..7deff61a 100644 --- a/src/lib/libwin32_button.cpp +++ b/src/lib/libwin32_button.cpp @@ -14,12 +14,12 @@ bool Button::Create(Window *parent_window, const char *style, int x, int y, int stringarray part; ParseStyleParam(style, part); for(int i = 0; i < count(part); i++) { - if(strmatch(part[i], "visible"))state.ws |= WS_VISIBLE; - if(strmatch(part[i], "disabled"))state.ws |= WS_DISABLED; + if(!strcmp(part[i], "visible"))state.ws |= WS_VISIBLE; + if(!strcmp(part[i], "disabled"))state.ws |= WS_DISABLED; - if(strmatch(part[i], "left"))state.ws |= BS_LEFT; - if(strmatch(part[i], "center"))state.ws |= BS_CENTER; - if(strmatch(part[i], "right"))state.ws |= BS_RIGHT; + if(!strcmp(part[i], "left"))state.ws |= BS_LEFT; + if(!strcmp(part[i], "center"))state.ws |= BS_CENTER; + if(!strcmp(part[i], "right"))state.ws |= BS_RIGHT; } hwnd = CreateWindowEx(state.es, "BUTTON", text, state.ws, diff --git a/src/lib/libwin32_checkbox.cpp b/src/lib/libwin32_checkbox.cpp index f2c99185..77fab37f 100644 --- a/src/lib/libwin32_checkbox.cpp +++ b/src/lib/libwin32_checkbox.cpp @@ -20,13 +20,13 @@ bool Checkbox::Create(Window *parent_window, const char *style, int x, int y, in stringarray part; ParseStyleParam(style, part); for(int i = 0; i < count(part); i++) { - if(strmatch(part[i], "visible"))state.ws |= WS_VISIBLE; - if(strmatch(part[i], "disabled"))state.ws |= WS_DISABLED; + if(!strcmp(part[i], "visible"))state.ws |= WS_VISIBLE; + if(!strcmp(part[i], "disabled"))state.ws |= WS_DISABLED; - if(strmatch(part[i], "left"))state.ws |= BS_LEFT; - if(strmatch(part[i], "center"))state.ws |= BS_CENTER; - if(strmatch(part[i], "right"))state.ws |= BS_RIGHT; - if(strmatch(part[i], "auto"))state.ws |= BS_AUTOCHECKBOX; + if(!strcmp(part[i], "left"))state.ws |= BS_LEFT; + if(!strcmp(part[i], "center"))state.ws |= BS_CENTER; + if(!strcmp(part[i], "right"))state.ws |= BS_RIGHT; + if(!strcmp(part[i], "auto"))state.ws |= BS_AUTOCHECKBOX; } if(!(state.ws & BS_AUTOCHECKBOX))state.ws |= BS_CHECKBOX; diff --git a/src/lib/libwin32_combobox.cpp b/src/lib/libwin32_combobox.cpp index c3c887b9..d6083a00 100644 --- a/src/lib/libwin32_combobox.cpp +++ b/src/lib/libwin32_combobox.cpp @@ -38,13 +38,13 @@ bool Combobox::Create(Window *parent_window, const char *style, int x, int y, in stringarray part; ParseStyleParam(style, part); for(int i = 0; i < count(part); i++) { - if(strmatch(part[i], "visible"))state.ws |= WS_VISIBLE; - if(strmatch(part[i], "disabled"))state.ws |= WS_DISABLED; - if(strmatch(part[i], "border"))state.ws |= WS_BORDER; - if(strmatch(part[i], "raised"))state.ws |= WS_DLGFRAME; + if(!strcmp(part[i], "visible"))state.ws |= WS_VISIBLE; + if(!strcmp(part[i], "disabled"))state.ws |= WS_DISABLED; + if(!strcmp(part[i], "border"))state.ws |= WS_BORDER; + if(!strcmp(part[i], "raised"))state.ws |= WS_DLGFRAME; - if(strmatch(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; - if(strmatch(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; + if(!strcmp(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; + if(!strcmp(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; } hwnd = CreateWindowEx(state.es, "COMBOBOX", text, state.ws, @@ -52,7 +52,7 @@ stringarray part; parent->hwnd, (HMENU)id, GetModuleHandle(0), 0); if(!hwnd)return false; - if(strmatch(text, "") == false) { + if(!strcmp(text, "") == false) { stringarray t; split(t, "|", text); for(int i = 0; i < ::count(t); i++) { diff --git a/src/lib/libwin32_control.cpp b/src/lib/libwin32_control.cpp index 301d280e..4ec39712 100644 --- a/src/lib/libwin32_control.cpp +++ b/src/lib/libwin32_control.cpp @@ -74,12 +74,12 @@ void Control::GetText(char *text, uint length) { } void Control::SetText(const char *text, ...) { -char str[4096]; +string str; va_list args; va_start(args, text); vsprintf(str, text, args); va_end(args); - SetWindowText(hwnd, str); + SetWindowText(hwnd, strptr(str)); } Control::Control() { diff --git a/src/lib/libwin32_editbox.cpp b/src/lib/libwin32_editbox.cpp index c5f458c8..66b3e61a 100644 --- a/src/lib/libwin32_editbox.cpp +++ b/src/lib/libwin32_editbox.cpp @@ -19,18 +19,18 @@ bool Editbox::Create(Window *parent_window, const char *style, int x, int y, int stringarray part; ParseStyleParam(style, part); for(int i = 0; i < count(part); i++) { - if(strmatch(part[i], "visible"))state.ws |= WS_VISIBLE; - if(strmatch(part[i], "disabled"))state.ws |= WS_DISABLED; - if(strmatch(part[i], "border"))state.ws |= WS_BORDER; - if(strmatch(part[i], "raised"))state.ws |= WS_DLGFRAME; - if(strmatch(part[i], "vscroll"))state.ws |= WS_VSCROLL; - if(strmatch(part[i], "hscroll"))state.ws |= WS_HSCROLL; + if(!strcmp(part[i], "visible"))state.ws |= WS_VISIBLE; + if(!strcmp(part[i], "disabled"))state.ws |= WS_DISABLED; + if(!strcmp(part[i], "border"))state.ws |= WS_BORDER; + if(!strcmp(part[i], "raised"))state.ws |= WS_DLGFRAME; + if(!strcmp(part[i], "vscroll"))state.ws |= WS_VSCROLL; + if(!strcmp(part[i], "hscroll"))state.ws |= WS_HSCROLL; - if(strmatch(part[i], "multiline"))state.ws |= ES_MULTILINE; - if(strmatch(part[i], "readonly"))state.ws |= ES_READONLY; + if(!strcmp(part[i], "multiline"))state.ws |= ES_MULTILINE; + if(!strcmp(part[i], "readonly"))state.ws |= ES_READONLY; - if(strmatch(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; - if(strmatch(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; + if(!strcmp(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; + if(!strcmp(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; } hwnd = CreateWindowEx(state.es, "EDIT", text, state.ws, diff --git a/src/lib/libwin32_groupbox.cpp b/src/lib/libwin32_groupbox.cpp index 0316dfca..50e08b94 100644 --- a/src/lib/libwin32_groupbox.cpp +++ b/src/lib/libwin32_groupbox.cpp @@ -14,13 +14,13 @@ bool Groupbox::Create(Window *parent_window, const char *style, int x, int y, in stringarray part; ParseStyleParam(style, part); for(int i = 0; i < count(part); i++) { - if(strmatch(part[i], "visible"))state.ws |= WS_VISIBLE; - if(strmatch(part[i], "disabled"))state.ws |= WS_DISABLED; - if(strmatch(part[i], "border"))state.ws |= WS_BORDER; - if(strmatch(part[i], "raised"))state.ws |= WS_DLGFRAME; + if(!strcmp(part[i], "visible"))state.ws |= WS_VISIBLE; + if(!strcmp(part[i], "disabled"))state.ws |= WS_DISABLED; + if(!strcmp(part[i], "border"))state.ws |= WS_BORDER; + if(!strcmp(part[i], "raised"))state.ws |= WS_DLGFRAME; - if(strmatch(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; - if(strmatch(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; + if(!strcmp(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; + if(!strcmp(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; } hwnd = CreateWindowEx(state.es, "BUTTON", text, state.ws, diff --git a/src/lib/libwin32_label.cpp b/src/lib/libwin32_label.cpp index e113db8e..84d31d94 100644 --- a/src/lib/libwin32_label.cpp +++ b/src/lib/libwin32_label.cpp @@ -14,18 +14,18 @@ bool Label::Create(Window *parent_window, const char *style, int x, int y, int w stringarray part; ParseStyleParam(style, part); for(int i = 0; i < count(part); i++) { - if(strmatch(part[i], "visible"))state.ws |= WS_VISIBLE; - if(strmatch(part[i], "disabled"))state.ws |= WS_DISABLED; - if(strmatch(part[i], "border"))state.ws |= WS_BORDER; - if(strmatch(part[i], "raised"))state.ws |= WS_DLGFRAME; + if(!strcmp(part[i], "visible"))state.ws |= WS_VISIBLE; + if(!strcmp(part[i], "disabled"))state.ws |= WS_DISABLED; + if(!strcmp(part[i], "border"))state.ws |= WS_BORDER; + if(!strcmp(part[i], "raised"))state.ws |= WS_DLGFRAME; - if(strmatch(part[i], "left"))state.ws |= SS_LEFT; - if(strmatch(part[i], "center"))state.ws |= SS_CENTER; - if(strmatch(part[i], "right"))state.ws |= SS_RIGHT; - if(strmatch(part[i], "etched"))state.ws |= SS_ETCHEDFRAME; + if(!strcmp(part[i], "left"))state.ws |= SS_LEFT; + if(!strcmp(part[i], "center"))state.ws |= SS_CENTER; + if(!strcmp(part[i], "right"))state.ws |= SS_RIGHT; + if(!strcmp(part[i], "etched"))state.ws |= SS_ETCHEDFRAME; - if(strmatch(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; - if(strmatch(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; + if(!strcmp(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; + if(!strcmp(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; } hwnd = CreateWindowEx(state.es, "STATIC", text, state.ws, diff --git a/src/lib/libwin32_listbox.cpp b/src/lib/libwin32_listbox.cpp index ffd0ff29..40edd490 100644 --- a/src/lib/libwin32_listbox.cpp +++ b/src/lib/libwin32_listbox.cpp @@ -38,13 +38,13 @@ bool Listbox::Create(Window *parent_window, const char *style, int x, int y, int stringarray part; ParseStyleParam(style, part); for(int i = 0; i < count(part); i++) { - if(strmatch(part[i], "visible"))state.ws |= WS_VISIBLE; - if(strmatch(part[i], "disabled"))state.ws |= WS_DISABLED; - if(strmatch(part[i], "border"))state.ws |= WS_BORDER; - if(strmatch(part[i], "raised"))state.ws |= WS_DLGFRAME; + if(!strcmp(part[i], "visible"))state.ws |= WS_VISIBLE; + if(!strcmp(part[i], "disabled"))state.ws |= WS_DISABLED; + if(!strcmp(part[i], "border"))state.ws |= WS_BORDER; + if(!strcmp(part[i], "raised"))state.ws |= WS_DLGFRAME; - if(strmatch(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; - if(strmatch(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; + if(!strcmp(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; + if(!strcmp(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; } hwnd = CreateWindowEx(state.es, "LISTBOX", text, state.ws, @@ -52,7 +52,7 @@ stringarray part; parent->hwnd, (HMENU)id, GetModuleHandle(0), 0); if(!hwnd)return false; - if(strmatch(text, "") == false) { + if(!strcmp(text, "") == false) { stringarray t; split(t, "|", text); for(int i = 0; i < ::count(t); i++) { diff --git a/src/lib/libwin32_listview.cpp b/src/lib/libwin32_listview.cpp index bffc7715..566f2627 100644 --- a/src/lib/libwin32_listview.cpp +++ b/src/lib/libwin32_listview.cpp @@ -75,13 +75,13 @@ bool Listview::Create(Window *parent_window, const char *style, int x, int y, in stringarray part; ParseStyleParam(style, part); for(int i = 0; i < count(part); i++) { - if(strmatch(part[i], "visible"))state.ws |= WS_VISIBLE; - if(strmatch(part[i], "disabled"))state.ws |= WS_DISABLED; - if(strmatch(part[i], "border"))state.ws |= WS_BORDER; - if(strmatch(part[i], "raised"))state.ws |= WS_DLGFRAME; + if(!strcmp(part[i], "visible"))state.ws |= WS_VISIBLE; + if(!strcmp(part[i], "disabled"))state.ws |= WS_DISABLED; + if(!strcmp(part[i], "border"))state.ws |= WS_BORDER; + if(!strcmp(part[i], "raised"))state.ws |= WS_DLGFRAME; - if(strmatch(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; - if(strmatch(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; + if(!strcmp(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; + if(!strcmp(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; } hwnd = CreateWindowEx(state.es, WC_LISTVIEW, text, state.ws, diff --git a/src/lib/libwin32_radiobox.cpp b/src/lib/libwin32_radiobox.cpp index ec1a56da..d16d9edc 100644 --- a/src/lib/libwin32_radiobox.cpp +++ b/src/lib/libwin32_radiobox.cpp @@ -20,12 +20,12 @@ bool Radiobox::Create(Window *parent_window, const char *style, int x, int y, in stringarray part; ParseStyleParam(style, part); for(int i = 0; i < count(part); i++) { - if(strmatch(part[i], "visible"))state.ws |= WS_VISIBLE; - if(strmatch(part[i], "disabled"))state.ws |= WS_DISABLED; + if(!strcmp(part[i], "visible"))state.ws |= WS_VISIBLE; + if(!strcmp(part[i], "disabled"))state.ws |= WS_DISABLED; - if(strmatch(part[i], "left"))state.ws |= BS_LEFT; - if(strmatch(part[i], "center"))state.ws |= BS_CENTER; - if(strmatch(part[i], "right"))state.ws |= BS_RIGHT; + if(!strcmp(part[i], "left"))state.ws |= BS_LEFT; + if(!strcmp(part[i], "center"))state.ws |= BS_CENTER; + if(!strcmp(part[i], "right"))state.ws |= BS_RIGHT; } state.ws |= BS_RADIOBUTTON; diff --git a/src/lib/libwin32_slider.cpp b/src/lib/libwin32_slider.cpp index c0581dc5..c2fde39e 100644 --- a/src/lib/libwin32_slider.cpp +++ b/src/lib/libwin32_slider.cpp @@ -28,13 +28,13 @@ bool Slider::Create(Window *parent_window, const char *style, int x, int y, int stringarray part; ParseStyleParam(style, part); for(int i = 0; i < count(part); i++) { - if(strmatch(part[i], "visible"))state.ws |= WS_VISIBLE; - if(strmatch(part[i], "disabled"))state.ws |= WS_DISABLED; - if(strmatch(part[i], "border"))state.ws |= WS_BORDER; - if(strmatch(part[i], "raised"))state.ws |= WS_DLGFRAME; + if(!strcmp(part[i], "visible"))state.ws |= WS_VISIBLE; + if(!strcmp(part[i], "disabled"))state.ws |= WS_DISABLED; + if(!strcmp(part[i], "border"))state.ws |= WS_BORDER; + if(!strcmp(part[i], "raised"))state.ws |= WS_DLGFRAME; - if(strmatch(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; - if(strmatch(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; + if(!strcmp(part[i], "sunken"))state.es |= WS_EX_STATICEDGE; + if(!strcmp(part[i], "edge"))state.es |= WS_EX_CLIENTEDGE; } hwnd = CreateWindowEx(state.es, TRACKBAR_CLASS, text, state.ws, diff --git a/src/lib/libwin32_window.cpp b/src/lib/libwin32_window.cpp index 7acc2781..ebbda013 100644 --- a/src/lib/libwin32_window.cpp +++ b/src/lib/libwin32_window.cpp @@ -257,20 +257,20 @@ void Window::SetStyle(const char *style) { stringarray part; ParseStyleParam(style, part); for(int i = 0; i < count(part); i++) { - if(strmatch(part[i], "visible")) state.ws |= WS_VISIBLE; - if(strmatch(part[i], "popup")) state.ws |= WS_POPUP; - if(strmatch(part[i], "border")) state.ws |= WS_BORDER; - if(strmatch(part[i], "frame")) state.ws |= WS_DLGFRAME; - if(strmatch(part[i], "titlebar"))state.ws |= WS_CAPTION; - if(strmatch(part[i], "minimize"))state.ws |= WS_MINIMIZEBOX; - if(strmatch(part[i], "maximize"))state.ws |= WS_MAXIMIZEBOX; + if(!strcmp(part[i], "visible")) state.ws |= WS_VISIBLE; + if(!strcmp(part[i], "popup")) state.ws |= WS_POPUP; + if(!strcmp(part[i], "border")) state.ws |= WS_BORDER; + if(!strcmp(part[i], "frame")) state.ws |= WS_DLGFRAME; + if(!strcmp(part[i], "titlebar"))state.ws |= WS_CAPTION; + if(!strcmp(part[i], "minimize"))state.ws |= WS_MINIMIZEBOX; + if(!strcmp(part[i], "maximize"))state.ws |= WS_MAXIMIZEBOX; - if(strmatch(part[i], "topmost")) state.es |= WS_EX_TOPMOST; - if(strmatch(part[i], "layered")) state.es |= WS_EX_LAYERED; - if(strmatch(part[i], "sunken")) state.es |= WS_EX_STATICEDGE; - if(strmatch(part[i], "edge")) state.es |= WS_EX_CLIENTEDGE; + if(!strcmp(part[i], "topmost")) state.es |= WS_EX_TOPMOST; + if(!strcmp(part[i], "layered")) state.es |= WS_EX_LAYERED; + if(!strcmp(part[i], "sunken")) state.es |= WS_EX_STATICEDGE; + if(!strcmp(part[i], "edge")) state.es |= WS_EX_CLIENTEDGE; - if(strmatch(part[i], "dragmove"))state.dragmove = true; + if(!strcmp(part[i], "dragmove"))state.dragmove = true; } if(!hwnd)return; diff --git a/src/lib/opgen_s.cpp b/src/lib/opgen_s.cpp index 44228bee..7d90d0e8 100644 --- a/src/lib/opgen_s.cpp +++ b/src/lib/opgen_s.cpp @@ -71,7 +71,7 @@ char t[4096]; i++; while(1) { - if(strptr(line[i])[1] == ':' || strptr(line[i])[2] == ':' || strmatch(line[i], "}"))break; + if(strptr(line[i])[1] == ':' || strptr(line[i])[2] == ':' || line[i] == "}")break; update_line(i); strcat(output_op, line[i]); diff --git a/src/memory/bmemory/bmemory.cpp b/src/memory/bmemory/bmemory.cpp index f6a1e9ad..ed01b3ad 100644 --- a/src/memory/bmemory/bmemory.cpp +++ b/src/memory/bmemory/bmemory.cpp @@ -38,9 +38,9 @@ void bMemBus::load_cart() { uint region = read(0xffd9) & 0x7f; cartridge.info.region = (region <= 1 || region >= 13) ? Cartridge::NTSC : Cartridge::PAL; if(cartridge.info.region == Cartridge::NTSC) { - snes->set_region(SNES::NTSC); + snes.set_region(SNES::NTSC); } else { - snes->set_region(SNES::PAL); + snes.set_region(SNES::PAL); } rom_loaded = true; diff --git a/src/memory/bmemory/bmemory_mapper_generic.cpp b/src/memory/bmemory/bmemory_mapper_generic.cpp index b4614d71..3b5c1e07 100644 --- a/src/memory/bmemory/bmemory_mapper_generic.cpp +++ b/src/memory/bmemory/bmemory_mapper_generic.cpp @@ -24,7 +24,7 @@ uint ram_size = cartridge.info.ram_size; uint addr = page << 8; uint bank = page >> 8; - //SRAM mapping is incorrect in several games, this is the most compatible + //RAM mapping is incorrect in several games, this is the most compatible //layout I can create using only ROM header information. Additional accuracy //requires PCB identification. @@ -34,20 +34,20 @@ uint ram_size = cartridge.info.ram_size; continue; } - //HiROM SRAM region + //HiROM RAM region //$[20-3f|a0-bf]:[6000-7fff] if((bank & 0x7f) >= 0x20 && (bank & 0x7f) <= 0x3f && (addr & 0xe000) == 0x6000) { if(ram_size == 0)continue; addr = ((bank & 0x7f) - 0x20) * 0x2000 + ((addr & 0xffff) - 0x6000); addr %= ram_size; - page_handle[page] = cartridge.sram + addr; + page_handle[page] = cartridge.ram + addr; page_read [page] = &bMemBus::read_ram; page_write [page] = &bMemBus::write_ram; continue; } - //LoROM SRAM region + //LoROM RAM region //$[70-7f|f0-ff]:[0000-7fff] //Note: WRAM is remapped over $[7e-7f]:[0000-ffff] if((bank & 0x7f) >= 0x70 && (bank & 0x7f) <= 0x7f && (addr & 0x8000) == 0x0000) { @@ -57,7 +57,7 @@ uint ram_size = cartridge.info.ram_size; addr = ((bank & 0x7f) - 0x70) * 0x8000 + (addr & 0x7fff); addr %= ram_size; - page_handle[page] = cartridge.sram + addr; + page_handle[page] = cartridge.ram + addr; page_read [page] = &bMemBus::read_ram; page_write [page] = &bMemBus::write_ram; continue; diff --git a/src/memory/bmemory/mapper/mapper.cpp b/src/memory/bmemory/mapper/mapper.cpp index e2269bd2..accfe7dc 100644 --- a/src/memory/bmemory/mapper/mapper.cpp +++ b/src/memory/bmemory/mapper/mapper.cpp @@ -1,16 +1,3 @@ -uint bMemBus::mirror(uint size, uint pos) { - if(size == 0)return 0; - if(pos < size)return pos; - -uint mask = 1 << 31; - while(!(pos & mask))mask >>= 1; - if(size <= (pos & mask)) { - return mirror(size, pos - mask); - } else { - return mask + mirror(size - mask, pos - mask); - } -} - bool bMemBus::cart_map_pcb(const char *pcb) { if(!strcmp(pcb, "SHVC-1A3B-01")) { cart_map_shvc_1a3b_13(); return true; } if(!strcmp(pcb, "SHVC-1A3B-11")) { cart_map_shvc_1a3b_13(); return true; } @@ -35,9 +22,26 @@ bool bMemBus::cart_map_pcb(const char *pcb) { if(!strcmp(pcb, "BSC-1A7M-10")) { cart_map_bsc_1a7m_10(); return true; } + if(!strcmp(pcb, "STC-SOLO")) { cart_map_stc_solo(); return true; } + + if(!strcmp(pcb, "STC-DUAL")) { cart_map_stc_dual(); return true; } + return false; } +uint bMemBus::mirror(uint size, uint pos) { + if(size == 0)return 0; + if(pos < size)return pos; + +uint mask = 1 << 31; + while(!(pos & mask))mask >>= 1; + if(size <= (pos & mask)) { + return mirror(size, pos - mask); + } else { + return mask + mirror(size - mask, pos - mask); + } +} + void bMemBus::cart_map_range( uint mode, uint8 bank_lo, uint8 bank_hi, @@ -59,7 +63,7 @@ uint8 page_hi = (addr_hi >> 8) & 255; } break; case MAP_RAM: { - data = cartridge.sram; + data = cartridge.ram; size = cartridge.info.ram_size; } break; diff --git a/src/memory/bmemory/mapper/mapper.h b/src/memory/bmemory/mapper/mapper.h index d41613c8..2ce0a3a3 100644 --- a/src/memory/bmemory/mapper/mapper.h +++ b/src/memory/bmemory/mapper/mapper.h @@ -26,4 +26,6 @@ enum { mapper(bsc_1a5m_01); mapper(bsc_1a7m_01); mapper(bsc_1a7m_10); + mapper(stc_solo); + mapper(stc_dual); #undef mapper diff --git a/src/memory/bmemory/mapper/mapper_pcb.cpp b/src/memory/bmemory/mapper/mapper_pcb.cpp index 87714dc5..b4171115 100644 --- a/src/memory/bmemory/mapper/mapper_pcb.cpp +++ b/src/memory/bmemory/mapper/mapper_pcb.cpp @@ -76,3 +76,27 @@ mapper(bsc_1a7m_10) { map(LINEAR, 0xa0, 0xbf, 0x8000, 0xffff, MAP_ROM, 0x100000); map(LINEAR, 0xf0, 0xff, 0x0000, 0x7fff, MAP_RAM); } + +//STC-SOLO +mapper(stc_solo) { + map(LINEAR, 0x00, 0x1f, 0x8000, 0xffff, MAP_ROM, 0x000000); + map(LINEAR, 0x20, 0x3f, 0x8000, 0xffff, MAP_ROM, 0x100000); + map(LINEAR, 0x60, 0x63, 0x8000, 0xffff, MAP_RAM, 0x000000); + map(LINEAR, 0x80, 0x9f, 0x8000, 0xffff, MAP_ROM, 0x000000); + map(LINEAR, 0xa0, 0xbf, 0x8000, 0xffff, MAP_ROM, 0x100000); + map(LINEAR, 0xe0, 0xe3, 0x8000, 0xffff, MAP_RAM, 0x000000); +} + +//STC-DUAL +mapper(stc_dual) { + map(LINEAR, 0x00, 0x1f, 0x8000, 0xffff, MAP_ROM, 0x000000); + map(LINEAR, 0x20, 0x3f, 0x8000, 0xffff, MAP_ROM, 0x100000); + map(LINEAR, 0x40, 0x5f, 0x8000, 0xffff, MAP_ROM, 0x200000); + map(LINEAR, 0x60, 0x63, 0x8000, 0xffff, MAP_RAM, 0x000000); + map(LINEAR, 0x70, 0x73, 0x8000, 0xffff, MAP_RAM, 0x020000); + map(LINEAR, 0x80, 0x9f, 0x8000, 0xffff, MAP_ROM, 0x000000); + map(LINEAR, 0xa0, 0xbf, 0x8000, 0xffff, MAP_ROM, 0x100000); + map(LINEAR, 0xc0, 0xdf, 0x8000, 0xffff, MAP_ROM, 0x200000); + map(LINEAR, 0xe0, 0xe3, 0x8000, 0xffff, MAP_RAM, 0x000000); + map(LINEAR, 0xf0, 0xf3, 0x8000, 0xffff, MAP_RAM, 0x020000); +} diff --git a/src/ppu/bppu/bppu.cpp b/src/ppu/bppu/bppu.cpp index 42c6fa27..591dd126 100644 --- a/src/ppu/bppu/bppu.cpp +++ b/src/ppu/bppu/bppu.cpp @@ -65,8 +65,17 @@ void bPPU::render_scanline() { #endif if(line.y >= 0 && line.y < (r_cpu->overscan() ? 240 : 225)) { - if(status.render_output == true && line.y != 0) { render_line(); } - render_line_oam_rto(); + if(config::ppu.hack.obj_cache == false) { + if(line.y != 0) { + render_line_oam_rto(); + render_line(); + } + } else { + if(line.y != 0) { + render_line(); + } + render_line_oam_rto(); + } } } @@ -81,7 +90,7 @@ void bPPU::power() { memset(oam, 0, 544); memset(cgram, 0, 512); - region = snes->region(); + region = snes.region(); //$2100 regs.display_disabled = 1; diff --git a/src/ppu/bppu/bppu_mmio.cpp b/src/ppu/bppu/bppu_mmio.cpp index 4fd03248..19d723a3 100644 --- a/src/ppu/bppu/bppu_mmio.cpp +++ b/src/ppu/bppu/bppu_mmio.cpp @@ -189,7 +189,7 @@ void bPPU::mmio_w210d(uint8 value) { regs.m7_hofs = (value << 8) | regs.m7_latch; regs.m7_latch = value; - regs.bg_hofs[BG1] = (value << 8) | (regs.bg_ofslatch & 0xf8) | ((regs.bg_hofs[BG1] >> 8) & 7); + regs.bg_hofs[BG1] = (value << 8) | (regs.bg_ofslatch & ~7) | ((regs.bg_hofs[BG1] >> 8) & 7); regs.bg_ofslatch = value; } @@ -198,43 +198,43 @@ void bPPU::mmio_w210e(uint8 value) { regs.m7_vofs = (value << 8) | regs.m7_latch; regs.m7_latch = value; - regs.bg_vofs[BG1] = (value << 8) | (regs.bg_ofslatch & 0xf8) | ((regs.bg_vofs[BG1] >> 8) & 7); + regs.bg_vofs[BG1] = (value << 8) | (regs.bg_ofslatch); regs.bg_ofslatch = value; } //BG2HOFS void bPPU::mmio_w210f(uint8 value) { - regs.bg_hofs[BG2] = (value << 8) | (regs.bg_ofslatch & 0xf8) | ((regs.bg_hofs[BG2] >> 8) & 7); + regs.bg_hofs[BG2] = (value << 8) | (regs.bg_ofslatch & ~7) | ((regs.bg_hofs[BG2] >> 8) & 7); regs.bg_ofslatch = value; } //BG2VOFS void bPPU::mmio_w2110(uint8 value) { - regs.bg_vofs[BG2] = (value << 8) | (regs.bg_ofslatch & 0xf8) | ((regs.bg_vofs[BG2] >> 8) & 7); + regs.bg_vofs[BG2] = (value << 8) | (regs.bg_ofslatch); regs.bg_ofslatch = value; } //BG3HOFS void bPPU::mmio_w2111(uint8 value) { - regs.bg_hofs[BG3] = (value << 8) | (regs.bg_ofslatch & 0xf8) | ((regs.bg_hofs[BG3] >> 8) & 7); + regs.bg_hofs[BG3] = (value << 8) | (regs.bg_ofslatch & ~7) | ((regs.bg_hofs[BG3] >> 8) & 7); regs.bg_ofslatch = value; } //BG3VOFS void bPPU::mmio_w2112(uint8 value) { - regs.bg_vofs[BG3] = (value << 8) | (regs.bg_ofslatch & 0xf8) | ((regs.bg_vofs[BG3] >> 8) & 7); + regs.bg_vofs[BG3] = (value << 8) | (regs.bg_ofslatch); regs.bg_ofslatch = value; } //BG4HOFS void bPPU::mmio_w2113(uint8 value) { - regs.bg_hofs[BG4] = (value << 8) | (regs.bg_ofslatch & 0xf8) | ((regs.bg_hofs[BG4] >> 8) & 7); + regs.bg_hofs[BG4] = (value << 8) | (regs.bg_ofslatch & ~7) | ((regs.bg_hofs[BG4] >> 8) & 7); regs.bg_ofslatch = value; } //BG4VOFS void bPPU::mmio_w2114(uint8 value) { - regs.bg_vofs[BG4] = (value << 8) | (regs.bg_ofslatch & 0xf8) | ((regs.bg_vofs[BG4] >> 8) & 7); + regs.bg_vofs[BG4] = (value << 8) | (regs.bg_ofslatch); regs.bg_ofslatch = value; } diff --git a/src/ppu/bppu/bppu_render_cache.cpp b/src/ppu/bppu/bppu_render_cache.cpp index 40b07695..79113b46 100644 --- a/src/ppu/bppu/bppu_render_cache.cpp +++ b/src/ppu/bppu/bppu_render_cache.cpp @@ -1,24 +1,24 @@ #define render_bg_tile_line_2bpp(mask) \ - col = bool(d0 & mask) << 0; \ - col += bool(d1 & mask) << 1; \ + col = !!(d0 & mask) << 0; \ + col += !!(d1 & mask) << 1; \ *dest++ = col #define render_bg_tile_line_4bpp(mask) \ - col = bool(d0 & mask) << 0; \ - col += bool(d1 & mask) << 1; \ - col += bool(d2 & mask) << 2; \ - col += bool(d3 & mask) << 3; \ + col = !!(d0 & mask) << 0; \ + col += !!(d1 & mask) << 1; \ + col += !!(d2 & mask) << 2; \ + col += !!(d3 & mask) << 3; \ *dest++ = col #define render_bg_tile_line_8bpp(mask) \ - col = bool(d0 & mask) << 0; \ - col += bool(d1 & mask) << 1; \ - col += bool(d2 & mask) << 2; \ - col += bool(d3 & mask) << 3; \ - col += bool(d4 & mask) << 4; \ - col += bool(d5 & mask) << 5; \ - col += bool(d6 & mask) << 6; \ - col += bool(d7 & mask) << 7; \ + col = !!(d0 & mask) << 0; \ + col += !!(d1 & mask) << 1; \ + col += !!(d2 & mask) << 2; \ + col += !!(d3 & mask) << 3; \ + col += !!(d4 & mask) << 4; \ + col += !!(d5 & mask) << 5; \ + col += !!(d6 & mask) << 6; \ + col += !!(d7 & mask) << 7; \ *dest++ = col void bPPU::render_bg_tile(uint8 color_depth, uint16 tile_num) { diff --git a/src/ppu/bppu/bppu_render_oam.cpp b/src/ppu/bppu/bppu_render_oam.cpp index fb87ef5c..2cf3184e 100644 --- a/src/ppu/bppu/bppu_render_oam.cpp +++ b/src/ppu/bppu/bppu_render_oam.cpp @@ -1,9 +1,10 @@ void bPPU::build_sprite_list() { uint8 *tableA = oam, *tableB = oam + 512; +uint8 y_offset = (config::ppu.hack.obj_cache == true) ? 0 : 1; for(int i = 0; i < 128; i++) { - uint x = bool(*tableB & (1 << ((i & 3) << 1))); //0x01, 0x04, 0x10, 0x40 - bool size = bool(*tableB & (2 << ((i & 3) << 1))); //0x02, 0x08, 0x20, 0x80 + uint x = !!(*tableB & (1 << ((i & 3) << 1))); //0x01, 0x04, 0x10, 0x40 + bool size = !!(*tableB & (2 << ((i & 3) << 1))); //0x02, 0x08, 0x20, 0x80 switch(regs.oam_basesize) { case 0: sprite_list[i].width = (!size) ? 8 : 16; @@ -36,10 +37,10 @@ uint8 *tableA = oam, *tableB = oam + 512; } sprite_list[i].x = (x << 8) + tableA[0]; - sprite_list[i].y = tableA[1]; + sprite_list[i].y = tableA[1] + y_offset; sprite_list[i].character = tableA[2]; - sprite_list[i].vflip = bool(tableA[3] & 0x80); - sprite_list[i].hflip = bool(tableA[3] & 0x40); + sprite_list[i].vflip = !!(tableA[3] & 0x80); + sprite_list[i].hflip = !!(tableA[3] & 0x40); sprite_list[i].priority = (tableA[3] >> 4) & 3; sprite_list[i].palette = (tableA[3] >> 1) & 7; sprite_list[i].use_nameselect = tableA[3] & 1; diff --git a/src/reader/jmareader.cpp b/src/reader/jmareader.cpp index f3376cbb..6b9372f9 100644 --- a/src/reader/jmareader.cpp +++ b/src/reader/jmareader.cpp @@ -28,7 +28,7 @@ uint8 *JMAReader::read(uint32 length) return data; } -JMAReader::JMAReader(char *fn) : JMAFile(fn), fsize(0) +JMAReader::JMAReader(const char *fn) : JMAFile(fn), fsize(0) { std::vector file_info = JMAFile.get_files_info(); for (std::vector::iterator i = file_info.begin(); i != file_info.end(); i++) diff --git a/src/reader/jmareader.h b/src/reader/jmareader.h index 7fc0d4f9..78eb19a5 100644 --- a/src/reader/jmareader.h +++ b/src/reader/jmareader.h @@ -12,6 +12,6 @@ public: uint32 size(); uint8 *read(uint32 length = 0); - JMAReader(char *fn); + JMAReader(const char *fn); ~JMAReader() { } }; diff --git a/src/reader/reader.cpp b/src/reader/reader.cpp index 1d44af80..bb18db25 100644 --- a/src/reader/reader.cpp +++ b/src/reader/reader.cpp @@ -8,7 +8,7 @@ #include "jmareader.cpp" #endif -uint32 Reader::detect(char *fn) { +uint Reader::detect(const char *fn) { int len = strlen(fn); if(len >= 4 && !stricmp(fn + len - 3, ".gz")) { return RF_GZ; diff --git a/src/reader/reader.h b/src/reader/reader.h index e69e79da..15fc13ec 100644 --- a/src/reader/reader.h +++ b/src/reader/reader.h @@ -9,7 +9,7 @@ enum { //attemps to determine filetype by extension, //RF_NORMAL is returned on failure as a failsafe - static uint32 detect(char *fn); + static uint detect(const char *fn); virtual uint32 size() = 0; //return is 0 on failure, caller must deallocate memory manually diff --git a/src/reader/zipreader.cpp b/src/reader/zipreader.cpp index 4f671cab..732fec9a 100644 --- a/src/reader/zipreader.cpp +++ b/src/reader/zipreader.cpp @@ -26,7 +26,7 @@ uint8 *ZipReader::read(uint32 length) return data; } -ZipReader::ZipReader(char *fn) : fsize(0) +ZipReader::ZipReader(const char *fn) : fsize(0) { unz_file_info cFileInfo; //Create variable to hold info for a compressed file char cFileName[sizeof(cname)]; diff --git a/src/reader/zipreader.h b/src/reader/zipreader.h index 14eacd58..05a90946 100644 --- a/src/reader/zipreader.h +++ b/src/reader/zipreader.h @@ -15,7 +15,7 @@ public: uint32 size(); uint8 *read(uint32 length = 0); - ZipReader(char *fn); + ZipReader(const char *fn); ~ZipReader() { if (zipfile) diff --git a/src/smp/smp.h b/src/smp/smp.h index 87e12258..cf792492 100644 --- a/src/smp/smp.h +++ b/src/smp/smp.h @@ -2,7 +2,6 @@ class SMP { public: -thread_t thread; virtual void enter() = 0; public: diff --git a/src/smp/ssmp/core/op_mov.b b/src/smp/ssmp/core/op_mov.b index 19fda37a..d5b8f991 100644 --- a/src/smp/ssmp/core/op_mov.b +++ b/src/smp/ssmp/core/op_mov.b @@ -106,13 +106,13 @@ mov_dp_dp(0xfa) { mov_dp_const(0x8f) { 1:rd = op_readpc(); 2:dp = op_readpc(); -3:op_io(); +3:op_readdp(dp); 4:op_writedp(dp, rd); } mov_ix_a(0xc6) { 1:op_io(); -2:op_io(); +2:op_readdp(regs.x); 3:op_writedp(regs.x, regs.a); } @@ -126,17 +126,18 @@ mov_dp_a(0xc4, a), mov_dp_x(0xd8, x), mov_dp_y(0xcb, y) { 1:dp = op_readpc(); -2:op_io(); +2:op_readdp(dp); 3:op_writedp(dp, regs.$1); } mov_dpx_a(0xd4, x, a), mov_dpy_x(0xd9, y, x), mov_dpx_y(0xdb, x, y) { -1:dp = op_readpc(); +1:dp = op_readpc(); 2:op_io(); -3:op_io(); -4:op_writedp(dp + regs.$1, regs.$2); + dp += regs.$1; +3:op_readdp(dp); +4:op_writedp(dp, regs.$2); } mov_addr_a(0xc5, a), @@ -144,7 +145,7 @@ mov_addr_x(0xc9, x), mov_addr_y(0xcc, y) { 1:dp = op_readpc(); 2:dp |= op_readpc() << 8; -3:op_io(); +3:op_readaddr(dp); 4:op_writeaddr(dp, regs.$1); } @@ -153,26 +154,29 @@ mov_addry_a(0xd6, y) { 1:dp = op_readpc(); 2:dp |= op_readpc() << 8; 3:op_io(); -4:op_io(); -5:op_writeaddr(dp + regs.$1, regs.a); + dp += regs.$1; +4:op_readaddr(dp); +5:op_writeaddr(dp, regs.a); } mov_idpx_a(0xc7) { -1:sp = op_readpc() + regs.x; +1:sp = op_readpc(); 2:op_io(); + sp += regs.x; 3:dp = op_readdp(sp); 4:dp |= op_readdp(sp + 1) << 8; -5:op_io(); +5:op_readaddr(dp); 6:op_writeaddr(dp, regs.a); } mov_idpy_a(0xd7) { -1:sp = op_readpc(); -2:op_io(); -3:dp = op_readdp(sp); -4:dp |= op_readdp(sp + 1) << 8; -5:op_io(); -6:op_writeaddr(dp + regs.y, regs.a); +1:sp = op_readpc(); +2:dp = op_readdp(sp); +3:dp |= op_readdp(sp + 1) << 8; +4:op_io(); + dp += regs.y; +5:op_readaddr(dp); +6:op_writeaddr(dp, regs.a); } movw_ya_dp(0xba) { @@ -186,7 +190,7 @@ movw_ya_dp(0xba) { movw_dp_ya(0xda) { 1:dp = op_readpc(); -2:op_io(); +2:op_readdp(dp); 3:op_writedp(dp, regs.a); 4:op_writedp(dp + 1, regs.y); } diff --git a/src/smp/ssmp/core/op_mov.cpp b/src/smp/ssmp/core/op_mov.cpp index 45a4165b..d2800edd 100644 --- a/src/smp/ssmp/core/op_mov.cpp +++ b/src/smp/ssmp/core/op_mov.cpp @@ -214,14 +214,14 @@ case 0xfa: { case 0x8f: { rd = op_readpc(); dp = op_readpc(); - op_io(); + op_readdp(dp); op_writedp(dp, rd); } break; //mov_ix_a case 0xc6: { op_io(); - op_io(); + op_readdp(regs.x); op_writedp(regs.x, regs.a); } break; @@ -235,53 +235,56 @@ case 0xaf: { //mov_dp_a case 0xc4: { dp = op_readpc(); - op_io(); + op_readdp(dp); op_writedp(dp, regs.a); } break; //mov_dp_x case 0xd8: { dp = op_readpc(); - op_io(); + op_readdp(dp); op_writedp(dp, regs.x); } break; //mov_dp_y case 0xcb: { dp = op_readpc(); - op_io(); + op_readdp(dp); op_writedp(dp, regs.y); } break; //mov_dpx_a case 0xd4: { - dp = op_readpc(); + dp = op_readpc(); op_io(); - op_io(); - op_writedp(dp + regs.x, regs.a); + dp += regs.x; + op_readdp(dp); + op_writedp(dp, regs.a); } break; //mov_dpy_x case 0xd9: { - dp = op_readpc(); + dp = op_readpc(); op_io(); - op_io(); - op_writedp(dp + regs.y, regs.x); + dp += regs.y; + op_readdp(dp); + op_writedp(dp, regs.x); } break; //mov_dpx_y case 0xdb: { - dp = op_readpc(); + dp = op_readpc(); op_io(); - op_io(); - op_writedp(dp + regs.x, regs.y); + dp += regs.x; + op_readdp(dp); + op_writedp(dp, regs.y); } break; //mov_addr_a case 0xc5: { dp = op_readpc(); dp |= op_readpc() << 8; - op_io(); + op_readaddr(dp); op_writeaddr(dp, regs.a); } break; @@ -289,7 +292,7 @@ case 0xc5: { case 0xc9: { dp = op_readpc(); dp |= op_readpc() << 8; - op_io(); + op_readaddr(dp); op_writeaddr(dp, regs.x); } break; @@ -297,7 +300,7 @@ case 0xc9: { case 0xcc: { dp = op_readpc(); dp |= op_readpc() << 8; - op_io(); + op_readaddr(dp); op_writeaddr(dp, regs.y); } break; @@ -306,8 +309,9 @@ case 0xd5: { dp = op_readpc(); dp |= op_readpc() << 8; op_io(); - op_io(); - op_writeaddr(dp + regs.x, regs.a); + dp += regs.x; + op_readaddr(dp); + op_writeaddr(dp, regs.a); } break; //mov_addry_a @@ -315,28 +319,31 @@ case 0xd6: { dp = op_readpc(); dp |= op_readpc() << 8; op_io(); - op_io(); - op_writeaddr(dp + regs.y, regs.a); + dp += regs.y; + op_readaddr(dp); + op_writeaddr(dp, regs.a); } break; //mov_idpx_a case 0xc7: { - sp = op_readpc() + regs.x; + sp = op_readpc(); op_io(); + sp += regs.x; dp = op_readdp(sp); dp |= op_readdp(sp + 1) << 8; - op_io(); + op_readaddr(dp); op_writeaddr(dp, regs.a); } break; //mov_idpy_a case 0xd7: { - sp = op_readpc(); - op_io(); + sp = op_readpc(); dp = op_readdp(sp); dp |= op_readdp(sp + 1) << 8; op_io(); - op_writeaddr(dp + regs.y, regs.a); + dp += regs.y; + op_readaddr(dp); + op_writeaddr(dp, regs.a); } break; //movw_ya_dp @@ -352,7 +359,7 @@ case 0xba: { //movw_dp_ya case 0xda: { dp = op_readpc(); - op_io(); + op_readdp(dp); op_writedp(dp, regs.a); op_writedp(dp + 1, regs.y); } break; diff --git a/src/smp/ssmp/core/op_read.b b/src/smp/ssmp/core/op_read.b index f5ebff01..fa2ed350 100644 --- a/src/smp/ssmp/core/op_read.b +++ b/src/smp/ssmp/core/op_read.b @@ -148,7 +148,6 @@ sbc_dp_const(0xb8, sbc, 1) { } addw_ya_dp(0x7a, addw), -cmpw_ya_dp(0x5a, cmpw), subw_ya_dp(0x9a, subw) { 1:dp = op_readpc(); 2:rd = op_readdp(dp); @@ -157,6 +156,13 @@ subw_ya_dp(0x9a, subw) { regs.ya = op_$1(regs.ya, rd); } +cmpw_ya_dp(0x5a) { +1:dp = op_readpc(); +2:rd = op_readdp(dp); +3:rd |= op_readdp(dp + 1) << 8; + op_cmpw(regs.ya, rd); +} + and1_bit(0x4a, !!), and1_notbit(0x6a, !) { 1:dp = op_readpc(); diff --git a/src/smp/ssmp/core/op_read.cpp b/src/smp/ssmp/core/op_read.cpp index ec14a189..3a2583c0 100644 --- a/src/smp/ssmp/core/op_read.cpp +++ b/src/smp/ssmp/core/op_read.cpp @@ -661,15 +661,6 @@ case 0x7a: { regs.ya = op_addw(regs.ya, rd); } break; -//cmpw_ya_dp -case 0x5a: { - dp = op_readpc(); - rd = op_readdp(dp); - rd |= op_readdp(dp + 1) << 8; - op_io(); - regs.ya = op_cmpw(regs.ya, rd); -} break; - //subw_ya_dp case 0x9a: { dp = op_readpc(); @@ -679,6 +670,14 @@ case 0x9a: { regs.ya = op_subw(regs.ya, rd); } break; +//cmpw_ya_dp +case 0x5a: { + dp = op_readpc(); + rd = op_readdp(dp); + rd |= op_readdp(dp + 1) << 8; + op_cmpw(regs.ya, rd); +} break; + //and1_bit case 0x4a: { dp = op_readpc(); diff --git a/src/smp/ssmp/core/opfn.cpp b/src/smp/ssmp/core/opfn.cpp index d4aed28f..dc2f9408 100644 --- a/src/smp/ssmp/core/opfn.cpp +++ b/src/smp/ssmp/core/opfn.cpp @@ -1,32 +1,32 @@ uint8 sSMP::op_adc(uint8 x, uint8 y) { int16 r = x + y + regs.p.c; - regs.p.n = bool(r & 0x80); - regs.p.v = bool(~(x ^ y) & (y ^ (uint8)r) & 0x80); - regs.p.h = bool((x ^ y ^ (uint8)r) & 0x10); + regs.p.n = !!(r & 0x80); + regs.p.v = !!(~(x ^ y) & (y ^ (uint8)r) & 0x80); + regs.p.h = !!((x ^ y ^ (uint8)r) & 0x10); regs.p.z = ((uint8)r == 0); regs.p.c = (r > 0xff); return r; } uint16 sSMP::op_addw(uint16 x, uint16 y) { -int16 r; +uint16 r; regs.p.c = 0; r = op_adc(x, y); r |= op_adc(x >> 8, y >> 8) << 8; - regs.p.z = ((uint16)r == 0); + regs.p.z = (r == 0); return r; } uint8 sSMP::op_and(uint8 x, uint8 y) { x &= y; - regs.p.n = bool(x & 0x80); + regs.p.n = !!(x & 0x80); regs.p.z = (x == 0); return x; } uint8 sSMP::op_cmp(uint8 x, uint8 y) { int16 r = x - y; - regs.p.n = bool(r & 0x80); + regs.p.n = !!(r & 0x80); regs.p.z = ((uint8)r == 0); regs.p.c = (r >= 0); return x; @@ -34,7 +34,7 @@ int16 r = x - y; uint16 sSMP::op_cmpw(uint16 x, uint16 y) { int32 r = x - y; - regs.p.n = bool(r & 0x8000); + regs.p.n = !!(r & 0x8000); regs.p.z = ((uint16)r == 0); regs.p.c = (r >= 0); return x; @@ -42,22 +42,22 @@ int32 r = x - y; uint8 sSMP::op_eor(uint8 x, uint8 y) { x ^= y; - regs.p.n = bool(x & 0x80); + regs.p.n = !!(x & 0x80); regs.p.z = (x == 0); return x; } uint8 sSMP::op_or(uint8 x, uint8 y) { x |= y; - regs.p.n = bool(x & 0x80); + regs.p.n = !!(x & 0x80); regs.p.z = (x == 0); return x; } uint8 sSMP::op_sbc(uint8 x, uint8 y) { int16 r = x - y - !regs.p.c; - regs.p.n = bool(r & 0x80); - regs.p.v = bool((x ^ y) & (x ^ (uint8)r) & 0x80); + regs.p.n = !!(r & 0x80); + regs.p.v = !!((x ^ y) & (x ^ (uint8)r) & 0x80); regs.p.h = !((x ^ y ^ (uint8)r) & 0x10); regs.p.z = ((uint8)r == 0); regs.p.c = (r >= 0); @@ -65,74 +65,72 @@ int16 r = x - y - !regs.p.c; } uint16 sSMP::op_subw(uint16 x, uint16 y) { -int16 r; +uint16 r; regs.p.c = 1; r = op_sbc(x, y); r |= op_sbc(x >> 8, y >> 8) << 8; - regs.p.z = ((uint16)r == 0); + regs.p.z = (r == 0); return r; } uint8 sSMP::op_inc(uint8 x) { x++; - regs.p.n = bool(x & 0x80); + regs.p.n = !!(x & 0x80); regs.p.z = (x == 0); return x; } uint16 sSMP::op_incw(uint16 x) { x++; - regs.p.n = bool(x & 0x8000); + regs.p.n = !!(x & 0x8000); regs.p.z = (x == 0); return x; } uint8 sSMP::op_dec(uint8 x) { x--; - regs.p.n = bool(x & 0x80); + regs.p.n = !!(x & 0x80); regs.p.z = (x == 0); return x; } uint16 sSMP::op_decw(uint16 x) { x--; - regs.p.n = bool(x & 0x8000); + regs.p.n = !!(x & 0x8000); regs.p.z = (x == 0); return x; } uint8 sSMP::op_asl(uint8 x) { - regs.p.c = bool(x & 0x80); + regs.p.c = !!(x & 0x80); x <<= 1; - regs.p.n = bool(x & 0x80); + regs.p.n = !!(x & 0x80); regs.p.z = (x == 0); return x; } uint8 sSMP::op_lsr(uint8 x) { - regs.p.c = bool(x & 0x01); + regs.p.c = !!(x & 0x01); x >>= 1; - regs.p.n = bool(x & 0x80); + regs.p.n = !!(x & 0x80); regs.p.z = (x == 0); return x; } uint8 sSMP::op_rol(uint8 x) { -uint8 c = regs.p.c; - regs.p.c = bool(x & 0x80); - x <<= 1; - x |= c; - regs.p.n = bool(x & 0x80); +uint8 carry = (uint8)regs.p.c; + regs.p.c = !!(x & 0x80); + x = (x << 1) | carry; + regs.p.n = !!(x & 0x80); regs.p.z = (x == 0); return x; } uint8 sSMP::op_ror(uint8 x) { -uint8 c = (regs.p.c)?0x80:0x00; - regs.p.c = bool(x & 0x01); - x >>= 1; - x |= c; - regs.p.n = bool(x & 0x80); +uint8 carry = (uint8)regs.p.c << 7; + regs.p.c = !!(x & 0x01); + x = carry | (x >> 1); + regs.p.n = !!(x & 0x80); regs.p.z = (x == 0); return x; } diff --git a/src/smp/ssmp/memory/memory.cpp b/src/smp/ssmp/memory/memory.cpp index 6cbe5abd..3c74de44 100644 --- a/src/smp/ssmp/memory/memory.cpp +++ b/src/smp/ssmp/memory/memory.cpp @@ -1,32 +1,35 @@ -alwaysinline uint8 sSMP::ram_read(uint16 addr) { +alwaysinline +uint8 sSMP::ram_read(uint16 addr) { if(addr < 0xffc0)return spcram[addr]; if(status.iplrom_enabled == false)return spcram[addr]; return iplrom[addr & 0x3f]; } -alwaysinline void sSMP::ram_write(uint16 addr, uint8 data) { +alwaysinline +void sSMP::ram_write(uint16 addr, uint8 data) { //writes to $ffc0-$ffff always go to spcram, even if the iplrom is enabled spcram[addr] = data; } // -alwaysinline uint8 sSMP::port_read(uint8 port) { +alwaysinline +uint8 sSMP::port_read(uint8 port) { return spcram[0xf4 + (port & 3)]; } -alwaysinline void sSMP::port_write(uint8 port, uint8 data) { +alwaysinline +void sSMP::port_write(uint8 port, uint8 data) { spcram[0xf4 + (port & 3)] = data; } // -alwaysinline uint8 sSMP::op_busread(uint16 addr) { +alwaysinline +uint8 sSMP::op_busread(uint16 addr) { uint8 r; if((addr & 0xfff0) == 0x00f0) { //addr >= 0x00f0 && addr <= 0x00ff - scheduler.sync_smpcpu(); - switch(addr) { case 0xf0: { //TEST -- write-only register @@ -50,12 +53,13 @@ uint8 r; case 0xf5: //CPUIO1 case 0xf6: //CPUIO2 case 0xf7: { //CPUIO3 + scheduler.sync_smpcpu(); r = r_cpu->port_read(addr & 3); } break; case 0xf8: //??? case 0xf9: { //??? -- Mapped to SPCRAM - r = spcram[addr]; + r = ram_read(addr); } break; case 0xfa: //T0TARGET @@ -93,11 +97,10 @@ uint8 r; return r; } -alwaysinline void sSMP::op_buswrite(uint16 addr, uint8 data) { +alwaysinline +void sSMP::op_buswrite(uint16 addr, uint8 data) { if((addr & 0xfff0) == 0x00f0) { //addr >= 0x00f0 && addr >= 0x00ff - scheduler.sync_smpcpu(); - if(status.mmio_disabled == true)return; switch(addr) { @@ -123,15 +126,18 @@ alwaysinline void sSMP::op_buswrite(uint16 addr, uint8 data) { case 0xf1: { //CONTROL status.iplrom_enabled = !!(data & 0x80); - //one-time clearing of APU port read registers, - //emulated by simulating CPU writes of 0x00 - if(data & 0x20) { - r_cpu->port_write(2, 0x00); - r_cpu->port_write(3, 0x00); - } - if(data & 0x10) { - r_cpu->port_write(0, 0x00); - r_cpu->port_write(1, 0x00); + if(data & 0x30) { + //one-time clearing of APU port read registers, + //emulated by simulating CPU writes of 0x00 + scheduler.sync_smpcpu(); + if(data & 0x20) { + r_cpu->port_write(2, 0x00); + r_cpu->port_write(3, 0x00); + } + if(data & 0x10) { + r_cpu->port_write(0, 0x00); + r_cpu->port_write(1, 0x00); + } } //0->1 transistion resets timers @@ -169,12 +175,14 @@ alwaysinline void sSMP::op_buswrite(uint16 addr, uint8 data) { case 0xf5: //CPUIO1 case 0xf6: //CPUIO2 case 0xf7: { //CPUIO3 + scheduler.sync_smpcpu(); port_write(addr & 3, data); } break; case 0xf8: //??? case 0xf9: { //??? - Mapped to SPCRAM - spcram[addr] = data; + //$00f1.d1 (ram_writable) has no effect on these two addresses + ram_write(addr, data); } break; case 0xfa: { //T0TARGET @@ -220,30 +228,37 @@ void sSMP::op_write(uint16 addr, uint8 data) { // -alwaysinline uint8 sSMP::op_readpc() { +alwaysinline +uint8 sSMP::op_readpc() { return op_read(regs.pc++); } -alwaysinline uint8 sSMP::op_readstack() { +alwaysinline +uint8 sSMP::op_readstack() { return op_read(0x0100 | ++regs.sp); } -alwaysinline void sSMP::op_writestack(uint8 data) { +alwaysinline +void sSMP::op_writestack(uint8 data) { op_write(0x0100 | regs.sp--, data); } -alwaysinline uint8 sSMP::op_readaddr(uint16 addr) { +alwaysinline +uint8 sSMP::op_readaddr(uint16 addr) { return op_read(addr); } -alwaysinline void sSMP::op_writeaddr(uint16 addr, uint8 data) { +alwaysinline +void sSMP::op_writeaddr(uint16 addr, uint8 data) { op_write(addr, data); } -alwaysinline uint8 sSMP::op_readdp(uint8 addr) { +alwaysinline +uint8 sSMP::op_readdp(uint8 addr) { return op_read(((uint)regs.p.p << 8) + addr); } -alwaysinline void sSMP::op_writedp(uint8 addr, uint8 data) { +alwaysinline +void sSMP::op_writedp(uint8 addr, uint8 data) { op_write(((uint)regs.p.p << 8) + addr, data); } diff --git a/src/smp/ssmp/timing/timing.cpp b/src/smp/ssmp/timing/timing.cpp index 6da21668..4dd91355 100644 --- a/src/smp/ssmp/timing/timing.cpp +++ b/src/smp/ssmp/timing/timing.cpp @@ -14,7 +14,8 @@ alwaysinline void sSMP::add_clocks(uint clocks) { //1024000 / 768 = 32000 DSP ticks/second if(++status.dsp_counter == 32) { status.dsp_counter = 0; - snes->audio_update(r_dsp->run()); + uint32 sample = r_dsp->run(); + snes.audio_update( (sample & 0xffff), (sample >> 16) ); } } } diff --git a/src/snes/audio/audio.cpp b/src/snes/audio/audio.cpp index af617cba..f582c9db 100644 --- a/src/snes/audio/audio.cpp +++ b/src/snes/audio/audio.cpp @@ -1,28 +1,26 @@ -void SNES::audio_update(uint32 data) { +void SNES::audio_update(uint16 l_sample, uint16 r_sample) { if(pcmfp) { - fputc(data, pcmfp); - fputc(data >> 8, pcmfp); - fputc(data >> 16, pcmfp); - fputc(data >> 24, pcmfp); + fputlw(pcmfp, l_sample); + fputlw(pcmfp, r_sample); } + if(config::snes.mute == true) { l_sample = r_sample = 0x0000; } - if((bool)config::snes.mute == true)data = 0x0000; - - sound_run(data); + snesinterface.audio_sample(l_sample, r_sample); } void SNES::log_audio_enable(const char *fn) { -char tfn[256]; -int i; - if(pcmfp)log_audio_disable(); + if(pcmfp) { log_audio_disable(); } +char tfn[256]; if(!fn) { - for(i=0;i<=999;i++) { + int i = 0; + while(i < 1000) { sprintf(tfn, "audio%0.3d.wav", i); pcmfp = fopen(tfn, "rb"); if(!pcmfp)break; fclose(pcmfp); pcmfp = 0; + i++; } if(i >= 1000)return; } else { diff --git a/src/snes/audio/audio.h b/src/snes/audio/audio.h index 1442e57c..7b51c6a5 100644 --- a/src/snes/audio/audio.h +++ b/src/snes/audio/audio.h @@ -2,11 +2,9 @@ FILE *pcmfp; //if a filename is not specified, one will be generated //automatically ("audio%0.3d.wav") - void log_audio_enable(const char *fn = 0); - void log_audio_disable(); + void log_audio_enable(const char *fn = 0); + void log_audio_disable(); - void audio_update(uint32 data); - void audio_init(); - void audio_term(); - - virtual void sound_run(uint32 data) = 0; + void audio_update(uint16 l_sample, uint16 r_sample); + void audio_init(); + void audio_term(); diff --git a/src/snes/input/input.cpp b/src/snes/input/input.cpp index a5f7a792..123438ca 100644 --- a/src/snes/input/input.cpp +++ b/src/snes/input/input.cpp @@ -61,6 +61,8 @@ void SNES::port_set_deviceid(bool port, uint deviceid) { } void SNES::poll_input() { + snesinterface.input_poll(); + bool *p0 = input.port0_bits; bool *p1 = input.port1_bits; switch(input.port0_device) { @@ -68,7 +70,7 @@ bool *p1 = input.port1_bits; break; default: - for(int i = 0; i < input.port0_devicebits; i++) { *p0++ = get_input_status(input.port0_deviceid, i); } + for(int i = 0; i < input.port0_devicebits; i++) { *p0++ = snesinterface.input_poll(input.port0_deviceid, i); } break; } @@ -77,7 +79,7 @@ bool *p1 = input.port1_bits; break; default: - for(int i = 0; i < input.port1_devicebits; i++) { *p1++ = get_input_status(input.port1_deviceid, i); } + for(int i = 0; i < input.port1_devicebits; i++) { *p1++ = snesinterface.input_poll(input.port1_deviceid, i); } break; } diff --git a/src/snes/input/input.h b/src/snes/input/input.h index b2e414bf..e5a94a31 100644 --- a/src/snes/input/input.h +++ b/src/snes/input/input.h @@ -28,13 +28,5 @@ struct { bool port_read(bool port); void port_set_deviceid(bool port, uint deviceid); - -//The CPU calls poll_input() when the main interface should check the -//status of all joypad buttons and cache the results... - virtual void poll_input(); - -//...and then the CPU calls get_input_status() whenever it needs one -//of the cached button values to be returned for emulation purposes. - virtual bool get_input_status(uint8 device, uint8 button) { return false; } - - virtual void input_init(); + void input_init(); + void poll_input(); diff --git a/src/snes/interface/interface.h b/src/snes/interface/interface.h new file mode 100644 index 00000000..160cc7a6 --- /dev/null +++ b/src/snes/interface/interface.h @@ -0,0 +1,20 @@ +/***** + * SNES Interface class + * + * Interfaces SNES core with platform-specific functionality + * (video, audio, input, ...) + *****/ + +class SNESInterface { +public: + bool video_lock(uint16 *&data, uint &pitch); + void video_unlock(); + void video_refresh(); + + void audio_sample(uint16 l_sample, uint16 r_sample); + + void input_poll(); + bool input_poll(uint deviceid, uint button); +}; + +extern SNESInterface snesinterface; diff --git a/src/snes/scheduler/scheduler.cpp b/src/snes/scheduler/scheduler.cpp index 385d1193..470a996e 100644 --- a/src/snes/scheduler/scheduler.cpp +++ b/src/snes/scheduler/scheduler.cpp @@ -10,23 +10,23 @@ void threadentry_smp() { r_smp->enter(); } void Scheduler::enter() { switch(clock.active) { case THREAD_CPU: - co_jump(thread_cpu); + co_switch(thread_cpu); break; case THREAD_SMP: - co_jump(thread_smp); + co_switch(thread_smp); break; } } void Scheduler::exit() { - co_jump(thread_snes); + co_switch(thread_snes); } void Scheduler::init() { - clock.cpu_freq = snes->region() == SNES::NTSC ? + clock.cpu_freq = snes.region() == SNES::NTSC ? config::cpu.ntsc_clock_rate : config::cpu.pal_clock_rate; - clock.smp_freq = snes->region() == SNES::NTSC ? + clock.smp_freq = snes.region() == SNES::NTSC ? config::smp.ntsc_clock_rate : config::smp.pal_clock_rate; @@ -36,14 +36,15 @@ void Scheduler::init() { if(thread_cpu)co_delete(thread_cpu); if(thread_smp)co_delete(thread_smp); - thread_cpu = co_create(threadentry_cpu, 65536); - thread_smp = co_create(threadentry_smp, 65536); + thread_snes = co_active(); + thread_cpu = co_create(threadentry_cpu, COTHREAD_STACKSIZE_NORMAL); + thread_smp = co_create(threadentry_smp, COTHREAD_STACKSIZE_NORMAL); } // Scheduler::Scheduler() { - thread_snes = co_active(); + thread_snes = 0; thread_cpu = 0; thread_smp = 0; } diff --git a/src/snes/scheduler/scheduler.h b/src/snes/scheduler/scheduler.h index 6b55170d..095b9888 100644 --- a/src/snes/scheduler/scheduler.h +++ b/src/snes/scheduler/scheduler.h @@ -1,9 +1,9 @@ class Scheduler { public: -thread_t thread_snes; -thread_t thread_cpu; -thread_t thread_smp; +cothread_t thread_snes; +cothread_t thread_cpu; +cothread_t thread_smp; enum ActiveThread { THREAD_CPU, @@ -21,25 +21,25 @@ struct { alwaysinline void sync_cpusmp() { if(clock.cpusmp < 0) { clock.active = THREAD_SMP; - co_jump(thread_smp); + co_switch(thread_smp); } } alwaysinline void sync_smpcpu() { if(clock.cpusmp >= 0) { clock.active = THREAD_CPU; - co_jump(thread_cpu); + co_switch(thread_cpu); } } alwaysinline void addclocks_cpu(uint clocks) { clock.cpusmp -= clocks * (uint64)clock.smp_freq; - if(clock.cpusmp < -(275000 * (int64)24000000))sync_cpusmp(); + if(clock.cpusmp < -(250000 * (int64)20000000))sync_cpusmp(); } alwaysinline void addclocks_smp(uint clocks) { clock.cpusmp += clocks * (uint64)clock.cpu_freq; - if(clock.cpusmp > +(275000 * (int64)24000000))sync_smpcpu(); + if(clock.cpusmp > +(250000 * (int64)20000000))sync_smpcpu(); } void enter(); diff --git a/src/snes/snes.cpp b/src/snes/snes.cpp index 56b4ca81..36edef94 100644 --- a/src/snes/snes.cpp +++ b/src/snes/snes.cpp @@ -1,6 +1,6 @@ #include "../base.h" -SNES *snes; +SNES snes; #include "scheduler/scheduler.cpp" #include "tracer/tracer.cpp" diff --git a/src/snes/snes.h b/src/snes/snes.h index 58bedad3..65348e57 100644 --- a/src/snes/snes.h +++ b/src/snes/snes.h @@ -1,3 +1,4 @@ +#include "interface/interface.h" #include "scheduler/scheduler.h" #include "tracer/tracer.h" @@ -34,6 +35,6 @@ enum { NTSC = 0, PAL = 1 }; virtual ~SNES() {} }; -extern SNES *snes; +extern SNES snes; #include "video/filter.h" diff --git a/src/snes/video/filter_ntsc_core.h b/src/snes/video/filter_ntsc_core.h index fa6ad8a7..26381733 100644 --- a/src/snes/video/filter_ntsc_core.h +++ b/src/snes/video/filter_ntsc_core.h @@ -174,15 +174,15 @@ enum { snes_ntsc_clamp_add = ntsc_rgb_builder * 0x101 }; if ( bits == 16 ) {\ rgb_out = (raw>>(13-x)& 0xF800)|(raw>>(8-x)&0x07E0)|(raw>>(4-x)&0x001F);\ rgb_out = ((rgb_out&0xf800)>>11)|((rgb_out&0x07c0)>>1)|((rgb_out&0x001f)<<10);\ - rgb_out = snes->color_lookup_table[rgb_out];\ + rgb_out = snes.color_lookup_table[rgb_out];\ } else if ( bits == 24 || bits == 32 ) {\ rgb_out = (raw>>(5-x)&0xFF0000)|(raw>>(3-x)&0xFF00)|(raw>>(1-x)&0xFF);\ rgb_out = ((rgb_out&0xf80000)>>19)|((rgb_out&0x00f800)>>6)|((rgb_out&0x0000f8)<<7);\ - rgb_out = snes->color_lookup_table[rgb_out];\ + rgb_out = snes.color_lookup_table[rgb_out];\ } else if ( bits == 15 ) {\ rgb_out = (raw>>(14-x)& 0x7C00)|(raw>>(9-x)&0x03E0)|(raw>>(4-x)&0x001F);\ rgb_out = ((rgb_out&0x7c00)>>10)|((rgb_out&0x03e0))|((rgb_out&0x001f)<<10);\ - rgb_out = snes->color_lookup_table[rgb_out];\ + rgb_out = snes.color_lookup_table[rgb_out];\ } else {\ rgb_out = raw;\ }\ diff --git a/src/snes/video/video.cpp b/src/snes/video/video.cpp index 4de5d70b..4eefe972 100644 --- a/src/snes/video/video.cpp +++ b/src/snes/video/video.cpp @@ -63,19 +63,18 @@ void SNES::video_update() { if(video.frame_hires) { video.raster_width <<= 1; } if(video.frame_interlace) { video.raster_height <<= 1; } - video.data = (uint16*)video_lock(video.pitch); - if(video.data) { + if(snesinterface.video_lock(video.data, video.pitch) == true) { video_filter->run(color_lookup_table, video.ppu_data, video.raster_width, video.raster_height, video.raster_height <= 240 ? 2048 : 1024, video.data, 512, 480, video.pitch, 512, 480, video.width, video.height, video.raster_height <= 240 ? (pline_width + 1) : (iline_width + 2)); - video_unlock(); + snesinterface.video_unlock(); } } - video_run(); + snesinterface.video_refresh(); video.frame_hires = false; video.frame_interlace = false; diff --git a/src/snes/video/video.h b/src/snes/video/video.h index 3988a1f5..82cde537 100644 --- a/src/snes/video/video.h +++ b/src/snes/video/video.h @@ -47,17 +47,14 @@ struct video_info { //public functions void update_color_lookup_table(); - virtual void set_video_format(uint filter, uint video_standard, uint pixel_format); - virtual void get_video_info(video_info *info); - virtual void video_run() = 0; - virtual uint16 *video_lock(uint &pitch) = 0; - virtual void video_unlock() = 0; + void set_video_format(uint filter, uint video_standard, uint pixel_format); + void get_video_info(video_info *info); //private functions private: - void update_video_format(); - void video_normalize(); - void video_update(); - void video_scanline(); - void video_init(); + void update_video_format(); + void video_normalize(); + void video_update(); + void video_scanline(); + void video_init(); public: diff --git a/src/ui/Makefile b/src/ui/Makefile index 247f2bcf..4824411a 100644 --- a/src/ui/Makefile +++ b/src/ui/Makefile @@ -25,26 +25,16 @@ endif ifeq ($(PLATFORM),win-visualc) OS = win CC = cl -CFLAGS = /nologo /O2 /EHsc /arch:SSE2 /DPLATFORM_WIN /DCOMPILER_VISUALC /DPROCESSOR_X86 /DUI_WIN +CFLAGS = /nologo /wd4996 /O2 /EHsc /DPLATFORM_WIN /DCOMPILER_VISUALC /DPROCESSOR_X86 /DUI_WIN AS = nasm ASFLAGS = -f win32 -DWIN32 LIBS = d3d9.lib ddraw.lib dsound.lib dinput8.lib dxguid.lib endif -ifeq ($(PLATFORM),win-visualc-wip) -OS = win -CC = cl -CFLAGS = /nologo /O2 /GL /EHsc /DPLATFORM_WIN /DCOMPILER_VISUALC /DPROCESSOR_X86 /DUI_WIN -AS = nasm -ASFLAGS = -f win32 -DWIN32 -LIBS = d3d9.lib ddraw.lib dsound.lib dinput8.lib dxguid.lib -LINK = /link /LTCG -endif - ifeq ($(PLATFORM),win-visualc-pgi) OS = win CC = cl -CFLAGS = /nologo /O2 /GL /EHsc /DPLATFORM_WIN /DCOMPILER_VISUALC /DPROCESSOR_X86 /DUI_WIN +CFLAGS = /nologo /wd4996 /O2 /GL /EHsc /DPLATFORM_WIN /DCOMPILER_VISUALC /DPROCESSOR_X86 /DUI_WIN AS = nasm ASFLAGS = -f win32 -DWIN32 LIBS = d3d9.lib ddraw.lib dsound.lib dinput8.lib dxguid.lib @@ -54,7 +44,7 @@ endif ifeq ($(PLATFORM),win-visualc-pgo) OS = win CC = cl -CFLAGS = /nologo /O2 /GL /EHsc /DPLATFORM_WIN /DCOMPILER_VISUALC /DPROCESSOR_X86 /DUI_WIN +CFLAGS = /nologo /wd4996 /O2 /GL /EHsc /DPLATFORM_WIN /DCOMPILER_VISUALC /DPROCESSOR_X86 /DUI_WIN AS = nasm ASFLAGS = -f win32 -DWIN32 LIBS = d3d9.lib ddraw.lib dsound.lib dinput8.lib dxguid.lib @@ -64,7 +54,7 @@ endif ifeq ($(PLATFORM),win-visualc-sdl) OS = win CC = cl -CFLAGS = /nologo /O2 /EHsc /DPLATFORM_WIN /DCOMPILER_VISUALC /DPROCESSOR_X86 /DUI_SDL +CFLAGS = /nologo /wd4996 /O2 /EHsc /DPLATFORM_WIN /DCOMPILER_VISUALC /DPROCESSOR_X86 /DUI_SDL AS = nasm ASFLAGS = -f win32 -DWIN32 LIBS = sdlmain.lib sdl.lib dsound.lib diff --git a/src/ui/audio/dsound.cpp b/src/ui/audio/dsound.cpp index a6bd2397..f4c8e1a4 100644 --- a/src/ui/audio/dsound.cpp +++ b/src/ui/audio/dsound.cpp @@ -60,7 +60,7 @@ void AudioDS::init() { clear_audio(); term(); - data.samples_per_frame = (uint)( (double)frequency / ((snes->region() == SNES::NTSC) ? 60.0 : 50.0) + 0.5 ); + data.samples_per_frame = (uint)( (double)frequency / ((snes.region() == SNES::NTSC) ? 60.0 : 50.0) + 0.5 ); data.buffer_size = data.samples_per_frame * sizeof(uint32); data.buffer_count = 4; data.buffer = (uint32*)malloc(data.buffer_size * data.buffer_count); diff --git a/src/ui/cc.bat b/src/ui/cc.bat index e6e3ce31..2dcd14b0 100644 --- a/src/ui/cc.bat +++ b/src/ui/cc.bat @@ -1,3 +1,3 @@ -@make PLATFORM=win-visualc-wip +@make PLATFORM=win-visualc @move bsnes.exe ../../bsnes.exe>nul @pause \ No newline at end of file diff --git a/src/ui/input/input.cpp b/src/ui/input/input.cpp index 5416eb10..b1648a97 100644 --- a/src/ui/input/input.cpp +++ b/src/ui/input/input.cpp @@ -211,7 +211,7 @@ uint r = key.find(strptr(p[0])) & 4095; void Input::init() { stringarray t, part; - strcpy(t, config::input.joypad1.map.sget()); + strcpy(t, config::input.joypad1.map.strget()); replace(t, " ", ""); replace(t, "\t", ""); strlower(t); @@ -229,7 +229,7 @@ stringarray t, part; config::input.joypad1.select = decode(part[10]); config::input.joypad1.start = decode(part[11]); - strcpy(t, config::input.joypad2.map.sget()); + strcpy(t, config::input.joypad2.map.strget()); replace(t, " ", ""); replace(t, "\t", ""); strlower(t); @@ -273,7 +273,7 @@ char t[256]; strcat(result, encode((uint)config::input.joypad1.r)); strcat(result, "; "); strcat(result, encode((uint)config::input.joypad1.select)); strcat(result, "; "); strcat(result, encode((uint)config::input.joypad1.start)); - config::input.joypad1.map.sset(strptr(result)); + config::input.joypad1.map.strset(strptr(result)); strcpy(result, ""); strcat(result, encode((uint)config::input.joypad2.up)); strcat(result, "; "); @@ -288,7 +288,7 @@ char t[256]; strcat(result, encode((uint)config::input.joypad2.r)); strcat(result, "; "); strcat(result, encode((uint)config::input.joypad2.select)); strcat(result, "; "); strcat(result, encode((uint)config::input.joypad2.start)); - config::input.joypad2.map.sset(strptr(result)); + config::input.joypad2.map.strset(strptr(result)); } Input::Input() { diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp new file mode 100644 index 00000000..8fafda99 --- /dev/null +++ b/src/ui/interface.cpp @@ -0,0 +1,31 @@ +SNESInterface snesinterface; + +//video + +bool SNESInterface::video_lock(uint16 *&data, uint &pitch) { + return uiVideo->lock(data, pitch); +} + +void SNESInterface::video_unlock() { + uiVideo->unlock(); +} + +void SNESInterface::video_refresh() { + if(r_ppu->renderer_enabled() == true) { uiVideo->update(); } +} + +//audio + +void SNESInterface::audio_sample(uint16 l_sample, uint16 r_sample) { + uiAudio->run( (l_sample) | (r_sample << 16) ); +} + +//input + +void SNESInterface::input_poll() { + uiInput->poll(); +} + +bool SNESInterface::input_poll(uint deviceid, uint button) { + return uiInput->get_status(deviceid, button); +} diff --git a/src/ui/main.cpp b/src/ui/main.cpp index a8482157..07a76b6a 100644 --- a/src/ui/main.cpp +++ b/src/ui/main.cpp @@ -8,7 +8,7 @@ void init_snes(); void term_snes(); /***** - * OS abstraction layer + * hardware abstraction layer *****/ #include "video/video.h" @@ -18,6 +18,8 @@ void term_snes(); #include "video/video.cpp" #include "input/input.cpp" +#include "interface.cpp" + /***** * platform abstraction layer *****/ @@ -37,6 +39,8 @@ void term_snes(); *****/ void init_snes() { + co_init(); + #ifdef POLYMORPHISM deref(mem) = new MEMCORE(); deref(cpu) = new CPUCORE(); @@ -44,20 +48,20 @@ void init_snes() { deref(dsp) = new DSPCORE(); deref(ppu) = new PPUCORE(); #endif - snes = new bSNES(); - bsnes = static_cast(snes); - snes->init(); + snes.init(); } void term_snes() { - snes->term(); + snes.term(); + #ifdef POLYMORPHISM - SafeDelete(deref(mem)); - SafeDelete(deref(cpu)); - SafeDelete(deref(apu)); - SafeDelete(deref(dsp)); - SafeDelete(deref(ppu)); + safe_delete(deref(mem)); + safe_delete(deref(cpu)); + safe_delete(deref(apu)); + safe_delete(deref(dsp)); + safe_delete(deref(ppu)); #endif - SafeDelete(snes); + + co_term(); } diff --git a/src/ui/video/d3d.cpp b/src/ui/video/d3d.cpp index 44fd8819..e63e9703 100644 --- a/src/ui/video/d3d.cpp +++ b/src/ui/video/d3d.cpp @@ -168,14 +168,15 @@ D3DLOCKED_RECT d3dlr; } } -uint16 *VideoD3D::lock(uint &pitch) { +bool VideoD3D::lock(uint16 *&data, uint &pitch) { if(caps.stretchrect == false) { texture->GetLevelDesc(0, &d3dsd); texture->GetSurfaceLevel(0, &surface); } surface->LockRect(&d3dlr, 0, flags.lock); pitch = d3dlr.Pitch; - return (uint16*)d3dlr.pBits; + data = (uint16*)d3dlr.pBits; + return data; } void VideoD3D::unlock() { @@ -291,7 +292,7 @@ void VideoD3D::redraw() { if(!device)return; device->BeginScene(); - snes->get_video_info(&vi); + snes.get_video_info(&vi); if(caps.stretchrect == true) { RECT rs, rd; @@ -343,7 +344,7 @@ char fn[4096]; int i; for(i = 0; i <= 999; i++) { //should probably check the length of config::misc.image_format here... - sprintf(fn, "image%0.3d.%s", i, config::misc.image_format.sget()); + sprintf(fn, "image%0.3d.%s", i, config::misc.image_format.strget()); fp = fopen(fn, "rb"); if(!fp)break; fclose(fp); @@ -352,9 +353,9 @@ int i; if(i >= 1000)return false; uint32 format; - if(strmatch(config::misc.image_format.sget(), "bmp")) { + if(!strcmp(config::misc.image_format.strget(), "bmp")) { format = D3DXIFF_BMP; - } else if(strmatch(config::misc.image_format.sget(), "jpg")) { + } else if(!strcmp(config::misc.image_format.strget(), "jpg")) { format = D3DXIFF_JPG; } else { format = D3DXIFF_PNG; diff --git a/src/ui/video/d3d.h b/src/ui/video/d3d.h index b353ac7a..aa20c00d 100644 --- a/src/ui/video/d3d.h +++ b/src/ui/video/d3d.h @@ -37,30 +37,30 @@ struct { bool stretchrect; //device supports StretchRect } caps; - void set_vertex(uint32 px, uint32 py, uint32 pw, uint32 ph, - uint32 tw, uint32 th, uint32 x, uint32 y, uint32 w, uint32 h); + void set_vertex(uint32 px, uint32 py, uint32 pw, uint32 ph, + uint32 tw, uint32 th, uint32 x, uint32 y, uint32 w, uint32 h); - uint16 *lock(uint &pitch); - void unlock(); + bool lock(uint16 *&data, uint &pitch); + void unlock(); - uint screen_width() { return GetScreenWidth(); } - uint screen_height() { return GetScreenHeight(); } + uint screen_width() { return GetScreenWidth(); } + uint screen_height() { return GetScreenHeight(); } - void pause_enable(); - void pause_disable(); + void pause_enable(); + void pause_disable(); - bool update_video_profile(); - void update_hardware_filter(); - void update_scanlines(); + bool update_video_profile(); + void update_hardware_filter(); + void update_scanlines(); - bool capture_screenshot(); + bool capture_screenshot(); - void init(); - void term(); + void init(); + void term(); - void clear_video(); - void redraw(); - void update(); + void clear_video(); + void redraw(); + void update(); VideoD3D(HWND handle = 0); ~VideoD3D(); diff --git a/src/ui/video/ddraw.cpp b/src/ui/video/ddraw.cpp index f06e7b0d..a1fae3a8 100644 --- a/src/ui/video/ddraw.cpp +++ b/src/ui/video/ddraw.cpp @@ -83,10 +83,11 @@ DDBLTFX fx; surface->Blt(0, 0, 0, DDBLT_WAIT | DDBLT_COLORFILL, &fx); } -uint16 *VideoDD::lock(uint &pitch) { +bool VideoDD::lock(uint16 *&data, uint &pitch) { if(surface->Lock(0, &ddsd, DDLOCK_WAIT, 0) != DD_OK)return 0; pitch = ddsd.lPitch; - return (uint16*)ddsd.lpSurface; + data = (uint16*)ddsd.lpSurface; + return data; } void VideoDD::unlock() { @@ -146,7 +147,7 @@ void VideoDD::create_presentation() { void VideoDD::redraw() { HRESULT hr; RECT rd, rs; - snes->get_video_info(&vi); + snes.get_video_info(&vi); SetRect(&rs, 0, 0, vi.width, vi.height); if(settings.fullscreen == true) { diff --git a/src/ui/video/ddraw.h b/src/ui/video/ddraw.h index 7b95154c..9935f53e 100644 --- a/src/ui/video/ddraw.h +++ b/src/ui/video/ddraw.h @@ -12,23 +12,22 @@ DDSURFACEDESC2 ddsd; DDSCAPS2 ddscaps; public: - uint16 *lock(uint &pitch); - void unlock(); + bool lock(uint16 *&data, uint &pitch); + void unlock(); - uint screen_width() { return GetScreenWidth(); } - uint screen_height() { return GetScreenHeight(); } + uint screen_width() { return GetScreenWidth(); } + uint screen_height() { return GetScreenHeight(); } - bool update_video_profile(); - void init(); - void term(); + bool update_video_profile(); + void init(); + void term(); - void create_render_target(); - void clear_video(); + void create_render_target(); + void clear_video(); -//ddraw_present.cpp - void create_presentation(); - void redraw(); - void update(); + void create_presentation(); + void redraw(); + void update(); VideoDD(HWND handle); }; diff --git a/src/ui/video/video.cpp b/src/ui/video/video.cpp index 2b967bf4..8105f390 100644 --- a/src/ui/video/video.cpp +++ b/src/ui/video/video.cpp @@ -3,8 +3,8 @@ stringarray line, part; if(profile >= VIDEO_PROFILE_COUNT)profile = 0; switch(profile) { - case 0: strcpy(line, config::video.profile_win.sget()); break; - case 1: strcpy(line, config::video.profile_full.sget()); break; + case 0: strcpy(line, config::video.profile_win.strget()); break; + case 1: strcpy(line, config::video.profile_full.strget()); break; } split(part, ";", line); @@ -14,13 +14,13 @@ int i = 0; v->hardware_filter = strdec(part[i++]); v->video_standard = strdec(part[i++]); v->multiplier = strdec(part[i++]); - v->correct_aspect_ratio = strmatch(part[i++], "true"); - v->enable_scanlines = strmatch(part[i++], "true"); - v->manual_render_size = strmatch(part[i++], "true"); + v->correct_aspect_ratio = !strcmp(part[i++], "true"); + v->enable_scanlines = !strcmp(part[i++], "true"); + v->manual_render_size = !strcmp(part[i++], "true"); v->render_width = strdec(part[i++]); v->render_height = strdec(part[i++]); v->fullscreen = (profile == 1); - v->triple_buffering = strmatch(part[i++], "true"); + v->triple_buffering = !strcmp(part[i++], "true"); v->resolution_width = strdec(part[i++]); v->resolution_height = strdec(part[i++]); v->refresh_rate = strdec(part[i++]); @@ -53,8 +53,8 @@ VideoSettings *v = &video_settings[profile]; sprintf(part, "%d", v->refresh_rate); strcat(line, part); switch(profile) { - case 0: config::video.profile_win.sset(strptr(line)); break; - case 1: config::video.profile_full.sset(strptr(line)); break; + case 0: config::video.profile_win.strset(strptr(line)); break; + case 1: config::video.profile_full.strset(strptr(line)); break; } } @@ -64,7 +64,7 @@ uint profile = uint(config::video.profile); load_video_settings(profile); VideoSettings *v = &video_settings[profile]; - snes->set_video_format(v->software_filter, v->video_standard, SNES::PIXELFORMAT_RGB565); + snes.set_video_format(v->software_filter, v->video_standard, SNES::PIXELFORMAT_RGB565); if(v->manual_render_size == true) { settings.render_width = v->render_width; diff --git a/src/ui/video/video.h b/src/ui/video/video.h index ed1a8a8b..e93b5f4a 100644 --- a/src/ui/video/video.h +++ b/src/ui/video/video.h @@ -47,26 +47,26 @@ struct { } settings; void update_video_settings(); - virtual uint16 *lock(uint &pitch) = 0; - virtual void unlock() = 0; + virtual bool lock(uint16 *&data, uint &pitch) = 0; + virtual void unlock() = 0; - virtual uint screen_width() = 0; - virtual uint screen_height() = 0; + virtual uint screen_width() = 0; + virtual uint screen_height() = 0; - virtual bool update_video_profile() { return true; } - virtual void clear_video() {} + virtual bool update_video_profile() { return true; } + virtual void clear_video() {} - virtual void pause_enable() {} - virtual void pause_disable() {} - virtual void update_hardware_filter() {} - virtual void update_scanlines() {} + virtual void pause_enable() {} + virtual void pause_disable() {} + virtual void update_hardware_filter() {} + virtual void update_scanlines() {} - virtual bool capture_screenshot() { return false; } + virtual bool capture_screenshot() { return false; } - virtual void redraw() = 0; - virtual void update() = 0; - virtual void init() = 0; - virtual void term() = 0; + virtual void redraw() = 0; + virtual void update() = 0; + virtual void init() = 0; + virtual void term() = 0; Video(); virtual ~Video(); diff --git a/src/ui/win/bsnes.cpp b/src/ui/win/bsnes.cpp index 3e91663d..bfb1ae12 100644 --- a/src/ui/win/bsnes.cpp +++ b/src/ui/win/bsnes.cpp @@ -1,8 +1,8 @@ -uint32 bSNES::get_state() { +uint bSNES::get_state() { return state; } -void bSNES::set_state(uint32 new_state) { +void bSNES::set_state(uint new_state) { state = new_state; switch(state) { @@ -20,18 +20,6 @@ void bSNES::set_state(uint32 new_state) { wDebug.SetState(state); } -void bSNES::power() { - SNES::power(); -} - -void bSNES::reset() { - SNES::reset(); -} - -void bSNES::scanline() { - SNES::scanline(); -} - void bSNES::run() { if(!r_mem->cart_loaded()) { Sleep(1); @@ -40,7 +28,8 @@ void bSNES::run() { switch(state) { case RUN: - SNES::runtoframe(); + snes.runtoframe(); + video_run(); break; case STOP: Sleep(1); @@ -49,14 +38,6 @@ void bSNES::run() { } void bSNES::video_run() { -//temporary code to try and fix input buffer stalls -static int sync_counter = 0; - if(++sync_counter >= 30) { - Sleep(1); - sync_counter = 0; - } -//remove above code after testing - if(r_ppu->status.frames_updated) { char s[512], t[512]; r_ppu->status.frames_updated = false; @@ -72,35 +53,5 @@ static int sync_counter = 0; wMain.frameskip_pos++; wMain.frameskip_pos %= (wMain.frameskip + 1); - if(r_ppu->renderer_enabled())uiVideo->update(); r_ppu->enable_renderer(wMain.frameskip_pos == 0); } - -void bSNES::sound_run(uint32 data) { - uiAudio->run(data); -} - -/*********************** - *** video functions *** - ***********************/ - -uint16 *bSNES::video_lock(uint &pitch) { - return uiVideo->lock(pitch); -} - -void bSNES::video_unlock() { - uiVideo->unlock(); -} - -/*********************** - *** input functions *** - ***********************/ - -void bSNES::poll_input() { - uiInput->poll(); - SNES::poll_input(); -} - -bool bSNES::get_input_status(uint8 deviceid, uint8 button) { - return uiInput->get_status(deviceid, button); -} diff --git a/src/ui/win/bsnes.h b/src/ui/win/bsnes.h index c30a2594..e816420c 100644 --- a/src/ui/win/bsnes.h +++ b/src/ui/win/bsnes.h @@ -1,26 +1,11 @@ -class bSNES : public SNES { +class bSNES { public: enum { RUN, STOP }; -uint32 state; - uint32 get_state(); - void set_state(uint32 new_state); - - void power(); - void reset(); - - void scanline(); - - void run(); - void video_run(); - void sound_run(uint32 data); - -//video functions - uint16 *video_lock(uint &pitch); - void video_unlock(); - -//input functions - void poll_input(); - bool get_input_status(uint8 deviceid, uint8 button); +uint state; + uint get_state(); + void set_state(uint new_state); + void run(); + void video_run(); bSNES() { state = RUN; } -} *bsnes; +} bsnes; diff --git a/src/ui/win/debugger/debugger.cpp b/src/ui/win/debugger/debugger.cpp index 90949bde..4f03f610 100644 --- a/src/ui/win/debugger/debugger.cpp +++ b/src/ui/win/debugger/debugger.cpp @@ -29,7 +29,7 @@ void Debugger::activate() { if(status.active == true)return; status.active = true; - bsnes->set_state(bSNES::STOP); + bsnes.set_state(bSNES::STOP); wDebug.Show(); wMain.CheckMenuItem(MENU_SETTINGS_DEBUGGER, true); } @@ -42,7 +42,7 @@ void Debugger::deactivate() { wTracer.Hide(); wMemory.Hide(); wMain.CheckMenuItem(MENU_SETTINGS_DEBUGGER, false); - bsnes->set_state(bSNES::RUN); + bsnes.set_state(bSNES::RUN); } void Debugger::refresh() { diff --git a/src/ui/win/debugger/ui_debugger.cpp b/src/ui/win/debugger/ui_debugger.cpp index ca9a8765..d7aef3c2 100644 --- a/src/ui/win/debugger/ui_debugger.cpp +++ b/src/ui/win/debugger/ui_debugger.cpp @@ -8,10 +8,10 @@ bool DebugWindow::Event(EventInfo &info) { case EVENT_CLICKED: { if(info.control == &Run) { - if(bsnes->get_state() == bSNES::RUN) { - bsnes->set_state(bSNES::STOP); - } else if(bsnes->get_state() == bSNES::STOP) { - bsnes->set_state(bSNES::RUN); + if(bsnes.get_state() == bSNES::RUN) { + bsnes.set_state(bSNES::STOP); + } else if(bsnes.get_state() == bSNES::STOP) { + bsnes.set_state(bSNES::RUN); } } else if(info.control == &Tracer) { wTracer.Show(); @@ -88,7 +88,7 @@ void DebugWindow::SetState(uint state) { } void DebugWindow::Show() { - Run.SetText((bsnes->get_state() == bSNES::RUN) ? " Stop" : " Run"); + Run.SetText((bsnes.get_state() == bSNES::RUN) ? " Stop" : " Run"); Window::Show(); Update(); } diff --git a/src/ui/win/event.cpp b/src/ui/win/event.cpp index 1d5e4eb7..539a4258 100644 --- a/src/ui/win/event.cpp +++ b/src/ui/win/event.cpp @@ -36,7 +36,7 @@ string t; wMain.HideMenu(); HideCursor(); } else { - strcpy(t, config::misc.window_style.sget()); + strcpy(t, config::misc.window_style); if(wMain.Visible())strcat(t, "|visible"); wMain.ShowMenu(); ShowCursor(); @@ -57,12 +57,11 @@ void toggle_fullscreen() { event::set_video_profile(config::video.profile); } -void load_rom() { +bool load_rom(char *fn) { OPENFILENAME ofn; -char t[MAX_PATH]; stringarray dir; - strcpy(t, ""); - strcpy(dir, config::fs.rom_path.sget()); + strcpy(fn, ""); + strcpy(dir, config::path.rom); replace(dir, "\\", "/"); if(strlen(dir) && !strend(dir, "/")) { strcat(dir, "/"); } @@ -70,7 +69,7 @@ stringarray dir; if(strbegin(dir, "./")) { strltrim(dir, "./"); strcpy(dir[1], dir[0]); - strcpy(dir[0], config::fs.base_path.sget()); + strcpy(dir[0], config::path.base); strcat(dir[0], dir[1]); } @@ -81,7 +80,7 @@ stringarray dir; ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = wMain.hwnd; - ofn.lpstrFilter = "SNES ROM Images (*.smc;*.sfc;*.swc;*.fig;*.ufo;*.gd3;*.078" + ofn.lpstrFilter = "SNES ROM Images (*.smc;*.sfc;*.swc;*.fig;*.ufo;*.gd3;*.078;*.st" #ifdef GZIP_SUPPORT ";.gz;.z;.zip" #endif @@ -89,7 +88,7 @@ stringarray dir; ";.jma" #endif ")\0" - "*.smc;*.sfc;*.swc;*.fig;*.ufo;*.gd3;*.078" + "*.smc;*.sfc;*.swc;*.fig;*.ufo;*.gd3;*.078;*.st" #ifdef GZIP_SUPPORT ";*.gz;*.z;*.zip" #endif @@ -99,21 +98,61 @@ stringarray dir; "\0" "All Files (*.*)\0" "*.*\0"; - ofn.lpstrFile = t; + ofn.lpstrFile = fn; ofn.lpstrInitialDir = strptr(dir); ofn.nMaxFile = MAX_PATH; ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST; ofn.lpstrDefExt = "smc"; - if(!GetOpenFileName(&ofn))return; + if(!GetOpenFileName(&ofn))return false; + return true; +} + +void load_rom_normal() { +char fn[MAX_PATH]; + if(load_rom(fn) == false)return; if(cartridge.loaded() == true)cartridge.unload(); wDebug.Clear(); - if(cartridge.load(t) == false)return; - wCheatEditor.Refresh(); + cartridge.load_begin(Cartridge::CART_NORMAL); + cartridge.load(fn); + cartridge.load_end(); + snes.power(); - bsnes->power(); + wCheatEditor.Refresh(); +} + +void load_rom_st() { +char fn[MAX_PATH]; + if(load_rom(fn) == false)return; + + if(cartridge.loaded() == true)cartridge.unload(); + wDebug.Clear(); + + cartridge.load_begin(Cartridge::CART_ST); + cartridge.load(fn); + cartridge.load_end(); + snes.power(); + + wCheatEditor.Refresh(); +} + +void load_rom_stdual() { +char fn_a[MAX_PATH], fn_b[MAX_PATH]; + if(load_rom(fn_a) == false)return; + if(load_rom(fn_b) == false)return; + + if(cartridge.loaded() == true)cartridge.unload(); + wDebug.Clear(); + + cartridge.load_begin(Cartridge::CART_STDUAL); + cartridge.load(fn_a); + cartridge.load(fn_b); + cartridge.load_end(); + snes.power(); + + wCheatEditor.Refresh(); } void unload_rom() { diff --git a/src/ui/win/event.h b/src/ui/win/event.h index 7cfcc506..12163846 100644 --- a/src/ui/win/event.h +++ b/src/ui/win/event.h @@ -5,7 +5,10 @@ void capture_screenshot(); void set_video_profile(uint profile); void toggle_fullscreen(); -void load_rom(); +void load_rom(const char *fn); +void load_rom_normal(); +void load_rom_st(); +void load_rom_stdual(); void unload_rom(); }; diff --git a/src/ui/win/main.cpp b/src/ui/win/main.cpp index cb18ce76..3c299c56 100644 --- a/src/ui/win/main.cpp +++ b/src/ui/win/main.cpp @@ -64,7 +64,7 @@ string t; } if(strend(t, "/") == false) { strcat(t, "/"); } - config::fs.base_path.sset(strptr(t)); + config::path.base = strptr(t); } int __stdcall WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) { @@ -73,7 +73,7 @@ int __stdcall WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdl get_base_path(); string cfg_fn; - strcpy(cfg_fn, config::fs.base_path.sget()); + strcpy(cfg_fn, config::path.base); strcat(cfg_fn, "bsnes.cfg"); config_file.load(cfg_fn); @@ -81,9 +81,10 @@ string cfg_fn; init_ui(); if(__argc >= 2) { - if(cartridge.load(__argv[1]) == true) { - snes->power(); - } + cartridge.load_begin(Cartridge::CART_NORMAL); + cartridge.load(__argv[1]); + cartridge.load_end(); + snes.power(); } MSG msg; @@ -93,7 +94,7 @@ MSG msg; TranslateMessage(&msg); DispatchMessage(&msg); } - bsnes->run(); + bsnes.run(); } end: diff --git a/src/ui/win/settings/ui_cheateditor.cpp b/src/ui/win/settings/ui_cheateditor.cpp index abcc48a2..2d155858 100644 --- a/src/ui/win/settings/ui_cheateditor.cpp +++ b/src/ui/win/settings/ui_cheateditor.cpp @@ -35,7 +35,7 @@ void CheatEditorWindow::CheatAdd() { char code[16 + 1], desc[128 + 1]; Code.GetText(code, 16); Desc.GetText(desc, 128); - if(strmatch(code, "") == true)return; + if(!strcmp(code, ""))return; cheat.add(Enabled.Checked(), code, desc); Refresh(); diff --git a/src/ui/win/settings/ui_coloradjust.cpp b/src/ui/win/settings/ui_coloradjust.cpp index d8f779d4..9bfaf2fe 100644 --- a/src/ui/win/settings/ui_coloradjust.cpp +++ b/src/ui/win/settings/ui_coloradjust.cpp @@ -5,15 +5,15 @@ bool ColorAdjustWindow::Event(EventInfo &info) { if(info.control == &ContrastSlider) { config::snes.contrast = ContrastSlider.GetPos(); ContrastLabel.SetText("Contrast: %d", int32(config::snes.contrast)); - snes->update_color_lookup_table(); + snes.update_color_lookup_table(); } else if(info.control == &BrightnessSlider) { config::snes.brightness = BrightnessSlider.GetPos(); BrightnessLabel.SetText("Brightness: %d", int32(config::snes.brightness)); - snes->update_color_lookup_table(); + snes.update_color_lookup_table(); } else if(info.control == &GammaSlider) { config::snes.gamma = GammaSlider.GetPos(); GammaLabel.SetText("Gamma: %0.2f", double(config::snes.gamma) / 100.0); - snes->update_color_lookup_table(); + snes.update_color_lookup_table(); } } break; @@ -21,19 +21,19 @@ bool ColorAdjustWindow::Event(EventInfo &info) { if(info.control == &GammaRamp) { config::snes.gamma_ramp.toggle(); GammaRamp.Check(config::snes.gamma_ramp); - snes->update_color_lookup_table(); + snes.update_color_lookup_table(); } else if(info.control == &Sepia) { config::snes.sepia.toggle(); Sepia.Check(config::snes.sepia); - snes->update_color_lookup_table(); + snes.update_color_lookup_table(); } else if(info.control == &Grayscale) { config::snes.grayscale.toggle(); Grayscale.Check(config::snes.grayscale); - snes->update_color_lookup_table(); + snes.update_color_lookup_table(); } else if(info.control == &Invert) { config::snes.invert.toggle(); Invert.Check(config::snes.invert); - snes->update_color_lookup_table(); + snes.update_color_lookup_table(); } else if(info.control == &Restore) { config::snes.contrast = 0; config::snes.brightness = 0; @@ -52,7 +52,7 @@ bool ColorAdjustWindow::Event(EventInfo &info) { Sepia.Check(config::snes.sepia); Grayscale.Check(config::snes.grayscale); Invert.Check(config::snes.invert); - snes->update_color_lookup_table(); + snes.update_color_lookup_table(); } } break; diff --git a/src/ui/win/settings/ui_emusettings.cpp b/src/ui/win/settings/ui_emusettings.cpp index 98fdfedc..1a237043 100644 --- a/src/ui/win/settings/ui_emusettings.cpp +++ b/src/ui/win/settings/ui_emusettings.cpp @@ -4,10 +4,10 @@ bool EmuSettingsWindow::Event(EventInfo &info) { case EVENT_CHANGED: { if(info.control == &Port1) { config::snes.controller_port0 = Port1.GetSelection(); - snes->port_set_deviceid(0, config::snes.controller_port0); + snes.port_set_deviceid(0, config::snes.controller_port0); } else if(info.control == &Port2) { config::snes.controller_port1 = Port2.GetSelection(); - snes->port_set_deviceid(1, config::snes.controller_port1); + snes.port_set_deviceid(1, config::snes.controller_port1); } } break; diff --git a/src/ui/win/ui.cpp b/src/ui/win/ui.cpp index 1e287ddb..d813c47c 100644 --- a/src/ui/win/ui.cpp +++ b/src/ui/win/ui.cpp @@ -21,7 +21,7 @@ long height; wMain.SetBackgroundColor(0, 0, 0); wMain.SetIcon(100); - wMain.Create(0, "bsnes", config::misc.window_style.sget(), 0, 0, 256, 224, BSNES_TITLE); + wMain.Create(0, "bsnes", config::misc.window_style, 0, 0, 256, 224, BSNES_TITLE); wMain.Center(); wAbout.SetIcon(100); @@ -31,23 +31,23 @@ long height; init_settings(); init_debugger(); - if(!stricmp(config::system.video.sget(), "dd")) { + if(!stricmp(config::system.video, "dd")) { uiVideo = new VideoDD(wMain.hwnd); -//} else if(!stricmp(config::system.video.sget(), "sdl")) { +//} else if(!stricmp(config::system.video, "sdl")) { // uiVideo = new VideoSDL((void*)wMain.hwnd); } else { uiVideo = new VideoD3D(wMain.hwnd); } - if(!stricmp(config::system.audio.sget(), "none")) { + if(!stricmp(config::system.audio, "none")) { uiAudio = new Audio(); } else { uiAudio = new AudioDS(wMain.hwnd); } - if(!stricmp(config::system.input.sget(), "none")) { + if(!stricmp(config::system.input, "none")) { uiInput = new Input(); -//} else if(!stricmp(config::system.input.sget(), "sdl")) { +//} else if(!stricmp(config::system.input, "sdl")) { // uiInput = new InputSDL((void*)wMain.hwnd); } else { uiInput = new InputDI(); diff --git a/src/ui/win/ui.h b/src/ui/win/ui.h index e8adb8b0..99a035dc 100644 --- a/src/ui/win/ui.h +++ b/src/ui/win/ui.h @@ -12,6 +12,10 @@ Font vwf, fwf, font_about, font_header, font_list; enum { MENU_FILE = 100, MENU_FILE_LOAD, + MENU_FILE_LOAD_SPECIAL, + //--- + MENU_FILE_LOAD_ST, + MENU_FILE_LOAD_STDUAL, MENU_FILE_UNLOAD, MENU_FILE_RESET, MENU_FILE_POWER, diff --git a/src/ui/win/ui_main.cpp b/src/ui/win/ui_main.cpp index e2358d70..7beee903 100644 --- a/src/ui/win/ui_main.cpp +++ b/src/ui/win/ui_main.cpp @@ -54,10 +54,10 @@ bool MainWindow::Event(EventInfo &info) { } else if(id == key->f11) { event::toggle_fullscreen(); } else if(id == key->f12) { - if(bsnes->get_state() == bSNES::RUN) { - bsnes->set_state(bSNES::STOP); - } else if(bsnes->get_state() == bSNES::STOP) { - bsnes->set_state(bSNES::RUN); + if(bsnes.get_state() == bSNES::RUN) { + bsnes.set_state(bSNES::STOP); + } else if(bsnes.get_state() == bSNES::STOP) { + bsnes.set_state(bSNES::RUN); } //no idea why this is needed, keydown event should only occur once; //however it is being called repeatedly when F11 is held down ... @@ -101,7 +101,15 @@ bool MainWindow::Event(EventInfo &info) { switch(info.control_id) { case MENU_FILE_LOAD: { - event::load_rom(); + event::load_rom_normal(); + } break; + + case MENU_FILE_LOAD_ST: { + event::load_rom_st(); + } break; + + case MENU_FILE_LOAD_STDUAL: { + event::load_rom_stdual(); } break; case MENU_FILE_UNLOAD: { @@ -110,14 +118,14 @@ bool MainWindow::Event(EventInfo &info) { case MENU_FILE_RESET: { if(cartridge.loaded() == true) { - bsnes->reset(); + snes.reset(); dprintf("* Reset"); } } break; case MENU_FILE_POWER: { if(cartridge.loaded() == true) { - bsnes->power(); + snes.power(); dprintf("* Power"); } } break; @@ -178,10 +186,10 @@ bool MainWindow::Event(EventInfo &info) { case MENU_MISC_LOGAUDIO: { if(MenuItemChecked(MENU_MISC_LOGAUDIO) == false) { CheckMenuItem(MENU_MISC_LOGAUDIO); - snes->log_audio_enable(); + snes.log_audio_enable(); } else { UncheckMenuItem(MENU_MISC_LOGAUDIO); - snes->log_audio_disable(); + snes.log_audio_disable(); } } break; @@ -213,10 +221,14 @@ char t[128]; AddMenuGroup("&File"); AddMenuItem(MENU_FILE_LOAD, "&Load Cartridge"); + AddMenuGroup("&Load Special"); + AddMenuItem(MENU_FILE_LOAD_ST, "&Load ST Cartridge"); + AddMenuItem(MENU_FILE_LOAD_STDUAL, "&Load ST Dual Cartridges"); + EndMenuGroup(); AddMenuItem(MENU_FILE_UNLOAD, "&Unload Cartridge"); AddMenuSeparator(); - AddMenuItem(MENU_FILE_RESET, "&Reset"); - AddMenuItem(MENU_FILE_POWER, "&Power (Hard Reset)"); + AddMenuItem(MENU_FILE_RESET, "&Reset System"); + AddMenuItem(MENU_FILE_POWER, "&Power Cycle System"); AddMenuSeparator(); AddMenuItem(MENU_FILE_EXIT, "E&xit"); EndMenuGroup();