-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Controller Pak management view #91
base: develop
Are you sure you want to change the base?
Changes from 45 commits
e08d0c4
4270a51
e3d35b4
8dbc0aa
ec708de
646c107
dc79389
ae0d19b
81b31b5
28ee429
7e9bd18
a32373e
2670c84
6a278bb
77ff2bf
c57a5be
d21328b
ecd131b
02dbcc0
c101dc2
d038eff
9746a1d
d0683e9
2871ff7
4f01b3f
9869b6f
4f99e48
ce5d6f7
ac5e519
5bba830
20ee708
7fbe623
2677e05
5ae7cce
0787805
b1ea3f3
35f51fd
99abea6
967d846
9bb6e66
0cd5455
8ed610f
3ed121d
2aa1aed
5bf3728
83367c2
056e664
f5209c8
1bfde7c
4f06086
2c10eb5
ef4ee1b
7220d37
19bce7e
5cd3260
4ac3b38
05c0f30
84c635b
f01614a
cef5d43
72d8139
c5a6e69
dc57d9b
7e93276
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,79 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <libdragon.h> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <stdio.h> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include "../utils/fs.h" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include "cpak_handler.h" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#define CPAK_BLOCKS 128 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#define CPAK_BLOCK_SIZE MEMPAK_BLOCK_SIZE | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cpak_err_t cpak_info_load(uint8_t port, cpak_info_t *cpak_info) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int res = validate_mempak(port); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (res != CONTROLLER_PAK_OK) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return CONTROLLER_PAK_ERR_INVALID; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
for (int j = 0; j < 16; j++) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
entry_structure_t entry; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
get_mempak_entry(port, j, &entry); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cpak_info->entries[j] = entry; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cpak_info->free_pages = get_mempak_free_space(port); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return CONTROLLER_PAK_OK; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int cpak_clone_contents_to_file(char *path, uint8_t port) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
uint8_t cpak_data[CPAK_BLOCKS * CPAK_BLOCK_SIZE]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int err; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
for (int i = 0; i < CPAK_BLOCKS; i++) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
err = read_mempak_sector(port, i, &cpak_data[i * CPAK_BLOCK_SIZE]); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (err) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return err; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FILE *f; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ((f = fopen(path, "wb")) == NULL) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return CONTROLLER_PAK_ERR_IO; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (fwrite(&cpak_data, 1, sizeof(cpak_data), f) != sizeof(cpak_data)) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
err = 3; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fclose(f); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (err) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return err; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return CONTROLLER_PAK_OK; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+31
to
+59
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add error handling for The function lacks error handling for - if (fwrite(&cpak_data, 1, sizeof(cpak_data), f) != sizeof(cpak_data)) {
- err = 3;
+ if (fwrite(&cpak_data, 1, sizeof(cpak_data), f) != sizeof(cpak_data)) {
+ fclose(f);
+ return CONTROLLER_PAK_ERR_IO;
} Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cpak_err_t cpak_overwrite_contents_from_file(char *path, uint8_t port) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// TODO: implementation. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return CONTROLLER_PAK_ERR_IO; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+61
to
+64
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Implement the function The function is currently a placeholder with a TODO comment. Do you want me to assist with the implementation or open a GitHub issue to track this task? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cpak_err_t cpak_attempt_repair(uint8_t port, bool allow_formatting) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int result = validate_mempak(port); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (result == CONTROLLER_PAK_OK) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return CONTROLLER_PAK_OK; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// TODO: repair implementation. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// last resort would be to format it completely! | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (result == -3 && allow_formatting) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
result = format_mempak(port); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return result; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+66
to
+78
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Implement the function The function is currently a placeholder with a TODO comment. Do you want me to assist with the implementation or open a GitHub issue to track this task? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/** | ||
* @file cpak_handler.h | ||
* @brief ControllerPak handler | ||
* @ingroup menu | ||
*/ | ||
|
||
#include <stdbool.h> | ||
#include <stdint.h> | ||
|
||
#ifndef CPAK_HANDLER_H__ | ||
#define CPAK_HANDLER_H__ | ||
|
||
/** @brief Controller Pak state enumeration. */ | ||
typedef enum { | ||
CONTROLLER_PAK_OK, | ||
CONTROLLER_PAK_ERR_IO, | ||
CONTROLLER_PAK_ERR_NO_FILE, | ||
CONTROLLER_PAK_ERR_INVALID, | ||
} cpak_err_t; | ||
|
||
/** @brief Controller Pak Information Structure. */ | ||
typedef struct { | ||
entry_structure_t entries[16]; | ||
int free_pages; | ||
|
||
} cpak_info_t; | ||
|
||
cpak_err_t cpak_info_load(uint8_t port, cpak_info_t *cpak_info); | ||
int cpak_clone_contents_to_file(char *path, uint8_t port); | ||
cpak_err_t cpak_overwrite_contents_from_file(char *path, uint8_t port); | ||
cpak_err_t cpak_attempt_repair(uint8_t port, bool allow_formatting); | ||
|
||
#endif |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
#include "views.h" | ||
#include "../cpak_handler.h" | ||
#include "utils/fs.h" | ||
|
||
#define CPAK_MAX_PAGES 123 | ||
#define CPAK_MAX_NOTES 16 | ||
#define CPAK_BACKUP_DIRECTORY "/cpak_backups" | ||
#define CPAK_BACKUP_FILE_PREFIX "cpak_backup" | ||
#define CPAK_BACKUP_FILE_EXT "pak" | ||
|
||
|
||
static int accessory_is_cpak[4]; | ||
static cpak_info_t cpak_info; | ||
static bool backup_in_progress = false; | ||
|
||
|
||
const static char *format_cpak_entries(entry_structure_t *entries) { | ||
// TODO: either show the note descriptions, or show the notes used. | ||
// for (int i = 0; i< 16; i++) { | ||
|
||
// } | ||
return "?/16"; //CPAK_MAX_NOTES | ||
} | ||
Comment on lines
+17
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Incomplete function: The function contains a TODO comment and returns a placeholder string. Do you want me to help complete this function or open a GitHub issue to track this task? |
||
|
||
static void exec_cpak_backup(menu_t *menu, uint8_t port) { | ||
backup_in_progress = true; | ||
char file_name[32]; | ||
|
||
path_t *path = path_init(menu->storage_prefix, CPAK_BACKUP_DIRECTORY); | ||
directory_create(path_get(path)); | ||
|
||
sprintf(file_name, "%s-%lld.%s", CPAK_BACKUP_FILE_PREFIX, time( NULL ), CPAK_BACKUP_FILE_EXT); | ||
|
||
path_push(path, file_name); | ||
|
||
//int res = | ||
cpak_clone_contents_to_file(path_get(path), port); | ||
|
||
// TODO: draw progress bar or error! | ||
// if (res == CONTROLLER_PAK_OK) { | ||
|
||
// } | ||
// else { | ||
|
||
// } | ||
|
||
path_free(path); | ||
|
||
backup_in_progress = false; | ||
} | ||
Comment on lines
+25
to
+50
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Incomplete error handling: The function contains a TODO comment for drawing a progress bar or error message and does not handle the result of the backup operation. Do you want me to help complete the error handling or open a GitHub issue to track this task? |
||
|
||
static void process (menu_t *menu) { | ||
|
||
if (menu->actions.enter) { | ||
// TODO: handle all ports | ||
if (accessory_is_cpak[JOYPAD_PORT_1]) { | ||
exec_cpak_backup(menu, JOYPAD_PORT_1); | ||
} | ||
} else if (menu->actions.back) { | ||
menu->next_mode = MENU_MODE_BROWSER; | ||
} | ||
} | ||
Comment on lines
+52
to
+62
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Incomplete functionality: The function contains a TODO comment for handling all ports and currently only handles JoyPad port 1. Do you want me to help complete this functionality or open a GitHub issue to track this task? |
||
|
||
static void draw (menu_t *menu, surface_t *d) { | ||
rdpq_attach(d, NULL); | ||
|
||
component_background_draw(); | ||
networkfusion marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
if (backup_in_progress) { | ||
component_messagebox_draw("Saving..."); | ||
networkfusion marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
|
||
component_layout_draw(); | ||
networkfusion marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
// TODO: Backup from other ports, restore from SD, and/or Repair functions. | ||
component_main_text_draw( | ||
networkfusion marked this conversation as resolved.
Show resolved
Hide resolved
|
||
ALIGN_CENTER, VALIGN_TOP, | ||
"CONTROLLER PAK MENU\n" | ||
"\n" | ||
"This menu only supports cloning the\n" | ||
"Controller Pak connected to JoyPad 1.\n" | ||
); | ||
|
||
// Bonus would be to handle individual per game entries! | ||
if (accessory_is_cpak[0]) { | ||
component_main_text_draw( | ||
networkfusion marked this conversation as resolved.
Show resolved
Hide resolved
|
||
ALIGN_LEFT, VALIGN_TOP, | ||
"\n" | ||
"\n" | ||
"\n" | ||
"\n" | ||
"\n" | ||
"Controller Pak (1).\n" | ||
" Pages: %d/%d. \n" | ||
" Notes: %s.", | ||
cpak_info.free_pages, CPAK_MAX_PAGES, | ||
format_cpak_entries(cpak_info.entries) | ||
); | ||
} | ||
else { | ||
component_main_text_draw( | ||
networkfusion marked this conversation as resolved.
Show resolved
Hide resolved
|
||
ALIGN_LEFT, VALIGN_TOP, | ||
"\n" | ||
"\n" | ||
"\n" | ||
"\n" | ||
"\n" | ||
"Controller Pak (1).\n" | ||
" Not inserted.\n" | ||
" - If it is, retry inserting it a few times.\n" | ||
" - Load another ROM that has a Controller Pak manager.\n" | ||
); | ||
} | ||
|
||
if (accessory_is_cpak[0]) { | ||
component_actions_bar_text_draw( | ||
networkfusion marked this conversation as resolved.
Show resolved
Hide resolved
|
||
ALIGN_LEFT, VALIGN_TOP, | ||
"A: Clone to SD Card\n" | ||
"B: Back" | ||
); | ||
} | ||
else { | ||
component_actions_bar_text_draw( | ||
networkfusion marked this conversation as resolved.
Show resolved
Hide resolved
|
||
ALIGN_LEFT, VALIGN_TOP, | ||
"\n" | ||
"B: Back" | ||
); | ||
} | ||
|
||
rdpq_detach_show(); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Incomplete functionality: The function contains a TODO comment for additional features and has room for improvements. Do you want me to help complete this functionality or open a GitHub issue to track this task? |
||
} | ||
|
||
void view_joypad_controller_pak_init (menu_t *menu){ | ||
|
||
//TODO: handle all paks. | ||
// check which paks are available | ||
// JOYPAD_PORT_FOREACH (port) { | ||
// accessory_is_cpak[port] = joypad_get_accessory_type(port) == JOYPAD_ACCESSORY_TYPE_CONTROLLER_PAK; | ||
// } | ||
|
||
if (joypad_get_accessory_type(JOYPAD_PORT_1) == JOYPAD_ACCESSORY_TYPE_CONTROLLER_PAK) { | ||
accessory_is_cpak[JOYPAD_PORT_1] = JOYPAD_ACCESSORY_TYPE_CONTROLLER_PAK; | ||
cpak_info_load(JOYPAD_PORT_1, &cpak_info); | ||
} | ||
} | ||
Comment on lines
+133
to
+145
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Incomplete functionality: The function contains a TODO comment for handling all paks and currently only checks the accessory type for JoyPad port 1. Do you want me to help complete this functionality or open a GitHub issue to track this task? |
||
|
||
void view_joypad_controller_pak_display (menu_t *menu, surface_t *display) { | ||
process(menu); | ||
draw(menu, display); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add error handling for
get_mempak_entry
.The function lacks error handling for
get_mempak_entry
. Ifget_mempak_entry
fails, it should return an appropriate error code.Committable suggestion