From 745358d37b3b5292144cb912c7008fbd928c8e2a Mon Sep 17 00:00:00 2001 From: Zane Kaminski Date: Fri, 29 Sep 2023 20:55:19 -0400 Subject: [PATCH] Better? --- Makefile | 2 -- bin/GWRAM.dbg.po | Bin 143360 -> 143360 bytes bin/GWRAM.po | Bin 143360 -> 143360 bytes ram2e.c | 1 + ram2e_hal.h | 58 ++--------------------------------------------- ram2e_save.h | 58 +++++++++++++++++++++++++++++++++++++++++++++++ ram2gs.c | 3 ++- 7 files changed, 63 insertions(+), 59 deletions(-) create mode 100644 ram2e_save.h diff --git a/Makefile b/Makefile index 43cd320..f73d8b9 100644 --- a/Makefile +++ b/Makefile @@ -68,5 +68,3 @@ clean: copy: bin/GWRAM.po cp bin/GWRAM.po /Volumes/FLOPPYEMU/GWRAM.po diskutil unmount /Volumes/FLOPPYEMU/ - - diff --git a/bin/GWRAM.dbg.po b/bin/GWRAM.dbg.po index 5d02111cab85294bcca13f2cc84bca73b640f558..7ce9458dd47abfd19c37394eff686961dd93f9ac 100644 GIT binary patch delta 7036 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 diff --git a/bin/GWRAM.po b/bin/GWRAM.po index 53d6729f647d835dbe7a97abb4492c183a36a7cc..122ce19133345324d25ac45fef7f6e3bb0168bbd 100644 GIT binary patch delta 7122 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 ry`#KueCSa>`!DVr_4Dg*d? #include @@ -15,58 +15,4 @@ void ram2e_erase(); void ram2e_save_start(char mask, char enled); void ram2e_save_end(char mask, char enled); -static char _rwsave[256]; -static char _rwsave0_1; -static char _rwsave0_2; -static char _rwsave0_3; -static void ramworks_save() { - __asm__("sta $C009"); // Store in ALTZP - - // Save address 0x0000 in every bank - __asm__("ldx #0"); - saveloop: - __asm__("stx $C073"); - __asm__("lda $00,X"); - __asm__("sta %v,X", _rwsave); - __asm__("inx"); - __asm__("bne %g", saveloop); - - // Save addresses 0x0001-3 in bank 0 - __asm__("ldx #0"); - __asm__("stx $C073"); - __asm__("lda $01"); - __asm__("sta %v", _rwsave0_1); - __asm__("lda $02"); - __asm__("sta %v", _rwsave0_2); - __asm__("lda $03"); - __asm__("sta %v", _rwsave0_3); - - __asm__("sta $C008"); // Don't store in ALTZP -} - -static void ramworks_restore() { - __asm__("sta $C009"); // Store in ALTZP - - // Restore address 0x0000 in every bank - __asm__("ldx #0"); - restoreloop: - __asm__("stx $C073"); - __asm__("lda %v,X", _rwsave); - __asm__("sta $00,X"); - __asm__("inx"); - __asm__("bne %g", restoreloop); - - // Restore addresses 0x0001-3 in bank 0 - __asm__("ldx #0"); - __asm__("stx $C073"); - __asm__("lda %v", _rwsave0_1); - __asm__("sta $01"); - __asm__("lda %v", _rwsave0_2); - __asm__("sta $02"); - __asm__("lda %v", _rwsave0_3); - __asm__("sta $03"); - - __asm__("sta $C008"); // Don't store in ALTZP -} - #endif \ No newline at end of file diff --git a/ram2e_save.h b/ram2e_save.h new file mode 100644 index 0000000..f8e6b63 --- /dev/null +++ b/ram2e_save.h @@ -0,0 +1,58 @@ +#ifndef RAM2E_SAVE_H +#define RAM2E_SAVE_H + +static char _rwsave[256]; +static char _rwsave0_1; +static char _rwsave0_2; +static char _rwsave0_3; +static void ramworks_save() { + __asm__("sta $C009"); // Store in ALTZP + + // Save address 0x0000 in every bank + __asm__("ldx #0"); + saveloop: + __asm__("stx $C073"); + __asm__("lda $00,X"); + __asm__("sta %v,X", _rwsave); + __asm__("inx"); + __asm__("bne %g", saveloop); + + // Save addresses 0x0001-3 in bank 0 + __asm__("ldx #0"); + __asm__("stx $C073"); + __asm__("lda $01"); + __asm__("sta %v", _rwsave0_1); + __asm__("lda $02"); + __asm__("sta %v", _rwsave0_2); + __asm__("lda $03"); + __asm__("sta %v", _rwsave0_3); + + __asm__("sta $C008"); // Don't store in ALTZP +} + +static void ramworks_restore() { + __asm__("sta $C009"); // Store in ALTZP + + // Restore address 0x0000 in every bank + __asm__("ldx #0"); + restoreloop: + __asm__("stx $C073"); + __asm__("lda %v,X", _rwsave); + __asm__("sta $00,X"); + __asm__("inx"); + __asm__("bne %g", restoreloop); + + // Restore addresses 0x0001-3 in bank 0 + __asm__("ldx #0"); + __asm__("stx $C073"); + __asm__("lda %v", _rwsave0_1); + __asm__("sta $01"); + __asm__("lda %v", _rwsave0_2); + __asm__("sta $02"); + __asm__("lda %v", _rwsave0_3); + __asm__("sta $03"); + + __asm__("sta $C008"); // Don't store in ALTZP +} + +#endif \ No newline at end of file diff --git a/ram2gs.c b/ram2gs.c index ddd5b67..a4563f0 100644 --- a/ram2gs.c +++ b/ram2gs.c @@ -49,7 +49,7 @@ static void loading_screen() int ram2gs_main(void) { char type; - uint16_t bankcount; + uint8_t bankcount; char en8meg = true; char hasled = true; char enled = false; @@ -89,6 +89,7 @@ int ram2gs_main(void) // Detect and print current capacity bankcount = ram2gs_getsize(); + en8meg = bankcount >= 128; menu_size(bankcount); // Detect and print LED menu