From feaf89c3f5a8b0bdf1e1e1a1c44a0d4c9e5f4495 Mon Sep 17 00:00:00 2001 From: Lesserkuma Date: Thu, 31 Mar 2022 00:45:47 +0200 Subject: [PATCH] 3.7 --- CHANGES.md | 4 +- FlashGBX/config/fc_AGB_S29GL032.txt | 87 ++++++++++++++++++++++++++++ FlashGBX/hw_GBxCartRW.py | 5 +- FlashGBX/res/config.zip | Bin 143085 -> 143613 bytes README.md | 3 +- 5 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 FlashGBX/config/fc_AGB_S29GL032.txt diff --git a/CHANGES.md b/CHANGES.md index 63109c5..103f705 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,5 @@ # Release notes -### v3.7 (released 2022-03-30) +### v3.7 (released 2022-03-31) - Updated the Game Boy Advance lookup database for save types, ROM sizes and checksums (improves support for Classic NES Series, NES Classics and Famicom Mini cartridges) - When writing new ROMs to Nintendo Power GB Memory Cartridges (DMG-MMSA-JPN), hidden sector data will now be auto-generated if it’s not provided by the user in form of a .map file - Erasing save data of Game Boy Advance cartridges with the 512K FLASH and 1M FLASH save types is now faster @@ -13,6 +13,8 @@ - Added support for DIY carts with MBC1 and SST39SF040 @ AUDIO *(thanks Timville)* - Added support for B100 with MX29LV640ET *(thanks Mr_V)* - Added support for B54 with MX29LV320ET *(thanks Mr_V)* +- Added support for AGB-E05-02 with S29GL032 *(thanks redalchemy)* +- Minor bug fixes and improvements ### v3.6 (released 2022-03-09) - When opening Game Boy Camera Album Viewer manually, the save data will now automatically be loaded if a Game Boy Camera or Pocket Camera cartridge is connected diff --git a/FlashGBX/config/fc_AGB_S29GL032.txt b/FlashGBX/config/fc_AGB_S29GL032.txt new file mode 100644 index 0000000..743095a --- /dev/null +++ b/FlashGBX/config/fc_AGB_S29GL032.txt @@ -0,0 +1,87 @@ +{ + "type":"AGB", + "names":[ + "AGB-E05-02 with S29GL032" + ], + "flash_ids":[ + [ 0x02, 0x00, 0xFA, 0x22 ] + ], + "voltage":3.3, + "flash_size":0x400000, + "sector_size_from_cfi":true, + "chip_erase_timeout":120, + "command_set":"AMD", + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x90 ] + ], + "read_cfi":[ + [ 0xAA, 0x98 ] + ], + "chip_erase":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "sector_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ "SA", 0x30 ] + ], + "sector_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ "SA", 0xFFFF, 0xFFFF ] + ], + "buffer_write":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ "SA", 0x26 ], + [ "SA", "BS" ], + [ "PA", "PD" ], + [ "SA", 0x2A ] + ], + "buffer_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ "SA", "PD", 0xFFFF ] + ], + "single_write":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/FlashGBX/hw_GBxCartRW.py b/FlashGBX/hw_GBxCartRW.py index 7684efa..2f71390 100644 --- a/FlashGBX/hw_GBxCartRW.py +++ b/FlashGBX/hw_GBxCartRW.py @@ -732,8 +732,11 @@ class GbxDevice: save_type = 7 elif save_size == 32768: save_type = 3 - else: + elif save_size in Util.AGB_Header_Save_Sizes: save_type = Util.AGB_Header_Save_Sizes.index(save_size) + else: + save_type = None + save_size = 0 else: dprint("Testing EEPROM") # Check for 4K EEPROM diff --git a/FlashGBX/res/config.zip b/FlashGBX/res/config.zip index 890edf0a4a0812a5c756ef2db2ed9c0983bb4904..6ae250da3bcc535c838aa02dadc8bb51e0915090 100644 GIT binary patch delta 2249 zcmY+Gc~DbV6vp4ZF*HF40SOS+Ktc!*C-B|%z2)n9*;S< ze2Gn4rFxWf+ZtcX_HQ>id{vx0`^F*%w;?UrtHz|;<#fsSoKAkWLcMHUmgt3keB;v9 ziC-R+r7s_os;22#=BBu-(AhoI#-{~)Fe|3JDY<^3abIQDPy;_W(hu3#C#Tecg zFD}U=j}nHQh>s|X@#|aXcdF>%*^cw8)0;iMX|66ZZ1X?zcJI)Il@BxDb}tA^n3!B9 zSrmKyK=IzkRg>G_&0Yor>JBCQ`1b8=YIJ%o8gWrE?|^qwol^7sQbXFWbFRh?TyrJb z`^4`*$Sf(HBFJX59BxUceu$Z+yf>XD&}_53#bnz9w!~;FI#ZC9W~sHN za|K#xO;ZK=k&Gq^a)u1Y;X5?QXo?^Q+n8jj4gFf6z2(?JZr2xA%Qnlqaynh06K!!r zyrI%8-Rw+sxmmW^;pn_~Vjr3$wh3c>EBYYirMo?z120$Fn`pZ|&dbv{g^3MJa%cA%lO-!4dSpaBBPV<>bt)G`#3#5VDgq5FG4?@09mN_0fDY9DNHq<#Xb zWk_=Xx*V}RAJjP^swo456ZIF+T129#KM5Q!BOcK0Os%Z5Y^=%+gN=mGyk~~yasp^_ zhR8r_1&K;35#lqI*l|h)6f1F*;kj(O21FvaLj=}Vd4}6Awvaia6wB0 z1=Pz2(bxwt&kuV8fw^Y1g`xOo(5S=n_$iVN zVd2YA2MqSbZSiO(L%Nqx?29Y%=mH|qkyiu)UlK=9`Qf(sLYNG;XBis zQaC@{NchaOK+FV7pfHdIX#Xm}Y4M{O`DDj0xwh=%DaIcs9G8TDV|+Mni6bEqb*?xdL7MGTNz``yIEX!*F5p$*(OM6I+;S@fY$%i!HOuo?2dv>T6NrN($r|! zpvuNjITa0lr4=z$zPN~Idt+duD$`>1a%ZTViG|Ht(>k8@8})L~2mz%J#KBXlJQN4( zRB4`1$7y|om(|UOYE@2z%EwIbgwie(CG6kFvuW{q`EEQssq|(%T}Tf2@6^jvTn2yP zWj?cBwwUP_Qg51Jy(%{(kd9pE*HI!6jgJO8Q4L92$Pth)>9eZ#nM4FwbWFOvRhg>!F4AV$E?zTg= zW?0TyLqvwH2L#@CP?*t~2xiq-oJg~lgBVDJ97P`!89wh2SaVo7F(w&eVzFgVEi79PC8!hQQmT?lV-o_6Zq^&nr(K{tZeM129%t{ zQ77F_QoM_3;0G*qL6M@@hzu{C5_s>AwEVP-mMY zXDg|jX~$2v-VIg^cSDNuEH`}96`5-sG*Xx9`O*hU%)p#^gJYWG9~?}$pn^V>6x`ehSJLdO;>~kgISc>+ID+0p1nGW_G~)1q~+N}Ur*tyAv(a+ zK8+W%>AA=$OAgcDxFUzHxBq9(+Qw8jgB>}vucT2X(>1i^(n3k4xkR)7V10->n0Eh* z6Ctwa5mo$$EA!}WI)07g8<=KqU{4-pNxIC`HixM`C{VQ8M>oCumcVy>bfYtlN?Li8 z?Ht*s0&EzYPq&v1Pd+u;1Yp1b$ygg|v`_=e4cMPgUsX9P3W%ofz{LfyNYV2|hQ@Hf s@<__