From 50a0c95f6bee344218dc4ccb8de217193d229763 Mon Sep 17 00:00:00 2001 From: Gabubu Date: Wed, 14 Jun 2023 14:34:35 +0300 Subject: [PATCH] Uploaded the source code --- .vscode/settings.json | 3 + LICENSE | 9 +++ Makefile | 138 ++++++++++++++++++++++++++++++++++++++++++ data/music.mod | Bin 0 -> 93710 bytes source/donut.c | 127 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 277 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 data/music.mod create mode 100644 source/donut.c diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..85bdc9d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "C_Cpp.default.compilerPath": "" +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d9e0fb0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +The MIT License (MIT) + +Copyright © 2022 jornmann and Andy Sloane + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4bd04b7 --- /dev/null +++ b/Makefile @@ -0,0 +1,138 @@ +#--------------------------------------------------------------------------------- +# Clear the implicit built in rules +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- +ifeq ($(strip $(DEVKITPPC)),) +$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=devkitPPC") +endif + +include $(DEVKITPPC)/wii_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# INCLUDES is a list of directories containing extra header files +#--------------------------------------------------------------------------------- +TARGET := $(notdir $(CURDIR)) +BUILD := build +SOURCES := source +DATA := data +INCLUDES := + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- + +CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE) +CXXFLAGS = $(CFLAGS) + +LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map + +#--------------------------------------------------------------------------------- +# any extra libraries we wish to link with the project +#--------------------------------------------------------------------------------- +LIBS := -lwiiuse -lbte -lmodplay -laesnd -logc -lm + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# automatically build a list of object files for our project +#--------------------------------------------------------------------------------- +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) +sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) + +#--------------------------------------------------------------------------------- +# use CXX for linking C++ projects, CC for standard C +#--------------------------------------------------------------------------------- +ifeq ($(strip $(CPPFILES)),) + export LD := $(CC) +else + export LD := $(CXX) +endif + +export OFILES_BIN := $(addsuffix .o,$(BINFILES)) +export OFILES_SOURCES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o) +export OFILES := $(OFILES_BIN) $(OFILES_SOURCES) + +export HFILES := $(addsuffix .h,$(subst .,_,$(BINFILES))) + +#--------------------------------------------------------------------------------- +# build a list of include paths +#--------------------------------------------------------------------------------- +export INCLUDE := $(foreach dir,$(INCLUDES), -iquote $(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) \ + -I$(LIBOGC_INC) + +#--------------------------------------------------------------------------------- +# build a list of library paths +#--------------------------------------------------------------------------------- +export LIBPATHS := -L$(LIBOGC_LIB) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) + +export OUTPUT := $(CURDIR)/$(TARGET) +.PHONY: $(BUILD) clean + +#--------------------------------------------------------------------------------- +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... + @rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol + +#--------------------------------------------------------------------------------- +run: + wiiload $(TARGET).dol + + +#--------------------------------------------------------------------------------- +else + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).dol: $(OUTPUT).elf +$(OUTPUT).elf: $(OFILES) + +$(OFILES_SOURCES) : $(HFILES) + +#--------------------------------------------------------------------------------- +# This rule links in binary data with the .mod extension +#--------------------------------------------------------------------------------- +%.mod.o %_mod.h : %.mod +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + $(bin2o) + +-include $(DEPENDS) + +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- diff --git a/data/music.mod b/data/music.mod new file mode 100644 index 0000000000000000000000000000000000000000..30257c4e8c6694a3f4e2002c00cfc2c97b4f4113 GIT binary patch literal 93710 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 NVA4gr9Hn5a{{sq1vS +#include +#include +#include +#include +#include +#include +#include + +#include "music_mod.h" + +static void *xfb = NULL; +static GXRModeObj *rmode = NULL; +static MODPlay play; + +//--------------------------------------------------------------------------------- +int main(int argc, char **argv) { +//--------------------------------------------------------------------------------- + + // Initialise the video system + VIDEO_Init(); + + // This function initialises the attached controllers + WPAD_Init(); + + // Initialise the audio subsystem + AESND_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"); + + // blue background + //printf("\x1b[44;37m"); + printf("\x1b[40;37m"); + printf("\x1b[2J"); + + MODPlay_Init(&play); + MODPlay_SetMOD(&play,music_mod); + MODPlay_SetVolume(&play,63,63); + MODPlay_Start(&play); + + float A = 0, B = 0; + float i, j; + int k; + float z[1760]; + char b[1760]; + for(;;) { + WPAD_ScanPads(); + u32 pressed = WPAD_ButtonsDown(0); + if ( pressed & WPAD_BUTTON_HOME ) { + exit(0); + } + memset(b,32,1760); + memset(z,0,7040); + for(j=0; j < 6.28; j += 0.07) { + for(i=0; i < 6.28; i += 0.02) { + float c = sin(i); + float d = cos(j); + float e = sin(A); + float f = sin(j); + float g = cos(A); + float h = d + 2; + float D = 1 / (c * h * e + f * g + 5); + float l = cos(i); + float m = cos(B); + float n = sin(B); + float t = c * h * g - f * e; + int x = 40 + 30 * D * (l * h * m - t * n); + int y= 12 + 15 * D * (l * h * n + t * m); + int o = x + 80 * y; + int N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n); + if(22 > y && y > 0 && x > 0 && 80 > x && D > z[o]) { + z[o] = D; + b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0]; + } + } + } + printf("\x1b[H"); + for(k = 0; k < 1761; k++) { + //printf("\x1b[40;37m"); + putchar(k % 80 ? b[k] : 10); + A += 0.00004; + B += 0.00002; + } + usleep(30000); + + printf(" \x1b[44;37m.----------------------------------------------------------------------------.\x1b[40;37m\n"); + printf(" \x1b[44;37m| Wii Donut v1.0 (Press HOME to quit.) |\x1b[40;37m\n"); + printf(" \x1b[44;37m| Based on the original donut.c by Andy Sloane |\x1b[40;37m\n"); + printf(" \x1b[44;37m| Ported (copied and pasted) by jornmann |\x1b[40;37m\n"); + printf(" \x1b[44;37m| Music by Jogeir Liljedahl |\x1b[40;37m\n"); + printf(" \x1b[44;37m'----------------------------------------------------------------------------'\x1b[40;37m"); + VIDEO_WaitVSync(); + } + + return 0; +}