1
0
mirror of https://github.com/parasyte/alt64 synced 2025-02-28 09:21:46 -05:00

moved input handler to seperate function

improved sound handling during splash screen
(introduced bug with user input when accessing secondary menus more than once)
This commit is contained in:
Robin Jones 2016-12-30 01:39:26 +00:00
parent 61bb4b7fec
commit 2025c86b47

View File

@ -3404,199 +3404,8 @@ void loadFile(display_context_t disp)
}
}
//entry point
int main(void)
void handleInput(display_context_t disp, sprite_t *contr)
{
int fast_boot = 0;
//reserve memory
list = malloc(sizeof(direntry_t));
//dfs init for the rom-attached virtual filesystem
if (dfs_init(DFS_DEFAULT_LOCATION) != DFS_ESUCCESS)
{
printf("Filesystem failed to start!\n");
}
else
{
// everdrive initial function
configure();
//fast boot for backup-save data
int sj = evd_readReg(0);
int save_job = evd_readReg(REG_SAV_CFG); //TODO: or the firmware is V3
if (save_job != 0)
fast_boot = 1;
//not gamepads more or less the n64 hardware-controllers
controller_init();
//filesystem on
initFilesystem();
sleep(200);
readConfigFile();
//n64 initialization
if (tv_mode != 0)
{
*(u32 *)0x80000300 = tv_mode;
}
init_interrupts();
//background
display_init(res, DEPTH_32_BPP, 3, GAMMA_NONE, ANTIALIAS_RESAMPLE);
//bg buffer
static display_context_t disp;
//Grab a render buffer
while (!(disp = display_lock()))
;
//backgrounds from ramfs/libdragonfs
if (!fast_boot)
{
background0 = read_sprite("rom://sprites/splash.sprite");
graphics_draw_sprite(disp, 0, 0, background0); //start-picture
display_show(disp);
}
char background_path[64];
sprintf(background_path, "/ED64/wallpaper/%s", background_image);
int found;
FatRecord rec_tmpf;
found = fatFindRecord(background_path, &rec_tmpf, 0);
if (found == 0)
{
background = loadPng(background_path);
}
else
{
background = read_sprite("rom://sprites/background.sprite");
}
sleep(200);
if (sound_on)
{
//load soundsystem
audio_init(44100, 2);
sndInit();
timer_init();
}
if (!fast_boot)
{
if (sound_on)
playSound(1);
sleep(2000); //splash screen duration
//todo: if bgm is enabled, we should start it...
//sndPlayBGM("rom://bgm21.it");
}
border_color_1 = translate_color(border_color_1_s);
border_color_2 = translate_color(border_color_2_s);
box_color = translate_color(box_color_s);
selection_color = translate_color(selection_color_s);
selection_font_color = translate_color(selection_font_color_s);
list_font_color = translate_color(list_font_color_s);
list_dir_font_color = translate_color(list_dir_font_color_s);
while (!(disp = display_lock()))
;
drawBg(disp); //new
drawBoxNumber(disp, 1); //new
uint32_t *buffer = (uint32_t *)__get_buffer(disp); //fg disp = 2
display_show(disp); //new
backupSaveData(disp);
while (!(disp = display_lock()))
;
sprintf(pwd, "%s", "/");
readSDcard(disp, "/");
display_show(disp);
//chr input coord
x = 30;
y = 30;
position = 0;
set = 1;
sprintf(input_text, "");
//sprite for chr input
int fp = dfs_open("/n64controller.sprite");
sprite_t *contr = malloc(dfs_size(fp));
dfs_read(contr, 1, dfs_size(fp), fp);
dfs_close(fp);
//sd card speed settings from config
if (sd_speed == 2)
{
bi_speed50();
}
else
{
bi_speed25();
}
//system main-loop with controller inputs-scan
while (1)
{
sndUpdate();
if (playing == 1)
playing = mp3_Update(buf_ptr, buf_size);
if (input_mapping == file_manager)
sleep(60);
if (input_mapping == char_input)
{
while (!(disp = display_lock()))
;
graphics_draw_sprite(disp, 0, 0, contr);
/* Set the text output color */
graphics_set_color(0x0, 0xFFFFFFFF);
chr_forecolor = graphics_make_color(0xFF, 0x14, 0x94, 0xFF); //pink
graphics_set_color(chr_forecolor, chr_backcolor);
graphics_draw_text(disp, 85, 55, "SETS");
graphics_draw_text(disp, 94, 70, "1"); //u
graphics_draw_text(disp, 104, 82, "2"); //r
graphics_draw_text(disp, 94, 93, "3"); //d
graphics_draw_text(disp, 82, 82, "4"); //l
graphics_draw_text(disp, 208, 206, "press START");
if (set == 1)
drawSet1(disp);
if (set == 2)
drawSet2(disp);
if (set == 3)
drawSet3(disp);
if (set == 4)
drawSet4(disp);
drawTextInput(disp, input_text);
/* Force backbuffer flip */
display_show(disp);
} //mapping 2 chr input drawings
//request controller
controller_scan();
struct controller_data keys = get_keys_down();
@ -3879,7 +3688,6 @@ int main(void)
{
loadFile(disp);
}
}
else if (input_mapping == mempak_menu)
{
@ -4634,13 +4442,212 @@ int main(void)
input_mapping = file_manager;
}
} //key b
}
//entry point
int main(void)
{
int fast_boot = 0;
//reserve memory
list = malloc(sizeof(direntry_t));
//dfs init for the rom-attached virtual filesystem
if (dfs_init(DFS_DEFAULT_LOCATION) != DFS_ESUCCESS)
{
printf("Filesystem failed to start!\n");
while (1)
; //never leave!
}
else
{
// everdrive initial function
configure();
//fast boot for backup-save data
//int sj = evd_readReg(REG_CFG); // not sure if this is needed!
int save_job = evd_readReg(REG_SAV_CFG); //TODO: or the firmware is V3
if (save_job != 0)
fast_boot = 1;
//not gamepads more or less the n64 hardware-controllers
controller_init();
//filesystem on
initFilesystem();
sleep(200);
readConfigFile();
//n64 initialization
//sd card speed settings from config
if (sd_speed == 2)
{
bi_speed50();
}
else
{
bi_speed25();
}
if (tv_mode != 0)
{
*(u32 *)0x80000300 = tv_mode;
}
init_interrupts();
if (sound_on)
{
//load soundsystem
audio_init(44100, 2);
sndInit();
timer_init();
}
//background
display_init(res, DEPTH_32_BPP, 3, GAMMA_NONE, ANTIALIAS_RESAMPLE);
//bg buffer
static display_context_t disp;
//Grab a render buffer
while (!(disp = display_lock()))
;
//backgrounds from ramfs/libdragonfs
if (!fast_boot)
{
background0 = read_sprite("rom://sprites/splash.sprite");
graphics_draw_sprite(disp, 0, 0, background0); //start-picture
display_show(disp);
}
char background_path[64];
sprintf(background_path, "/ED64/wallpaper/%s", background_image);
int found;
FatRecord rec_tmpf;
found = fatFindRecord(background_path, &rec_tmpf, 0);
if (found == 0)
{
background = loadPng(background_path);
}
else
{
background = read_sprite("rom://sprites/background.sprite");
}
if (!fast_boot)
{
if (sound_on)
{
playSound(1);
for (int s = 0; s < 200; s++) //todo: this blocks! is there a better way before the main loop starts!
{
sndUpdate();
sleep(10);
}
}
//never return
while (1)
//sleep(2000); //splash screen duration
}
//todo: if bgm is enabled, we should start it...
//sndPlayBGM("rom://bgm21.it");
border_color_1 = translate_color(border_color_1_s);
border_color_2 = translate_color(border_color_2_s);
box_color = translate_color(box_color_s);
selection_color = translate_color(selection_color_s);
selection_font_color = translate_color(selection_font_color_s);
list_font_color = translate_color(list_font_color_s);
list_dir_font_color = translate_color(list_dir_font_color_s);
while (!(disp = display_lock()))
;
return 0;
drawBg(disp); //new
drawBoxNumber(disp, 1); //new
uint32_t *buffer = (uint32_t *)__get_buffer(disp); //fg disp = 2
display_show(disp); //new
backupSaveData(disp);
while (!(disp = display_lock()))
;
sprintf(pwd, "%s", "/");
readSDcard(disp, "/");
display_show(disp);
//chr input coord
x = 30;
y = 30;
position = 0;
set = 1;
sprintf(input_text, "");
//sprite for chr input
int fp = dfs_open("/n64controller.sprite");
sprite_t *contr = malloc(dfs_size(fp));
dfs_read(contr, 1, dfs_size(fp), fp);
dfs_close(fp);
//system main-loop with controller inputs-scan
while (1)
{
if (sound_on)
sndUpdate();
handleInput(disp, contr);
if (playing == 1)
playing = mp3_Update(buf_ptr, buf_size);
if (input_mapping == file_manager)
sleep(60);
if (input_mapping == char_input)
{
while (!(disp = display_lock()))
;
graphics_draw_sprite(disp, 0, 0, contr);
/* Set the text output color */
graphics_set_color(0x0, 0xFFFFFFFF);
chr_forecolor = graphics_make_color(0xFF, 0x14, 0x94, 0xFF); //pink
graphics_set_color(chr_forecolor, chr_backcolor);
graphics_draw_text(disp, 85, 55, "SETS");
graphics_draw_text(disp, 94, 70, "1"); //u
graphics_draw_text(disp, 104, 82, "2"); //r
graphics_draw_text(disp, 94, 93, "3"); //d
graphics_draw_text(disp, 82, 82, "4"); //l
graphics_draw_text(disp, 208, 206, "press START");
if (set == 1)
drawSet1(disp);
if (set == 2)
drawSet2(disp);
if (set == 3)
drawSet3(disp);
if (set == 4)
drawSet4(disp);
drawTextInput(disp, input_text);
/* Force backbuffer flip */
display_show(disp);
} //mapping 2 chr input drawings
//sleep(10);
}
}
}