You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
315 lines
6.7 KiB
315 lines
6.7 KiB
#include "main.h"
|
|
#define END_MENU 6
|
|
|
|
void flash_check()
|
|
{
|
|
|
|
int cursor_pos_down_wait=0;
|
|
int count_wait=0;
|
|
int in_game_end=1;
|
|
int test_off=0;
|
|
int i=0;
|
|
int in_game_mode=0;
|
|
button_clear();
|
|
|
|
//init
|
|
unsigned char data_temp[256];
|
|
unsigned char data_temp2[4];
|
|
unsigned char data_first_1[64];
|
|
unsigned char data_first_2[64];
|
|
unsigned char data_end_1[64];
|
|
unsigned char data_end_2[64];
|
|
char hex_temp[2];
|
|
char hex_temp2[2];
|
|
int erase_sector=0;
|
|
int y=0;
|
|
int x=0;
|
|
int deviceid=0;
|
|
int select_device=0;
|
|
//END MENU
|
|
int menu_exit=END_MENU;
|
|
int bank=0;
|
|
for(i=0;i<64;i++)
|
|
{
|
|
|
|
data_first_1[i]=0;
|
|
data_first_2[i]=0;
|
|
data_end_1[i]=0;
|
|
data_end_2[i]=0;
|
|
}
|
|
while(in_game_end) {
|
|
if(display_is_old) {
|
|
DoubleBuffering();
|
|
ClearScreen();
|
|
button_update();
|
|
|
|
print_set_font_color(0xFF,0xFF,0xFF);
|
|
print_set_font_status(1,1);
|
|
print_str(30,20,11,"FLASH CHECK");
|
|
print_str(30,40,13,"SELECT DEVICE");
|
|
|
|
switch(select_device)
|
|
{
|
|
case 0:
|
|
deviceid=ONBOARD;
|
|
break;
|
|
case 1:
|
|
deviceid=PCCARD1;
|
|
break;
|
|
case 2:
|
|
deviceid=PCCARD2;
|
|
break;
|
|
|
|
}
|
|
switch(select_device)
|
|
{
|
|
case 0:
|
|
print_str(100,40,7,"ONBOARD");
|
|
break;
|
|
case 1:
|
|
print_str(100,40,7,"PCCARD1");
|
|
break;
|
|
case 2:
|
|
print_str(100,40,7,"PCCARD2");
|
|
break;
|
|
case 3:
|
|
print_str(100,40,5,"NVRAM");
|
|
break;
|
|
}
|
|
sprintf(data_temp, "BANK %02d",bank);
|
|
print_str(30,50,16,data_temp);
|
|
print_str(30,60,5,"RESET");
|
|
print_str(100,60,5,"ERASE");
|
|
print_str(30,70,10,"AUTOSELECT");
|
|
print_str(100,70,5,"WRITE");
|
|
print_str(150,60,2,hex_temp2);
|
|
print_str(30,190,4,"EXIT");
|
|
switch(in_game_mode){
|
|
case 0:
|
|
print_set_font_color(0xFF,0x00,0x00);
|
|
print_str(30,40,13,"SELECT DEVICE");
|
|
switch(select_device)
|
|
{
|
|
|
|
case 0:
|
|
print_str(100,40,7,"ONBOARD");
|
|
break;
|
|
case 1:
|
|
print_str(100,40,7,"PCCARD1");
|
|
break;
|
|
case 2:
|
|
print_str(100,40,7,"PCCARD2");
|
|
break;
|
|
case 3:
|
|
print_str(100,40,5,"NVRAM");
|
|
break;
|
|
}
|
|
print_set_font_color(0xFF,0xFF,0xFF);
|
|
break;
|
|
case 1:
|
|
print_set_font_color(0xFF,0x00,0x00);
|
|
print_str(30,50,16,data_temp);
|
|
print_set_font_color(0xFF,0xFF,0xFF);
|
|
break;
|
|
case 2:
|
|
print_set_font_color(0xFF,0x00,0x00);
|
|
print_str(30,60,5,"RESET");
|
|
print_set_font_color(0xFF,0xFF,0xFF);
|
|
break;
|
|
case 3:
|
|
print_set_font_color(0xFF,0x00,0x00);
|
|
print_str(100,60,5,"ERASE");
|
|
print_set_font_color(0xFF,0xFF,0xFF);
|
|
break;
|
|
case 4:
|
|
print_set_font_color(0xFF,0x00,0x00);
|
|
print_str(30,70,10,"AUTOSELECT");
|
|
print_set_font_color(0xFF,0xFF,0xFF);
|
|
break;
|
|
case 5:
|
|
print_set_font_color(0xFF,0x00,0x00);
|
|
print_str(100,70,5,"WRITE");
|
|
print_set_font_color(0xFF,0xFF,0xFF);
|
|
break;
|
|
|
|
case END_MENU:
|
|
print_set_font_color(0xFF,0x00,0x00);
|
|
print_str(30,190,4,"EXIT");
|
|
print_set_font_color(0xFF,0xFF,0xFF);
|
|
break;
|
|
}
|
|
|
|
if(pushed_button_hold[2][2]==PAD_ON){
|
|
if(cursor_pos_down_wait==0)
|
|
{
|
|
if(in_game_mode!=menu_exit){
|
|
in_game_mode++;
|
|
}else{
|
|
in_game_mode=0;
|
|
}
|
|
}
|
|
cursor_pos_down_wait++;
|
|
if(cursor_pos_down_wait==10)
|
|
{
|
|
cursor_pos_down_wait=0;
|
|
}
|
|
}else{
|
|
cursor_pos_down_wait=0;
|
|
}
|
|
if(pad_read(PAD_TEST)!=PAD_ON){
|
|
test_off=1;
|
|
};
|
|
if(pad_read(PAD_TEST)==PAD_ON&&test_off==1){
|
|
if(count_wait==0){
|
|
count_wait=0;
|
|
if(in_game_mode==0)
|
|
{
|
|
select_device++;
|
|
if(select_device==4)
|
|
{
|
|
select_device=0;
|
|
}
|
|
}
|
|
if(in_game_mode==1)
|
|
{
|
|
bank++;
|
|
if(bank==16)
|
|
{
|
|
bank=0;
|
|
}
|
|
}
|
|
if(in_game_mode==2)
|
|
{
|
|
flash_mem_reset(deviceid,bank);
|
|
}
|
|
if(in_game_mode==3)
|
|
{
|
|
flash_mem_reset(deviceid,bank);
|
|
for(erase_sector=0;erase_sector<32;erase_sector++)
|
|
{
|
|
DoubleBuffering();
|
|
ClearScreen();
|
|
sprintf( hex_temp, "%02d",erase_sector);
|
|
flash_mem_erase(deviceid,erase_sector,bank);
|
|
print_str(10,100,12,"Erase Sector");
|
|
print_str(100,100,2,hex_temp);
|
|
print_str(116,100,3,"/31");
|
|
GsDrawList();
|
|
while(GsIsDrawing());
|
|
display_is_old=0;
|
|
}
|
|
flash_mem_reset(deviceid,bank);
|
|
}
|
|
if(in_game_mode==4)
|
|
{
|
|
flash_mem_reset(deviceid,bank);
|
|
flash_mem_autoselect(deviceid,bank);
|
|
}
|
|
if(in_game_mode==5)
|
|
{
|
|
flash_mem_reset(deviceid,bank);
|
|
flash_mem_write_data(deviceid,0,bank,0xAA,0xBB);
|
|
flash_mem_write_data(deviceid,2,bank,0xCC,0xDD);
|
|
flash_mem_write_data(deviceid,4,bank,0xEE,0xFF);
|
|
flash_mem_write_data(deviceid,0x3FFFF0,bank,0x00,0x11);
|
|
flash_mem_write_data(deviceid,0x3FFFF2,bank,0x22,0x33);
|
|
flash_mem_write_data(deviceid,0x3FFFF4,bank,0x44,0x55);
|
|
flash_mem_write_data(deviceid,0x3FFFF6,bank,0x66,0x77);
|
|
flash_mem_write_data(deviceid,0x3FFFF8,bank,0x88,0x99);
|
|
flash_mem_write_data(deviceid,0x3FFFFA,bank,0xAA,0xBB);
|
|
flash_mem_write_data(deviceid,0x3FFFFC,bank,0xCC,0xDD);
|
|
flash_mem_write_data(deviceid,0x3FFFFE,bank,0xCC,0xDD);
|
|
}
|
|
|
|
if(in_game_mode==menu_exit)
|
|
{
|
|
game_mode=0;
|
|
in_game_end=0;
|
|
}
|
|
}
|
|
|
|
count_wait++;
|
|
}else{
|
|
count_wait=0;
|
|
}
|
|
//main util
|
|
y=0;
|
|
x=0;
|
|
if(in_game_mode!=menu_exit)
|
|
{
|
|
if(select_device<3){
|
|
print_str(30,90,10,"0x00->0x3F");
|
|
for(i=0;i<64;i++)
|
|
{
|
|
|
|
data_first_1[i]=flash_mem_read_data(deviceid,i,bank);
|
|
sprintf( hex_temp, "%02x",data_first_1[i]);
|
|
print_str(30+(x*10)+2,100+(y*10),2,hex_temp);
|
|
x++;
|
|
if(x%16==0)
|
|
{
|
|
x=0;
|
|
y++;
|
|
}
|
|
}
|
|
|
|
y=0;
|
|
x=0;
|
|
print_str(30,140,18,"0x3FFFC0->0x3FFFFF");
|
|
for(i=0;i<64;i++)
|
|
{
|
|
|
|
data_first_2[i]=flash_mem_read_data(deviceid,i+0x3FFFC0,bank);
|
|
sprintf( hex_temp, "%02x",data_first_2[i]);
|
|
print_str(30+(x*10)+2,150+(y*10),2,hex_temp);
|
|
x++;
|
|
if(x%16==0)
|
|
{
|
|
x=0;
|
|
y++;
|
|
}
|
|
}
|
|
}else{
|
|
print_str(30,90,10,"0x00->0x3F");
|
|
for(i=0;i<64;i++)
|
|
{
|
|
data_end_1[i]=nvram_read_byte(i);
|
|
sprintf( hex_temp, "%02x",data_end_1[i]);
|
|
print_str(30+(x*10)+2,100+(y*10),2,hex_temp);
|
|
x++;
|
|
if(x%16==0)
|
|
{
|
|
x=0;
|
|
y++;
|
|
}
|
|
}
|
|
|
|
y=0;
|
|
x=0;
|
|
print_str(30,140,14,"0x1FC0->0x1FFF");
|
|
for(i=0;i<64;i++)
|
|
{
|
|
|
|
data_end_2[i]=nvram_read_byte(i+0x1fc0);
|
|
sprintf( hex_temp, "%02x",data_end_2[i]);
|
|
print_str(30+(x*10)+2,150+(y*10),2,hex_temp);
|
|
x++;
|
|
if(x%16==0)
|
|
{
|
|
x=0;
|
|
y++;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
GsDrawList();
|
|
|
|
while(GsIsDrawing());
|
|
display_is_old=0;
|
|
}
|
|
}
|
|
}
|
|
|