2 BANDAI FCG-3 + X24C01 style cartridge
5 1990-08-11 B50EEP, LZ93D50+X24C01
7 1990-10-27 DRAGON BALLZ, LZ93D50+X24C01
8 まじかる☆タルるートくん ファンタスティックワールド
9 1991-03-21 DRAGON BALLZ-B, LZ93D50+X24C01
11 1992-06-19 DRAGON BALLZ-B, LZ93D50+X24C01 ← 24C02 ではない
16 size_base = 2 * mega, size_max = 2 * mega,
20 size_base = 0x0080, size_max = 0x0080,
24 size_base = 1 * mega, size_max = 2 * mega,
28 vram_mirrorfind = false
31 const register_offset = 0x8000;
38 <START>[EEPROM address+RW]<A-ACK>[data]<D-ACK><STOP>
40 <> is 1bit, [] is 8bit, A-ACK is address acknowledge,
41 D-ACK is data acknowledge, R is 1, W is 0
43 8bit data send MSB to LSB (bit7 to bit0)
44 Dragon Ball Z1's program send address LSB to MSB (bug).
46 slave address does not exist.
48 --current address read--
49 <START>[EEPROM address,R]<A-ACK>[EEPROM data]<D-ACK><STOP>
52 <START>[EEPROM address,R]<A-ACK>|[EEPROM data]<D-ACK>|<STOP>
53 |<- loop any times ->|
56 |<START>[EEPROM address,W]<A-ACK>|[EEPROM data]<D-ACK>|<STOP>
57 |<- loop A-ACK is H ->|<- loop 1to4times ->|
60 function cpu_ram_access(d, pagesize, banksize)
62 local I2C_WRITE = I2C_SEND_L;
63 local I2C_READ = I2C_SEND_H;
65 if(mode_is_read(d) == true){
67 i2c_address_set(d, 0, I2C_READ);
68 for(local i = 0; i < pagesize * banksize; i++){
69 for(local bit = 0; bit < 8; bit++){
70 cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_H);
71 cpu_write(d, 0x800d, I2C_DIR_READ | I2C_CLOCK_H | I2C_SEND_H);
72 cpu_read_bit_msb(d, 0x6000, 4);
75 send_bit(d, I2C_SEND_L);
80 for(local i = 0; i < pagesize * banksize; i+=4){
81 i2c_address_set(d, i, I2C_WRITE);
82 for(local j = 0; j < 4; j++){
83 for(local bit = 0; bit < 8; bit++){
85 if(cpu_fetch_bit_msb(d) != 0){