initial commit
This commit is contained in:
commit
c6be391b8b
10 changed files with 106621 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
/.cache
|
||||
/build
|
13
CMakeLists.txt
Normal file
13
CMakeLists.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
if (DEFINED ENV{DEVKITPRO})
|
||||
set(DEVKITPRO $ENV{DEVKITPRO})
|
||||
endif()
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE "${DEVKITPRO}/cmake/Wii.cmake")
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
project(WiiDuktape)
|
||||
|
||||
add_subdirectory(dependencies/duktape)
|
||||
add_subdirectory(source)
|
5
dependencies/duktape/CMakeLists.txt
vendored
Normal file
5
dependencies/duktape/CMakeLists.txt
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
project(Duktape)
|
||||
|
||||
add_subdirectory(src)
|
2
dependencies/duktape/src/CMakeLists.txt
vendored
Normal file
2
dependencies/duktape/src/CMakeLists.txt
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
add_library(duktape duktape.c)
|
||||
target_include_directories(duktape PUBLIC ./)
|
1942
dependencies/duktape/src/duk_config.h
vendored
Normal file
1942
dependencies/duktape/src/duk_config.h
vendored
Normal file
File diff suppressed because it is too large
Load diff
1911
dependencies/duktape/src/duk_source_meta.json
vendored
Normal file
1911
dependencies/duktape/src/duk_source_meta.json
vendored
Normal file
File diff suppressed because it is too large
Load diff
101206
dependencies/duktape/src/duktape.c
vendored
Normal file
101206
dependencies/duktape/src/duktape.c
vendored
Normal file
File diff suppressed because it is too large
Load diff
1456
dependencies/duktape/src/duktape.h
vendored
Normal file
1456
dependencies/duktape/src/duktape.h
vendored
Normal file
File diff suppressed because it is too large
Load diff
3
source/CMakeLists.txt
Normal file
3
source/CMakeLists.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
add_executable(WiiDuktape main.c)
|
||||
target_link_libraries(WiiDuktape duktape)
|
||||
ogc_create_dol(WiiDuktape)
|
81
source/main.c
Normal file
81
source/main.c
Normal file
|
@ -0,0 +1,81 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <gccore.h>
|
||||
#include <wiiuse/wpad.h>
|
||||
#include <duktape.h>
|
||||
|
||||
static void *xfb = NULL;
|
||||
static GXRModeObj *rmode = NULL;
|
||||
|
||||
static duk_ret_t native_print(duk_context *ctx) {
|
||||
printf("%s\n", duk_to_string(ctx, 0));
|
||||
return 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!");
|
||||
|
||||
duk_context *ctx = duk_create_heap_default();
|
||||
duk_push_c_function(ctx, native_print, 1);
|
||||
duk_put_global_string(ctx, "print");
|
||||
|
||||
duk_eval_string_noresult(ctx, "while (1) {print('hello world')}");
|
||||
|
||||
while(1) {
|
||||
|
||||
// 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);
|
||||
// printf("Hello World!");
|
||||
// duk_eval_string_noresult(ctx, "print('hello, world!');");
|
||||
|
||||
// Wait for the next frame
|
||||
VIDEO_WaitVSync();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in a new issue