Developers page
From EZ-Flash Wiki
Between the EZTeam and various third parties there exists a reasonable amount of data about the operation of EZFlash equipment and code for accessing various features of EZFlash carts. This page aims to collate this data into a quick reference for any budding developers. All hexadecimal in little endian unless otherwise stated.
Contents |
EZFlash RAM
The EZ3,4 and 3 in 1 have extra ram inbuilt, a library that supports all them (EZ4 deluxe is limited to 128mbit) and more carts can be found here: Lick's RAM library
EZ5
DLDI support is favoured in place of EZ5 specific builds but read/write libraries and sources for the moonshell component of the loader are available.
EZFlash V Fatlib - here
EZFlash V Moonshell based loader Source Code - here
EZFlash V Triple Pack Source Code - here
EZFlash V Triple Pack Sample Code - here
GBALdr - 3in1 GBA loader [http://ezflash.sosuke.com/viewtopic.php?t=4749 release thread and discussion
EZ4
DLDI support is favoured for applications but EZ4 SD Read/Write libraries (useable on all the EZ4 range) are available here
Memory mapping and access the same as the EZ3, for EZ4 deluxe it will need to be verified but extra memory should map to the remaining "unused sectors" (the EZ3/4 map the PSRAM and such to GBA/DS memory locations that are not real/present on a stock GBA/DS) EZ3 SDK, for memory mappings and such, see the section on RAM above.
Specifications
loader space
32Mbit (4 Mbyte)
Requires EZPDA_UP (ASCII) / 455A5044415F5550 (hex) starting at offset A0 (hex) in the ezfla_up.bin (placed on root of ?SD card) to write to although such a course of action is not recommended for most homebrew.
NOR memory section
256Mbit (32 Mbyte of NOR memory, absent in compact and 384Mbit (48 Mbyte) in Deluxe
See EZ3 SDK docs for mapping in given modes.
PSRAM
128Mbit (16Mbyte) PSRAM in original and lite
64Mbit (8 Mbyte) (unverified) in compact
256Mbit (32Mbyte) in deluxe See EZ3 SDK for mapping, it is assumed the later 256 maps to the remaining .
SRAM
Split into pages, to get data to be written back to the external memory the reserved area of the GBA header (offest B5 to BC hex) needs to be changed:
The EZ patcher changes the "reserved area" of a ds.gba from (hex)
00 00 00 00 00 00 00
to
00 00 00 08 00 08 00
and uses a 32K file in the saver dir (and wont write any other size it would seem...)
changing it to (based on sonic advance 2 flash save patched with EZ's patcher)
C0 DF 0C 9C 01 10 00
allows a 64K file to be used.
More infomation in this thread
Otherwise it should map and be split the same as the EZ3 SRAM and it is assumed that mapping continues for the extra 6Mbit present in the EZ4.
External memory section The EZ4 original uses miniSD whereas the other models use microSD, as far as the libraries are concerned there is no difference. Unverified but it should take the place of the NAND memory in the EZ3 as far as memory mapping is concerned.
EZ3
EZ3 SDK, details memory mapping and layout of the EZ3 as well as NAND, NOR and PSRAM read and write libraries. It is unfortunately only available using the older AGB toolchains.
Using official loader homebrew in .ds.gba format loads from the NOR section.
Specifications
Memory is mapped differently depending on what mode the EZ3 is in, consult the SDK for more info.
loader space
32Mbit (4 Mbyte)
replace the loader.bin (pre 2.09 EZManager) or loader_gba.bin (EZManager 2.09test and above) and write the loader to replace. EZF3me is a loader replacement (that works on the EZ4 too) that is used to jump to the NOR section
NOR memory section
256Mbit (32 Mbyte)
See EZ3 SDK docs for mapping in given modes. It is suggested that it be used for DS homebrew as of EZManager 2.09final.
PSRAM
128Mbit (16Mbyte) PSRAM
See EZ3 SDK for mapping and see RAM section above.
SRAM
2Mbit in size for all EZ3 models (can cause issues with passme2 devices if you require the full amount).
Split into pages, appears to require the same treatment as EZ4 with regards to homebrew and SRAM (to be tested).
More infomation in this thread
NAND section aka EZDisk Comes in sizes of 1024Mbit, 2048Mbit, 4096Mbit and 8192 Mbit. Uses a modified FAT16 filesystem (detailed in SDK)
See EZ3 SDK for mapping and read/write libraries and explanation.
EZ1/2
For most purposes they are standard GBA carts although the real time clock (only present in the EZ2) is not compatible with some of the demos available. Later model 128Mbit EZ1s have a 4Mbit loader section, mapping unknown. Homebrew (DS or GBA) code will require a valid GBA header be appended.
SRAM size varies with cart size: 128Mbit and 256Mbit capacity carts: saver is 2Mbit.
For 512Mbit carts the saver is 4Mbit.
It would then follow that 1024Mbit saver space is 8Mbit but this will have to be substatiated.
EZPass 2
The EZTeam use a different brand of CPLD to other manufacturers and so the JEDEC files and SRAM bootstrap code (typically given the extension .sav) used by the other passme2 makers will not work.
External links
Some links to various development sites and useful resources: Nocash gbatek docs Excellent low level guide to the GBA and DS with extensive comparison of GBA and DS with one another.
GBAdev One of the major hubs for DS and GBA homebrew coding and discussion.
Devkitpro A popular set of tools and libraries for GBA and DS development amongst other things, devkitarm is contained within it.
Pin Eight Some useful coding suggestions (see VRAM management especially)
Drunken coders tutorials Some decent tutorials.
DStech wiki More low level infomation.
