From 4e61bcaa50780ec26f39d33452686f44f0216f8e Mon Sep 17 00:00:00 2001 From: d0k3 Date: Tue, 25 Jun 2019 23:02:58 +0200 Subject: [PATCH] Mark the cart drive as uninitialized when uninitialized Fixes #492 --- arm9/source/common/hid.c | 2 +- arm9/source/virtual/vcart.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/arm9/source/common/hid.c b/arm9/source/common/hid.c index 08767cf..7319ec8 100644 --- a/arm9/source/common/hid.c +++ b/arm9/source/common/hid.c @@ -145,7 +145,7 @@ u32 InputWait(u32 timeout_sec) { do { u32 newpad = HID_ReadState(); - if (!newpad) { // no buttons pressed, check for I/O changes instead + if (!(newpad & BUTTON_ANY)) { // no buttons pressed, check for I/O changes instead u32 state = CART_STATE; if (state != oldcart) return state ? CART_INSERT : CART_EJECT; diff --git a/arm9/source/virtual/vcart.c b/arm9/source/virtual/vcart.c index 3828f4e..65671bd 100644 --- a/arm9/source/virtual/vcart.c +++ b/arm9/source/virtual/vcart.c @@ -6,8 +6,10 @@ static CartData* cdata = NULL; static bool cart_init = false; +static bool cart_checked = false; u32 InitVCartDrive(void) { + if (!cart_checked) cart_checked = true; if (!cdata) cdata = (CartData*) malloc(sizeof(CartData)); cart_init = (cdata && (InitCardRead(cdata) == 0) && (cdata->cart_size <= FAT_LIMIT)); if (!cart_init && cdata) { @@ -73,7 +75,7 @@ u64 GetVCartDriveSize(void) { void GetVCartTypeString(char* typestr) { // typestr needs to be at least 11 + 1 chars big - if (!cart_init || !cdata) sprintf(typestr, "EMPTY"); + if (!cart_init || !cdata) sprintf(typestr, cart_checked ? "EMPTY" : "INIT"); else sprintf(typestr, "%s%08lX", (cdata->cart_type & CART_CTR) ? "CTR" : (cdata->cart_type & CART_TWL) ? "TWL" :