mirror of
https://github.com/parasyte/alt64
synced 2024-11-15 21:55:03 -05:00
105 lines
2.0 KiB
Plaintext
105 lines
2.0 KiB
Plaintext
|
beta9
|
||
|
|
||
|
rom loading function flow:
|
||
|
|
||
|
main()
|
||
|
|
||
|
//init n64, fs, controller
|
||
|
|
||
|
//joypad loop
|
||
|
//button (A) -> select rom
|
||
|
|
||
|
|
||
|
loadrom(disp,name_file);
|
||
|
//readout rom header
|
||
|
//check if swapped
|
||
|
evd_mmcSetDmaSwap(1);
|
||
|
|
||
|
//dma read file to 0xb0000000 cartspace
|
||
|
diskRead();
|
||
|
|
||
|
//change key mapping
|
||
|
|
||
|
//if (START)
|
||
|
bootRom();
|
||
|
|
||
|
//save LAST.CRT for reboot cart-save
|
||
|
|
||
|
//set fpga to eeprom, sram, flashram
|
||
|
evd_setSaveType(boot_save);
|
||
|
|
||
|
//do pif simulation to boot the rom
|
||
|
simulate_boot(boot_cic, bios_cic);
|
||
|
|
||
|
|
||
|
|
||
|
cart-save overview:
|
||
|
|
||
|
before pif simulation the cart_id and cart_savetype is stored in
|
||
|
LAST.CRT [maybe it's a better solution to use rom filenames
|
||
|
'cause the cart_id includes no game-version]
|
||
|
-> bootRom();
|
||
|
|
||
|
at every start of the menu a function is called that checks
|
||
|
LAST.CRT, if there is something todo and disable it for next boot
|
||
|
by setting a flag in that file
|
||
|
-> backupSaveData(disp);
|
||
|
|
||
|
if it's a warm boot (reset) the fpga savegame is still there
|
||
|
-> save_cfg_stat = evd_readReg(REG_SAV_CFG);
|
||
|
|
||
|
if it's a reset reboot to backup a savegame into a file
|
||
|
saveTypeToSd(disp, cartID, save_t)
|
||
|
is called
|
||
|
|
||
|
it's only for some file operations and calls
|
||
|
utils.c: getSaveFromCart(stype, cartsave_data)
|
||
|
to store the savegame into a buffer, which could
|
||
|
be saved into a file
|
||
|
|
||
|
|
||
|
some notes:
|
||
|
eeprom is connected directly to the pif (i2c?)
|
||
|
and could be read out stable with the libdragon function
|
||
|
|
||
|
sram/flashram is a serial device that is mapped into
|
||
|
memory
|
||
|
it has to be accessed with dma to rdram through the pif
|
||
|
|
||
|
it's a domain2 device which needs other timing than the cart
|
||
|
|
||
|
timings:
|
||
|
|
||
|
PI_BSD_DOM2_XXX_REG
|
||
|
|
||
|
sram/fram:
|
||
|
|
||
|
val XXX desc
|
||
|
05 LAT Latency
|
||
|
OC PWD Pulse Width
|
||
|
|
||
|
//sram - 0D
|
||
|
//fram Animal Forest - 0F
|
||
|
OD PGS Page Size
|
||
|
|
||
|
02 RLS Release Duration
|
||
|
|
||
|
|
||
|
carts/dev-carts:
|
||
|
40 Latency
|
||
|
12 Pulse Width
|
||
|
07 Page Size
|
||
|
03 Release Duration
|
||
|
|
||
|
IPL at 0xA6000000:
|
||
|
40 Latency
|
||
|
07 Pulse Width
|
||
|
07 Page Size
|
||
|
02 Release Duration
|
||
|
|
||
|
cartidge:
|
||
|
PI_BSD_DOM1_XXX_REG
|
||
|
|
||
|
is set with the first word in the header
|
||
|
e.g. 0x[80]371240 -> 3.7.12.40 ~ 40,12,07,03
|