mirror of
https://github.com/Ed94/pikuma_ps1.git
synced 2026-06-01 18:41:13 -07:00
got hello psyq doing its job. removing pxdev_sample as no longer needed.
This commit is contained in:
@@ -12,3 +12,4 @@ toolchain/psyq_iwyu
|
|||||||
*.dep
|
*.dep
|
||||||
*.o
|
*.o
|
||||||
*.a
|
*.a
|
||||||
|
.sentry-native
|
||||||
|
|||||||
Vendored
+24
@@ -27,6 +27,30 @@
|
|||||||
"tbreak main",
|
"tbreak main",
|
||||||
"continue"
|
"continue"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Debug: Hello Psy-Q!",
|
||||||
|
"type": "gdb",
|
||||||
|
"request": "attach",
|
||||||
|
"target": "localhost:3333",
|
||||||
|
"remote": true,
|
||||||
|
"cwd": "${workspaceRoot}/build",
|
||||||
|
"valuesFormatting": "parseText",
|
||||||
|
"stopAtConnect": true,
|
||||||
|
"gdbpath": "gdb-multiarch",
|
||||||
|
"windows": {
|
||||||
|
"gdbpath": "gdb-multiarch.exe"
|
||||||
|
},
|
||||||
|
"osx": {
|
||||||
|
"gdbpath": "gdb"
|
||||||
|
},
|
||||||
|
"executable": "${workspaceRoot}/build/hello_psyq.elf",
|
||||||
|
"autorun": [
|
||||||
|
"monitor reset shellhalt",
|
||||||
|
"load hello_psyq.elf",
|
||||||
|
"tbreak main",
|
||||||
|
"continue"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ int main(void)
|
|||||||
DB *cdb;
|
DB *cdb;
|
||||||
|
|
||||||
ResetGraph(0);
|
ResetGraph(0);
|
||||||
InitGeom();
|
// InitGeom();
|
||||||
|
|
||||||
SetGraphDebug(0);
|
SetGraphDebug(0);
|
||||||
|
|
||||||
@@ -35,16 +35,28 @@ int main(void)
|
|||||||
SetDefDispEnv(&db[0].disp, 0, 0, 640, 480);
|
SetDefDispEnv(&db[0].disp, 0, 0, 640, 480);
|
||||||
SetDefDispEnv(&db[1].disp, 0, 0, 640, 480);
|
SetDefDispEnv(&db[1].disp, 0, 0, 640, 480);
|
||||||
|
|
||||||
|
SetDispMask(1);
|
||||||
|
|
||||||
|
PutDrawEnv(&db[0].draw);
|
||||||
|
PutDispEnv(&db[0].disp);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
cdb = (cdb == &db[0]) ? &db[1] : &db[0];
|
||||||
|
|
||||||
|
ClearOTagR(cdb->ot, OTSIZE);
|
||||||
|
|
||||||
FntPrint("Code compiled using Psy-Q libraries\n\n");
|
FntPrint("Code compiled using Psy-Q libraries\n\n");
|
||||||
FntPrint("converted by psyq-obj-parser\n\n");
|
FntPrint("converted by psyq-obj-parser\n\n");
|
||||||
FntPrint("PCSX-Redux project\n\n");
|
FntPrint("PCSX-Redux project\n\n");
|
||||||
FntPrint("https://bit.ly/pcsx-redux");
|
FntPrint("https://bit.ly/pcsx-redux");
|
||||||
|
|
||||||
ClearImage(&cdb->draw.clip, 60, 120, 120);
|
|
||||||
|
|
||||||
DrawSync(0);
|
DrawSync(0);
|
||||||
VSync(0);
|
VSync(0);
|
||||||
|
|
||||||
|
ClearImage(&cdb->draw.clip, 60, 120, 120);
|
||||||
|
|
||||||
|
DrawOTag(&cdb->ot[OTSIZE - 1]);
|
||||||
|
FntFlush(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
PSX.Dev-README.md
|
|
||||||
*.elf
|
|
||||||
*.map
|
|
||||||
*.cpe
|
|
||||||
*.ps-exe
|
|
||||||
*.dep
|
|
||||||
*.o
|
|
||||||
*.a
|
|
||||||
third_party/psyq
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
{
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "Win32",
|
|
||||||
"compilerPath": "${env:AppData}\\mips\\mips\\bin\\mipsel-none-elf-gcc.exe",
|
|
||||||
"cStandard": "c17",
|
|
||||||
"cppStandard": "c++20",
|
|
||||||
"defines": [
|
|
||||||
"__STDC_HOSTED__ = 0"
|
|
||||||
],
|
|
||||||
"includePath": [
|
|
||||||
"${env:AppData}/mips/mips/include",
|
|
||||||
"${workspaceFolder}/",
|
|
||||||
"${workspaceFolder}/third_party/nugget",
|
|
||||||
"${workspaceFolder}/third_party/psyq-iwyu/include"
|
|
||||||
],
|
|
||||||
"intelliSenseMode": "gcc-x86"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "linux",
|
|
||||||
"compilerPath": "mipsel-linux-gnu-gcc",
|
|
||||||
"cStandard": "c17",
|
|
||||||
"cppStandard": "c++20",
|
|
||||||
"defines": [
|
|
||||||
"__STDC_HOSTED__ = 0"
|
|
||||||
],
|
|
||||||
"includePath": [
|
|
||||||
"/usr/mipsel-linux-gnu/include",
|
|
||||||
"/usr/local/mipsel-linux-gnu/include",
|
|
||||||
"/usr/mipsel-none-elf/include",
|
|
||||||
"/usr/local/mipsel-none-elf/include",
|
|
||||||
"${workspaceFolder}/",
|
|
||||||
"${workspaceFolder}/third_party/nugget",
|
|
||||||
"${workspaceFolder}/third_party/psyq-iwyu/include"
|
|
||||||
],
|
|
||||||
"intelliSenseMode": "gcc-x86"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"version": 4
|
|
||||||
}
|
|
||||||
-29
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "Debug",
|
|
||||||
"type": "gdb",
|
|
||||||
"request": "attach",
|
|
||||||
"target": "localhost:3333",
|
|
||||||
"remote": true,
|
|
||||||
"cwd": "${workspaceRoot}",
|
|
||||||
"valuesFormatting": "parseText",
|
|
||||||
"stopAtConnect": true,
|
|
||||||
"gdbpath": "gdb-multiarch",
|
|
||||||
"windows": {
|
|
||||||
"gdbpath": "gdb-multiarch.exe"
|
|
||||||
},
|
|
||||||
"osx": {
|
|
||||||
"gdbpath": "gdb"
|
|
||||||
},
|
|
||||||
"executable": "${workspaceRoot}/${workspaceRootFolderName}.elf",
|
|
||||||
"autorun": [
|
|
||||||
"monitor reset shellhalt",
|
|
||||||
"load ${workspaceRootFolderName}.elf",
|
|
||||||
"tbreak main",
|
|
||||||
"continue"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"files.associations": {
|
|
||||||
"*.rmd": "markdown",
|
|
||||||
"*.s": "armips",
|
|
||||||
"stdlib.h": "c",
|
|
||||||
"libgte.h": "c",
|
|
||||||
"libgpu.h": "c",
|
|
||||||
"libetc.h": "c"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-37
@@ -1,37 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "2.0.0",
|
|
||||||
"tasks": [
|
|
||||||
{
|
|
||||||
"label": "Build Debug",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "make BUILD=Debug",
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": true
|
|
||||||
},
|
|
||||||
"problemMatcher": [
|
|
||||||
"$gcc"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Build Release",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "make",
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": true
|
|
||||||
},
|
|
||||||
"problemMatcher": [
|
|
||||||
"$gcc"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Clean",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "make clean",
|
|
||||||
"group": {
|
|
||||||
"kind": "build"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
TARGET = SpinningCube
|
|
||||||
TYPE = ps-exe
|
|
||||||
|
|
||||||
SRCS = \
|
|
||||||
third_party/nugget/common/crt0/crt0.s \
|
|
||||||
main.c
|
|
||||||
|
|
||||||
CPPFLAGS += -Ithird_party/psyq-iwyu/include
|
|
||||||
LDFLAGS += -Lthird_party/psyq/lib
|
|
||||||
LDFLAGS += -Wl,--start-group
|
|
||||||
LDFLAGS += -lapi
|
|
||||||
LDFLAGS += -lc
|
|
||||||
LDFLAGS += -lc2
|
|
||||||
LDFLAGS += -lcard
|
|
||||||
LDFLAGS += -lcd
|
|
||||||
LDFLAGS += -lcomb
|
|
||||||
LDFLAGS += -lds
|
|
||||||
LDFLAGS += -letc
|
|
||||||
LDFLAGS += -lgpu
|
|
||||||
LDFLAGS += -lgs
|
|
||||||
LDFLAGS += -lgte
|
|
||||||
LDFLAGS += -lgun
|
|
||||||
LDFLAGS += -lhmd
|
|
||||||
LDFLAGS += -lmath
|
|
||||||
LDFLAGS += -lmcrd
|
|
||||||
LDFLAGS += -lmcx
|
|
||||||
LDFLAGS += -lpad
|
|
||||||
LDFLAGS += -lpress
|
|
||||||
LDFLAGS += -lsio
|
|
||||||
LDFLAGS += -lsnd
|
|
||||||
LDFLAGS += -lspu
|
|
||||||
LDFLAGS += -ltap
|
|
||||||
LDFLAGS += -Wl,--end-group
|
|
||||||
|
|
||||||
include third_party/nugget/common.mk
|
|
||||||
@@ -1,233 +0,0 @@
|
|||||||
# --- Toolchain Definition ---
|
|
||||||
# Assumes 'mipsel-none-elf' toolchain is in your system's PATH.
|
|
||||||
$Prefix = "mipsel-none-elf"
|
|
||||||
$Compiler = "$($Prefix)-gcc"
|
|
||||||
$Objcopy = "$($Prefix)-objcopy"
|
|
||||||
|
|
||||||
# --- Abstracted GCC/MIPS Flags ---
|
|
||||||
|
|
||||||
# General Compiler Flags
|
|
||||||
$f_compile = "-c"
|
|
||||||
$f_debug = "-g"
|
|
||||||
$f_define = "-D"
|
|
||||||
$f_include = "-I"
|
|
||||||
$f_output = "-o"
|
|
||||||
$f_std_c11 = "-std=c11"
|
|
||||||
|
|
||||||
# Warning Flags
|
|
||||||
$f_wall = "-Wall"
|
|
||||||
$f_wno_attributes = "-Wno-attributes"
|
|
||||||
|
|
||||||
# Optimization Flags
|
|
||||||
$f_optimize_none = "-O0" # For Debug builds
|
|
||||||
$f_optimize_size = "-Os" # For Release builds
|
|
||||||
$f_omit_frame_ptr = "-fomit-frame-pointer"
|
|
||||||
|
|
||||||
# Environment & Standard Library Flags
|
|
||||||
$f_no_stdlib = "-nostdlib"
|
|
||||||
$f_freestanding = "-ffreestanding"
|
|
||||||
$f_no_builtin = "-fno-builtin"
|
|
||||||
|
|
||||||
# MIPS Architecture Specific Flags
|
|
||||||
$f_arch_mips1 = "-march=mips1"
|
|
||||||
$f_arch_abi32 = "-mabi=32"
|
|
||||||
$f_arch_little_endian = "-EL"
|
|
||||||
$f_arch_fp32 = "-mfp32"
|
|
||||||
$f_arch_no_pic = "-fno-pic"
|
|
||||||
$f_arch_no_shared = "-mno-shared"
|
|
||||||
$f_arch_no_abicalls = "-mno-abicalls"
|
|
||||||
$f_arch_no_llsc = "-mno-llsc"
|
|
||||||
$f_arch_no_gpopt = "-mno-gpopt"
|
|
||||||
$f_arch_no_stack_prot = "-fno-stack-protector"
|
|
||||||
|
|
||||||
# Linker-related Flags (for Compiler)
|
|
||||||
$f_code_sections = "-ffunction-sections"
|
|
||||||
$f_data_sections = "-fdata-sections"
|
|
||||||
$f_no_strict_alias = "-fno-strict-aliasing"
|
|
||||||
|
|
||||||
# Linker Flags (passed via -Wl,)
|
|
||||||
$f_link_pass_through_prefix = "-Wl,"
|
|
||||||
$f_link_mapfile = "-Map=" # Usage: $flag_link_pass_through_prefix + $flag_link_mapfile + path
|
|
||||||
$f_link_gc_sections = "--gc-sections"
|
|
||||||
$f_link_format = "--oformat="
|
|
||||||
$f_link_start_group = "--start-group"
|
|
||||||
$f_link_end_group = "--end-group"
|
|
||||||
$f_link_static = "-static"
|
|
||||||
$f_link_script = "-T"
|
|
||||||
$f_link_lib_path = "-L"
|
|
||||||
$f_link_lib = "-l"
|
|
||||||
|
|
||||||
# Objcopy Flags
|
|
||||||
$f_objcopy_format = "-O"
|
|
||||||
|
|
||||||
# --- Project Configuration ---
|
|
||||||
$path_root = $PSScriptRoot
|
|
||||||
|
|
||||||
$path_build = join-path $path_root 'build'
|
|
||||||
$path_third_party = join-path $path_root 'third_party'
|
|
||||||
$path_nugget = join-path $path_third_party 'nugget'
|
|
||||||
$path_psyq = join-path $path_third_party 'psyq'
|
|
||||||
$path_psyq_imyu = join-path $path_third_party 'psyq-iwyu'
|
|
||||||
|
|
||||||
if (-not (test-path $path_build)) {
|
|
||||||
new-item -ItemType Directory -Path $path_build | Out-Null
|
|
||||||
}
|
|
||||||
|
|
||||||
$path_nugget_common = join-path $path_nugget 'common'
|
|
||||||
|
|
||||||
$unit_nugget_crt0 = join-path $path_nugget_common 'crt0/crt0.s'
|
|
||||||
$unit_main = join-path $path_root 'main.c'
|
|
||||||
$units = @(
|
|
||||||
$unit_nugget_crt0,
|
|
||||||
$unit_main
|
|
||||||
)
|
|
||||||
|
|
||||||
write-host "--- Compiling Source Files ---" -ForegroundColor Cyan
|
|
||||||
|
|
||||||
$compile_args_c = @()
|
|
||||||
$compile_args_c += $f_debug
|
|
||||||
$compile_args_c += $f_optimize_none
|
|
||||||
# $compile_args_c += $f_optimize_size
|
|
||||||
|
|
||||||
$compile_args_c += $f_code_sections
|
|
||||||
$compile_args_c += $f_data_sections
|
|
||||||
|
|
||||||
$compile_args_c += $f_wno_attributes
|
|
||||||
$compile_args_c += $f_freestanding
|
|
||||||
$compile_args_c += $f_omit_frame_ptr
|
|
||||||
$compile_args_c += $f_no_builtin
|
|
||||||
$compile_args_c += $f_no_stdlib
|
|
||||||
$compile_args_c += $f_no_strict_alias
|
|
||||||
$compile_args_c += @(
|
|
||||||
$f_arch_mips1,
|
|
||||||
$f_arch_abi32,
|
|
||||||
$f_arch_fp32,
|
|
||||||
$f_arch_little_endian,
|
|
||||||
$f_arch_no_abicalls,
|
|
||||||
$f_arch_no_gpopt,
|
|
||||||
$f_arch_no_pic,
|
|
||||||
$f_arch_no_llsc,
|
|
||||||
$f_arch_no_shared,
|
|
||||||
$f_arch_no_stack_prot
|
|
||||||
)
|
|
||||||
|
|
||||||
$path_psyq_imyu_inc = join-path $path_psyq_imyu 'include'
|
|
||||||
$compile_args_c += ($f_include + $path_psyq_imyu_inc)
|
|
||||||
$compile_args_c += ($f_include + $path_nugget)
|
|
||||||
|
|
||||||
$compile_args_asm = @()
|
|
||||||
$compile_args_asm += $f_debug
|
|
||||||
$compile_args_asm += @(
|
|
||||||
$f_arch_mips1,
|
|
||||||
$f_arch_abi32,
|
|
||||||
$f_arch_fp32,
|
|
||||||
$f_arch_little_endian,
|
|
||||||
$f_arch_no_abicalls,
|
|
||||||
$f_arch_no_pic,
|
|
||||||
$f_arch_no_llsc,
|
|
||||||
$f_arch_no_shared,
|
|
||||||
$f_arch_no_stack_prot
|
|
||||||
)
|
|
||||||
$compile_args_asm += $f_no_stdlib
|
|
||||||
$compile_args_asm += $f_freestanding
|
|
||||||
$compile_args_asm += ($f_include + $path_nugget)
|
|
||||||
|
|
||||||
$link_modules = @()
|
|
||||||
foreach ($unit in $units) {
|
|
||||||
$base_name = [System.IO.Path]::GetFileNameWithoutExtension($unit)
|
|
||||||
$extension = [System.IO.Path]::GetExtension($unit)
|
|
||||||
$link_module = join-path $path_build "$($base_name).o"
|
|
||||||
$link_modules += $link_module
|
|
||||||
|
|
||||||
$module_compile_args = @()
|
|
||||||
if ($extension -eq ".c") { $module_compile_args = $compile_args_c }
|
|
||||||
elseif ($extension -eq ".s") { $module_compile_args = $compile_args_asm }
|
|
||||||
else { write-error "Unsupported file type: $unit"; exit 1 }
|
|
||||||
|
|
||||||
$module_compile_args = @($module_compile_args) + $f_compile, $unit, ($f_output + $link_module)
|
|
||||||
|
|
||||||
write-host "Compiling '$($unit)' -> '$($base_name).o'"
|
|
||||||
$module_compile_args | ForEach-Object { Write-Host "`t$_" -ForegroundColor Green }
|
|
||||||
& $Compiler $module_compile_args
|
|
||||||
if ($LASTEXITCODE -ne 0) { write-error "Compilation failed for $unit. Aborting."; exit 1 }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
write-host "`n--- Linking Modules ---" -ForegroundColor Cyan
|
|
||||||
|
|
||||||
$link_args = @()
|
|
||||||
$link_args += $f_debug
|
|
||||||
# $link_args += $f_optimize_size
|
|
||||||
|
|
||||||
$link_args += $f_no_stdlib
|
|
||||||
$link_args += $f_link_static
|
|
||||||
|
|
||||||
$link_args += $f_arch_mips1
|
|
||||||
$link_args += $f_arch_abi32
|
|
||||||
$link_args += $f_arch_little_endian
|
|
||||||
|
|
||||||
$link_args += ($f_link_pass_through_prefix + $f_link_gc_sections)
|
|
||||||
$link_args += ($f_link_pass_through_prefix + $f_link_format + "elf32-littlemips")
|
|
||||||
|
|
||||||
$linkscript_nugget = join-path $path_nugget 'nooverlay.ld'
|
|
||||||
$linkscript_ps_exe = join-path $path_nugget "ps-exe.ld"
|
|
||||||
$link_args += ($f_link_script + $linkscript_nugget)
|
|
||||||
$link_args += ($f_link_script + $linkscript_ps_exe)
|
|
||||||
|
|
||||||
$path_psyq_lib = join-path $path_psyq 'lib'
|
|
||||||
$link_args += ($f_link_lib_path + $path_psyq_lib)
|
|
||||||
|
|
||||||
$link_args += $link_modules
|
|
||||||
|
|
||||||
$map = join-path $path_build 'SpinningCube.map'
|
|
||||||
$link_args += ($f_link_pass_through_prefix + $f_link_mapfile + $map)
|
|
||||||
|
|
||||||
$link_args += ($f_link_pass_through_prefix + $f_link_start_group)
|
|
||||||
$libraries = @(
|
|
||||||
"api",
|
|
||||||
"c",
|
|
||||||
"c2",
|
|
||||||
"card",
|
|
||||||
"cd",
|
|
||||||
"comb",
|
|
||||||
"ds",
|
|
||||||
"etc",
|
|
||||||
"gpu",
|
|
||||||
"gs",
|
|
||||||
"gte",
|
|
||||||
"gun",
|
|
||||||
"hmd",
|
|
||||||
"math",
|
|
||||||
"mcrd",
|
|
||||||
"mcx",
|
|
||||||
"pad",
|
|
||||||
"press",
|
|
||||||
"sio",
|
|
||||||
"snd",
|
|
||||||
"spu",
|
|
||||||
"tap"
|
|
||||||
)
|
|
||||||
foreach ($lib in $libraries) {
|
|
||||||
$link_args += ($f_link_lib + $lib)
|
|
||||||
}
|
|
||||||
|
|
||||||
$elf = Join-Path $path_build "SpinningCube.elf"
|
|
||||||
$final_link_args = @($link_args) + ($f_output + $elf)
|
|
||||||
|
|
||||||
write-host "Linking modules into 'SpinningCube.elf'"
|
|
||||||
$final_link_args += ($f_link_pass_through_prefix + $f_link_end_group)
|
|
||||||
$final_link_args | foreach-object { write-host $_ }
|
|
||||||
& $Compiler $final_link_args
|
|
||||||
if ($LASTEXITCODE -ne 0) { write-error "Linking failed. Aborting."; exit 1 }
|
|
||||||
|
|
||||||
|
|
||||||
Write-Host "`n--- Creating Final Binary ---" -ForegroundColor Cyan
|
|
||||||
$exe = join-path $path_build "SpinningCube.ps-exe"
|
|
||||||
|
|
||||||
write-host "Converting ELF to PS-EXE -> 'SpinningCube.ps-exe'"
|
|
||||||
$objcopy_args = ($f_objcopy_format + "binary"), $elf, $exe
|
|
||||||
& $Objcopy $objcopy_args
|
|
||||||
if ($LASTEXITCODE -ne 0) { Write-Error "Objcopy failed. Aborting."; exit 1 }
|
|
||||||
|
|
||||||
write-host "`nBuild successful!" -ForegroundColor Green
|
|
||||||
write-host "Output: $exe"
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
-m32
|
|
||||||
-I.
|
|
||||||
-Ithird_party/nugget
|
|
||||||
-Ithird_party/psyq-iwyu/include
|
|
||||||
@@ -1,127 +0,0 @@
|
|||||||
#include <libetc.h>
|
|
||||||
#include <libgpu.h>
|
|
||||||
#include <libgte.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a)))
|
|
||||||
|
|
||||||
#define OTSIZE 4096
|
|
||||||
#define SCREEN_Z 512
|
|
||||||
#define CUBESIZE 196
|
|
||||||
|
|
||||||
typedef struct DB {
|
|
||||||
DRAWENV draw;
|
|
||||||
DISPENV disp;
|
|
||||||
u_long ot[OTSIZE];
|
|
||||||
POLY_F4 s[6];
|
|
||||||
} DB;
|
|
||||||
|
|
||||||
static SVECTOR cube_vertices[] = {
|
|
||||||
{-CUBESIZE / 2, -CUBESIZE / 2, -CUBESIZE / 2, 0}, {CUBESIZE / 2, -CUBESIZE / 2, -CUBESIZE / 2, 0},
|
|
||||||
{CUBESIZE / 2, CUBESIZE / 2, -CUBESIZE / 2, 0}, {-CUBESIZE / 2, CUBESIZE / 2, -CUBESIZE / 2, 0},
|
|
||||||
{-CUBESIZE / 2, -CUBESIZE / 2, CUBESIZE / 2, 0}, {CUBESIZE / 2, -CUBESIZE / 2, CUBESIZE / 2, 0},
|
|
||||||
{CUBESIZE / 2, CUBESIZE / 2, CUBESIZE / 2, 0}, {-CUBESIZE / 2, CUBESIZE / 2, CUBESIZE / 2, 0},
|
|
||||||
};
|
|
||||||
|
|
||||||
static int cube_indices[] = {
|
|
||||||
0, 1, 2, 3, 1, 5, 6, 2, 5, 4, 7, 6, 4, 0, 3, 7, 4, 5, 1, 0, 6, 7, 3, 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void init_cube(DB *db, CVECTOR *col) {
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(db->s); ++i) {
|
|
||||||
SetPolyF4(&db->s[i]);
|
|
||||||
setRGB0(&db->s[i], col[i].r, col[i].g, col[i].b);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void add_cube(u_long *ot, POLY_F4 *s, MATRIX *transform) {
|
|
||||||
long p, otz, flg;
|
|
||||||
int nclip;
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
SetRotMatrix(transform);
|
|
||||||
SetTransMatrix(transform);
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(cube_indices); i += 4, ++s) {
|
|
||||||
nclip = RotAverageNclip4(&cube_vertices[cube_indices[i + 0]], &cube_vertices[cube_indices[i + 1]],
|
|
||||||
&cube_vertices[cube_indices[i + 2]], &cube_vertices[cube_indices[i + 3]],
|
|
||||||
(long *)&s->x0, (long *)&s->x1, (long *)&s->x3, (long *)&s->x2, &p, &otz, &flg);
|
|
||||||
|
|
||||||
if (nclip <= 0) continue;
|
|
||||||
|
|
||||||
if ((otz > 0) && (otz < OTSIZE)) AddPrim(&ot[otz], s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
DB db[2];
|
|
||||||
DB *cdb;
|
|
||||||
SVECTOR rotation = {0};
|
|
||||||
VECTOR translation = {0, 0, (SCREEN_Z * 3) / 2, 0};
|
|
||||||
MATRIX transform;
|
|
||||||
CVECTOR col[6];
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
ResetGraph(0);
|
|
||||||
InitGeom();
|
|
||||||
|
|
||||||
SetGraphDebug(0);
|
|
||||||
|
|
||||||
FntLoad(960, 256);
|
|
||||||
SetDumpFnt(FntOpen(32, 32, 320, 64, 0, 512));
|
|
||||||
|
|
||||||
SetGeomOffset(320, 240);
|
|
||||||
SetGeomScreen(SCREEN_Z);
|
|
||||||
|
|
||||||
SetDefDrawEnv(&db[0].draw, 0, 0, 640, 480);
|
|
||||||
SetDefDrawEnv(&db[1].draw, 0, 0, 640, 480);
|
|
||||||
SetDefDispEnv(&db[0].disp, 0, 0, 640, 480);
|
|
||||||
SetDefDispEnv(&db[1].disp, 0, 0, 640, 480);
|
|
||||||
|
|
||||||
srand(0);
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(col); ++i) {
|
|
||||||
col[i].r = rand();
|
|
||||||
col[i].g = rand();
|
|
||||||
col[i].b = rand();
|
|
||||||
}
|
|
||||||
|
|
||||||
init_cube(&db[0], col);
|
|
||||||
init_cube(&db[1], col);
|
|
||||||
|
|
||||||
SetDispMask(1);
|
|
||||||
|
|
||||||
PutDrawEnv(&db[0].draw);
|
|
||||||
PutDispEnv(&db[0].disp);
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
cdb = (cdb == &db[0]) ? &db[1] : &db[0];
|
|
||||||
|
|
||||||
rotation.vy += 16;
|
|
||||||
rotation.vz += 16;
|
|
||||||
|
|
||||||
RotMatrix(&rotation, &transform);
|
|
||||||
TransMatrix(&transform, &translation);
|
|
||||||
|
|
||||||
ClearOTagR(cdb->ot, OTSIZE);
|
|
||||||
|
|
||||||
FntPrint("Code compiled using Psy-Q libraries\n\n");
|
|
||||||
FntPrint("converted by psyq-obj-parser\n\n");
|
|
||||||
FntPrint("PCSX-Redux project\n\n");
|
|
||||||
FntPrint("https://bit.ly/pcsx-redux");
|
|
||||||
|
|
||||||
add_cube(cdb->ot, cdb->s, &transform);
|
|
||||||
|
|
||||||
DrawSync(0);
|
|
||||||
VSync(0);
|
|
||||||
|
|
||||||
ClearImage(&cdb->draw.clip, 60, 120, 120);
|
|
||||||
|
|
||||||
DrawOTag(&cdb->ot[OTSIZE - 1]);
|
|
||||||
FntFlush(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# PSX.DEV Sample Code
|
|
||||||
|
|
||||||
Uses the vscode extension to setup a working C project with a pcsx-redux instance used with GDB server functionality.
|
|
||||||
Everything is built currently with make files which I want to simplify to not requiring if possible...
|
|
||||||
My goal was to do the pikuma course mostly in assembly with some sys calls to help but now this is in the way..
|
|
||||||
@@ -4,4 +4,9 @@ $path_code = join-path $path_root 'code'
|
|||||||
$path_scripts = join-path $path_root 'scripts'
|
$path_scripts = join-path $path_root 'scripts'
|
||||||
$path_toolchain = join-path $path_root 'toolchain'
|
$path_toolchain = join-path $path_root 'toolchain'
|
||||||
|
|
||||||
# TODO(Ed): Custom hookup to launching pcsx-redux for hooking up to vscode with gdb server?
|
$path_pcsx_redux = join-path $path_toolchain 'pcsx-redux'
|
||||||
|
$path_pcsx_redux_vsprojects = join-path $path_pcsx_redux 'vsprojects'
|
||||||
|
$path_pcsx_redux_binaries = join-path $path_pcsx_redux_vsprojects 'x64/Release'
|
||||||
|
|
||||||
|
$pcsx_redux = join-path $path_pcsx_redux_binaries 'pcsx-redux.exe'
|
||||||
|
& $pcsx_redux
|
||||||
|
|||||||
Reference in New Issue
Block a user