altra64/doc/functions.txt
2014-06-28 22:10:11 -07:00

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