summaryrefslogtreecommitdiffstats
path: root/source/template.c
diff options
context:
space:
mode:
authorLibravatar bigfoot547 <bigfoot@figboot.dev>2026-06-29 03:00:12 -0500
committerLibravatar bigfoot547 <bigfoot@figboot.dev>2026-06-29 03:00:12 -0500
commit6bb84fe005fc151df1a67259242da9c0eaf3fe93 (patch)
tree683d6e160bf48fd0c235635be874a8fef697402c /source/template.c
parentadd new tests (diff)
begin work on pc side
Diffstat (limited to 'source/template.c')
-rw-r--r--source/template.c303
1 files changed, 0 insertions, 303 deletions
diff --git a/source/template.c b/source/template.c
deleted file mode 100644
index 8665774..0000000
--- a/source/template.c
+++ /dev/null
@@ -1,303 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <gccore.h>
-#include <wiiuse/wpad.h>
-#include <inttypes.h>
-#include <string.h>
-
-#include "term.h"
-#include "state.h"
-
-static void *xfb = NULL;
-static GXRModeObj *rmode = NULL;
-
-#define TARGET_IOS 58
-
-static void initialize(int again) {
- VIDEO_Init();
-
- rmode = VIDEO_GetPreferredMode(NULL);
- xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
-
- console_init(xfb, 20, 20, rmode->fbWidth - 20, rmode->xfbHeight - 20, rmode->fbWidth * VI_DISPLAY_PIX_SZ);
-
- VIDEO_Configure(rmode);
- VIDEO_SetNextFramebuffer(xfb);
- VIDEO_ClearFrameBuffer(rmode, xfb, COLOR_BLACK);
- VIDEO_SetBlack(FALSE);
- VIDEO_Flush();
- VIDEO_WaitVSync();
- if (rmode->viTVMode & VI_NON_INTERLACE) {
- VIDEO_WaitVSync();
- }
-
- fputs(TERM_CLEAR TERM_CUR_POS(2, 5), stdout);
- printf("USB Gecko (newnewexi) test tool by figboot\n\n");
-
- s32 iosver = IOS_GetVersion();
- s32 iosrev = IOS_GetRevision();
- printf("You're running IOS%" PRId32 " rev %" PRId32 ".\n", iosver, iosrev);
-
- if (iosver != TARGET_IOS) {
- if (again) {
- printf(TERM_CSI("93m") "Failed to set up IOS" STR(TARGET_IOS) "! Bailing out.\n");
- exit(1);
- }
-
- printf("Trying to load IOS" STR(TARGET_IOS) "...\n");
-
- s32 res;
- if ((res = IOS_ReloadIOS(TARGET_IOS)) < 0) {
- printf(TERM_CSI("93m") "Failed to set up IOS" STR(TARGET_IOS) "! IOS_ReloadIOS returned %" PRId32 "\n", res);
- exit(1);
- }
-
- free(MEM_K1_TO_K0(xfb));
- initialize(1);
- }
-}
-
-static void __attribute__((noreturn)) fatal_error(void) {
- printf("The program will now abort due to the fatal error.\n");
- exit(1);
-}
-
-int main(int argc, char **argv)
-{
- void *state_data = NULL;
- size_t state_data_size = 0;
- struct et_next_state next;
- const struct et_state *cur_state = NULL;
- int stateres = 0;
-
- u32 wpad_pressed;
- u32 pad_pressed;
-
- initialize(0);
-
- WPAD_Init();
- PAD_Init();
-
- printf("Done initializing.\n");
-
- /* Set up initial state */
- cur_state = et_state_setup;
-
- if (cur_state->private_size > 0) {
- state_data = malloc(cur_state->private_size);
- state_data_size = cur_state->private_size;
- if (!state_data) {
- printf("Failed to allocate private space for setup state %p!", cur_state);
- fatal_error();
- }
- }
-
- if ((stateres = et_state_init(cur_state, state_data, et_init_data_null)) < 0) {
- printf("Failed to init setup state %p: %d\n", cur_state, stateres);
- fatal_error();
- }
-
- while (SYS_MainLoop()) {
- WPAD_ScanPads();
- PAD_ScanPads();
-
- wpad_pressed = WPAD_ButtonsDown(0);
- pad_pressed = PAD_ButtonsDown(0);
-
- if (wpad_pressed & WPAD_BUTTON_HOME || pad_pressed & PAD_BUTTON_START) {
- printf("Exit button pressed. Goodbye!\n");
- exit(0);
- }
-
- stateres = et_state_tick(cur_state, state_data, &next);
- if (stateres < 0) {
- printf("Failed to tick state %p: %d\n", cur_state, stateres);
- fatal_error();
- }
-
- if (stateres > 0) {
- /* tear down the old state first... */
- et_state_cleanup(cur_state, state_data);
-
- cur_state = next.state;
-
- if (state_data_size < cur_state->private_size) {
- void *new_data = realloc(state_data, cur_state->private_size);
- if (!new_data) {
- printf("Failed to allocate %zu bytes for new state %p\n", cur_state->private_size, cur_state);
- fatal_error();
- }
-
- state_data = new_data;
- state_data_size = cur_state->private_size;
- }
-
- if ((stateres = et_state_init(cur_state, state_data, next.init_data)) < 0) {
- printf("Failed to init new state %p: %d\n", cur_state, stateres);
- fatal_error();
- }
- }
-
- VIDEO_WaitVSync();
- }
-
- return 0;
-}
-
-#if 0
-
-//---------------------------------------------------------------------------------
-int main(int argc, char **argv) {
-//---------------------------------------------------------------------------------
-
- // Initialise the video system
- VIDEO_Init();
-
- // This function initialises the attached controllers
- WPAD_Init();
-
- // Obtain the preferred video mode from the system
- // This will correspond to the settings in the Wii menu
- rmode = VIDEO_GetPreferredMode(NULL);
-
- // Allocate memory for the display in the uncached region
- xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
-
- // Initialise the console, required for printf
- console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
-
- // Set up the video registers with the chosen mode
- VIDEO_Configure(rmode);
-
- // Tell the video hardware where our display memory is
- VIDEO_SetNextFramebuffer(xfb);
-
- // Make the display visible
- VIDEO_SetBlack(false);
-
- // Flush the video register changes to the hardware
- VIDEO_Flush();
-
- // Wait for Video setup to complete
- VIDEO_WaitVSync();
- if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
-
-
- // The console understands VT terminal escape codes
- // This positions the cursor on row 2, column 0
- // we can use variables for this with format codes too
- // e.g. printf ("\x1b[%d;%dH", row, column );
- printf("\x1b[2;0H");
-
-
- printf("Hello World!\n");
-
-#define UGCHAN EXI_CHANNEL_1 /* slot B */
-#define UGDEV EXI_DEVICE_0 /* memory card */
-
- if (EXI_Lock(UGCHAN, UGDEV, NULL) == 1) {
- EXI_Select(UGCHAN, UGDEV, EXI_SPEED32MHZ);
- uint32_t cmd = 0x90000000;
- int res = 0;
- if (EXI_Imm(UGCHAN, &cmd, sizeof(cmd), EXI_READWRITE, NULL) == 0) res |= 0x01;
- if (EXI_Sync(UGCHAN) == 0) res |= 0x02;
-
- if (res == 0) {
- printf("Got: 0x%08x\n", cmd);
- if (cmd != 0x04700000) {
- printf("This is probably not a USB gecko...\n");
- }
- } else {
- printf("EXI read/write error :( %#04x\n", res);
- }
-
- EXI_Deselect(UGCHAN);
- EXI_Unlock(UGCHAN);
- } else {
- printf("Failed to lock EXI channel %d %d\n", UGCHAN, UGDEV);
- goto waitexit;
- }
-
- for (int i = 0; i < 10; ++i) {
- if (EXI_Lock(UGCHAN, UGDEV, NULL) == 0) {
- printf("Failed to lock EXI for LED\n");
- break;
- }
-
- int res = 0;
-
- if (EXI_Select(UGCHAN, UGDEV, EXI_SPEED32MHZ) == 0) res |= 0x01;
- uint32_t cmd = (i & 1) ? 0x80000000 : 0x70000000;
- if (EXI_Imm(UGCHAN, &cmd, sizeof(cmd), EXI_WRITE, NULL) == 0) res |= 0x02;
- if (EXI_Sync(UGCHAN) == 0) res |= 0x04;
- if (EXI_Deselect(UGCHAN) == 0) res |= 0x08;
-
- if (EXI_Unlock(UGCHAN) == 0) res |= 0x10;
-
- printf("Error for LED: 0x%02x\n", res);
-
- for (int j = 0; j < 60; ++j) {
- VIDEO_WaitVSync();
- }
- }
-
-
- for (int j = 0; j < 10; ++j) {
- if (EXI_Lock(UGCHAN, UGDEV, NULL) == 1) {
- printf("Sending a zillion bytes to your so-called \"usb gecko\"...\n");
-
- for (int i = 0; i < 4096; ++i) {
- EXI_Select(UGCHAN, UGDEV, EXI_SPEED32MHZ);
-
- uint16_t cmd = 0xB000 | (uint16_t)(((i & 63) + 32) << 4);
- if (EXI_Imm(UGCHAN, &cmd, sizeof(cmd), EXI_READWRITE, NULL) == 0) {
- printf("Failed when writing %d\n", i);
- goto error;
- }
-
- if (EXI_Sync(UGCHAN) == 0) {
- printf("Failed sync when writing %d\n", i);
- goto error;
- }
-
- if ((cmd & 0x0400) == 0) {
- printf("Out of FIFO space at %d\n", i);
- goto error;
- }
-
- EXI_Deselect(UGCHAN);
- continue;
-error:
- EXI_Deselect(UGCHAN);
- break;
- }
-
- EXI_Unlock(UGCHAN);
- } else {
- printf("Failed to lock EXI channel %d %d\n", UGCHAN, UGDEV);
- goto waitexit;
- }
- }
-
-waitexit:
- printf("That's all! Press HOME to exit.\n");
-
- while(SYS_MainLoop()) {
-
- // Call WPAD_ScanPads each loop, this reads the latest controller states
- WPAD_ScanPads();
-
- // WPAD_ButtonsDown tells us which buttons were pressed in this loop
- // this is a "one shot" state which will not fire again until the button has been released
- u32 pressed = WPAD_ButtonsDown(0);
-
- // We return to the launcher application via exit
- if ( pressed & WPAD_BUTTON_HOME ) exit(0);
-
- // Wait for the next frame
- VIDEO_WaitVSync();
- }
-
- return 0;
-}
-#endif