diff options
| author | spicyjpeg <thatspicyjpeg@gmail.com> | 2022-10-19 14:15:28 +0200 |
|---|---|---|
| committer | spicyjpeg <thatspicyjpeg@gmail.com> | 2022-10-19 14:15:28 +0200 |
| commit | 783014e53254fe17102a34c30120eeabf5227a47 (patch) | |
| tree | 6c3e498295ddd293769b85e7b7cbecd80ce32be7 | |
| parent | e08a3d9366f8ca14a76b3dd569dac1fb9f569748 (diff) | |
| download | psn00bsdk-783014e53254fe17102a34c30120eeabf5227a47.tar.gz | |
Clean up SDK debug logging, fix getTPage()
| -rw-r--r-- | CHANGELOG.md | 14 | ||||
| -rw-r--r-- | examples/graphics/gte/main.c | 6 | ||||
| -rw-r--r-- | libpsn00b/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | libpsn00b/cmake/internal_setup.cmake | 2 | ||||
| -rw-r--r-- | libpsn00b/include/assert.h | 25 | ||||
| -rw-r--r-- | libpsn00b/include/psxetc.h | 15 | ||||
| -rw-r--r-- | libpsn00b/include/psxgpu.h | 105 | ||||
| -rw-r--r-- | libpsn00b/libc/_start.s | 18 | ||||
| -rw-r--r-- | libpsn00b/libc/_stubs.s | 27 | ||||
| -rw-r--r-- | libpsn00b/libc/abort.c | 21 | ||||
| -rw-r--r-- | libpsn00b/psxcd/getsector.c | 4 | ||||
| -rw-r--r-- | libpsn00b/psxcd/isofs.c | 109 | ||||
| -rw-r--r-- | libpsn00b/psxcd/psxcd.c | 10 | ||||
| -rw-r--r-- | libpsn00b/psxetc/dl.c | 52 | ||||
| -rw-r--r-- | libpsn00b/psxgpu/common.c | 22 | ||||
| -rw-r--r-- | libpsn00b/psxgpu/image.c | 6 | ||||
| -rw-r--r-- | libpsn00b/psxpress/mdec.c | 12 | ||||
| -rw-r--r-- | libpsn00b/psxspu/common.c | 8 |
18 files changed, 255 insertions, 205 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 461d2b8..fb40eb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,19 @@ to ensure the changelog can be parsed correctly. ------------------------------------------------------------------------------- -## 2022-10-16: 0.21 +## 2022-10-19: 0.21 + +spicyjpeg: + +- libpsn00b: Cleaned up the internal logging system. + +- psxgpu: Added `MoveImage()` as well as `MoveImage2()`, `LoadImage2()` and + `StoreImage2()`. `LoadImage()` and `StoreImage()` now make use of the + library's internal drawing queue instead of blocking. Added `EnqueueDrawOp()` + for more advanced control of the drawing queue. The `getTPage()` macro now + supports extended Y coordinates (512-1023) on systems with 2 MB of VRAM. + +## 2022-10-16 spicyjpeg: diff --git a/examples/graphics/gte/main.c b/examples/graphics/gte/main.c index 6907c84..3c85d84 100644 --- a/examples/graphics/gte/main.c +++ b/examples/graphics/gte/main.c @@ -100,9 +100,9 @@ INDEX cube_indices[] = { /* source color when using gte_nccs(). 4096 is 1.0 in this matrix */ /* A column of zeroes disables the light source. */ MATRIX color_mtx = { - ONE / 2, 0, 0, /* Red */ - ONE / 2, 0, 0, /* Green */ - ONE / 2, 0, 0 /* Blue */ + ONE * 3/4, 0, 0, /* Red */ + ONE * 3/4, 0, 0, /* Green */ + ONE * 3/4, 0, 0 /* Blue */ }; /* Light matrix */ diff --git a/libpsn00b/CMakeLists.txt b/libpsn00b/CMakeLists.txt index 602b3c8..a6b6df3 100644 --- a/libpsn00b/CMakeLists.txt +++ b/libpsn00b/CMakeLists.txt @@ -48,6 +48,8 @@ foreach(_library IN LISTS PSN00BSDK_LIBRARIES) ${_library} INTERFACE $<$<STREQUAL:$<UPPER_CASE:$<TARGET_PROPERTY:PSN00BSDK_TARGET_TYPE>>,${_type}>:${_name}> ) + + target_compile_definitions(${_name} PRIVATE SDK_LIBRARY_NAME="${_library}") endforeach() endforeach() @@ -102,6 +104,6 @@ install( # once the debug and release builds are merged into the same installation tree. install( EXPORT libpsn00b - DESTINATION ${CMAKE_INSTALL_LIBDIR}/libpsn00b + DESTINATION ${CMAKE_INSTALL_LIBDIR}/libpsn00b/cmake #EXPORT_LINK_INTERFACE_LIBRARIES ) diff --git a/libpsn00b/cmake/internal_setup.cmake b/libpsn00b/cmake/internal_setup.cmake index e78355f..b21451e 100644 --- a/libpsn00b/cmake/internal_setup.cmake +++ b/libpsn00b/cmake/internal_setup.cmake @@ -34,7 +34,7 @@ if(NOT DEFINED PSN00BSDK_VERSION) string(JSON PSN00BSDK_GIT_COMMIT GET ${_json} git_commit) endif() -include(${CMAKE_CURRENT_LIST_DIR}/../libpsn00b.cmake OPTIONAL) +include(${CMAKE_CURRENT_LIST_DIR}/libpsn00b.cmake OPTIONAL) if(TARGET psn00bsdk) link_libraries(psn00bsdk) endif() diff --git a/libpsn00b/include/assert.h b/libpsn00b/include/assert.h index 32301e2..eabe369 100644 --- a/libpsn00b/include/assert.h +++ b/libpsn00b/include/assert.h @@ -1,20 +1,33 @@ /* - * PSn00bSDK assert macro + * PSn00bSDK assert macro and internal logging * (C) 2022 spicyjpeg - MPL licensed + * + * Note that the _sdk_log() macro is used internally by PSn00bSDK to output + * debug messages and warnings. */ #ifndef __ASSERT_H #define __ASSERT_H -void _assert_abort(const char *file, int line, const char *expr); - #ifdef NDEBUG -#define assert(x) + +#define assert(expr) +#define _sdk_log(fmt, ...) + #else + +void _assert_abort(const char *file, int line, const char *expr); +void _sdk_log_inner(const char *fmt, ...); + #define assert(expr) { \ - if (!(expr)) \ - _assert_abort(__FILE__, __LINE__, #expr); \ + if (!(expr)) _assert_abort(__FILE__, __LINE__, #expr); \ } +#ifdef SDK_LIBRARY_NAME +#define _sdk_log(fmt, ...) _sdk_log_inner(SDK_LIBRARY_NAME ": " fmt, ##__VA_ARGS__) +#else +#define _sdk_log(fmt, ...) _sdk_log_inner(fmt, ##__VA_ARGS__) +#endif + #endif #endif diff --git a/libpsn00b/include/psxetc.h b/libpsn00b/include/psxetc.h index fcfec06..24485d9 100644 --- a/libpsn00b/include/psxetc.h +++ b/libpsn00b/include/psxetc.h @@ -6,27 +6,12 @@ #ifndef __PSXETC_H #define __PSXETC_H -/* Macros */ - -// This macro is used internally by PSn00bSDK to log debug messages to a buffer -// which is then printed to stdout when calling VSync(). -#ifdef NDEBUG -#define _sdk_log(...) -#define _sdk_dump_log() -#else -#define _sdk_log(...) _sdk_log_inner(__VA_ARGS__) -#define _sdk_dump_log() _sdk_dump_log_inner() -#endif - /* Public API */ #ifdef __cplusplus extern "C" { #endif -void _sdk_log_inner(const char *fmt, ...); -void _sdk_dump_log_inner(void); - void *InterruptCallback(int irq, void (*func)(void)); void *GetInterruptCallback(int irq); void *DMACallback(int dma, void (*func)(void)); diff --git a/libpsn00b/include/psxgpu.h b/libpsn00b/include/psxgpu.h index f2568b0..68e3bff 100644 --- a/libpsn00b/include/psxgpu.h +++ b/libpsn00b/include/psxgpu.h @@ -31,65 +31,65 @@ typedef enum _GPU_VideoMode { /* Structure macros */ #define setVector(v, _x, _y, _z) \ - (v)->vx = _x, (v)->vy = _y, (v)->vz = _z + (v)->vx = (_x), (v)->vy = (_y), (v)->vz = (_z) #define setRECT(v, _x, _y, _w, _h) \ - (v)->x = _x, (v)->y = _y, (v)->w = _w, (v)->h = _h + (v)->x = (_x), (v)->y = (_y), (v)->w = (_w), (v)->h = (_h) #define setTPage(p, tp, abr, x, y) ((p)->tpage = getTPage(tp, abr, x, y)) #define setClut(p, x, y) ((p)->clut = getClut(x, y)) -#define setRGB0(p, r, g, b) ((p)->r0 = r, (p)->g0 = g, (p)->b0 = b) -#define setRGB1(p, r, g, b) ((p)->r1 = r, (p)->g1 = g, (p)->b1 = b) -#define setRGB2(p, r, g, b) ((p)->r2 = r, (p)->g2 = g, (p)->b2 = b) -#define setRGB3(p, r, g, b) ((p)->r3 = r, (p)->g3 = g, (p)->b3 = b) +#define setRGB0(p, r, g, b) ((p)->r0 = (r), (p)->g0 = (g), (p)->b0 = (b)) +#define setRGB1(p, r, g, b) ((p)->r1 = (r), (p)->g1 = (g), (p)->b1 = (b)) +#define setRGB2(p, r, g, b) ((p)->r2 = (r), (p)->g2 = (g), (p)->b2 = (b)) +#define setRGB3(p, r, g, b) ((p)->r3 = (r), (p)->g3 = (g), (p)->b3 = (b)) #define setXY0(p, _x0, _y0) \ - (p)->x0 = _x0, (p)->y0 = _y0 + (p)->x0 = (_x0), (p)->y0 = (_y0) #define setXY2(p, _x0, _y0, _x1, _y1) \ - (p)->x0 = _x0, (p)->y0 = _y0, \ - (p)->x1 = _x1, (p)->y1 = _y1 + (p)->x0 = (_x0), (p)->y0 = (_y0), \ + (p)->x1 = (_x1), (p)->y1 = (_y1) #define setXY3(p, _x0, _y0, _x1, _y1, _x2, _y2) \ - (p)->x0 = _x0, (p)->y0 = _y0, \ - (p)->x1 = _x1, (p)->y1 = _y1, \ - (p)->x2 = _x2, (p)->y2 = _y2 + (p)->x0 = (_x0), (p)->y0 = (_y0), \ + (p)->x1 = (_x1), (p)->y1 = (_y1), \ + (p)->x2 = (_x2), (p)->y2 = (_y2) #define setXY4(p, _x0, _y0, _x1, _y1, _x2, _y2, _x3, _y3) \ - (p)->x0 = _x0, (p)->y0 = _y0, \ - (p)->x1 = _x1, (p)->y1 = _y1, \ - (p)->x2 = _x2, (p)->y2 = _y2, \ - (p)->x3 = _x3, (p)->y3 = _y3 + (p)->x0 = (_x0), (p)->y0 = (_y0), \ + (p)->x1 = (_x1), (p)->y1 = (_y1), \ + (p)->x2 = (_x2), (p)->y2 = (_y2), \ + (p)->x3 = (_x3), (p)->y3 = (_y3) #define setWH(p, _w, _h) \ - (p)->w = _w, (p)->h = _h + (p)->w = (_w), (p)->h = (_h) #define setXYWH(p, _x0, _y0, _w, _h) \ - (p)->x0 = _x0, (p)->y0 = _y0, \ - (p)->x1 = (_x0 + (_w)), (p)->y1 = _y0, \ - (p)->x2 = _x0, (p)->y2 = (_y0 + (_h)), \ - (p)->x3 = (_x0 + (_w)), (p)->y3 = (_y0 + (_h)) + (p)->x0 = (_x0), (p)->y0 = (_y0), \ + (p)->x1 = ((_x0) + (_w)), (p)->y1 = (_y0), \ + (p)->x2 = (_x0), (p)->y2 = ((_y0) + (_h)), \ + (p)->x3 = ((_x0) + (_w)), (p)->y3 = ((_y0) + (_h)) #define setUV0(p, _u0, _v0) \ - (p)->u0 = _u0, (p)->v0 = _v0 + (p)->u0 = (_u0), (p)->v0 = (_v0) #define setUV3(p, _u0, _v0, _u1, _v1, _u2, _v2) \ - (p)->u0 = _u0, (p)->v0 = _v0, \ - (p)->u1 = _u1, (p)->v1 = _v1, \ - (p)->u2 = _u2, (p)->v2 = _v2 + (p)->u0 = (_u0), (p)->v0 = (_v0), \ + (p)->u1 = (_u1), (p)->v1 = (_v1), \ + (p)->u2 = (_u2), (p)->v2 = (_v2) #define setUV4(p, _u0, _v0, _u1, _v1, _u2, _v2, _u3, _v3) \ - (p)->u0 = _u0, (p)->v0 = _v0, \ - (p)->u1 = _u1, (p)->v1 = _v1, \ - (p)->u2 = _u2, (p)->v2 = _v2, \ - (p)->u3 = _u3, (p)->v3 = _v3 + (p)->u0 = (_u0), (p)->v0 = (_v0), \ + (p)->u1 = (_u1), (p)->v1 = (_v1), \ + (p)->u2 = (_u2), (p)->v2 = (_v2), \ + (p)->u3 = (_u3), (p)->v3 = (_v3) #define setUVWH(p, _u0, _v0, _w, _h) \ - (p)->u0 = _u0, (p)->v0 = _v0, \ - (p)->u1 = (_u0 + (_w)), (p)->v1 = _v0, \ - (p)->u2 = _u0, (p)->v2 = (_v0 + (_h)), \ - (p)->u3 = (_u0 + (_w)), (p)->v3 = (_v0 + (_h)) + (p)->u0 = (_u0), (p)->v0 = (_v0), \ + (p)->u1 = ((_u0) + (_w)), (p)->v1 = (_v0), \ + (p)->u2 = (_u0), (p)->v2 = ((_v0) + (_h)), \ + (p)->u3 = ((_u0) + (_w)), (p)->v3 = ((_v0) + (_h)) /* Primitive handling macros */ @@ -113,8 +113,13 @@ typedef enum _GPU_VideoMode { #define setShadeTex(p, tge) \ ((tge) ? (getcode(p) |= 1) : (getcode(p) &= ~1)) -#define getTPage(tp, abr, x, y) \ - ((((x) & 0x3ff) >> 6) | (((y) >> 8) << 4) | (((abr) & 3) << 5) | (((tp) & 3) << 7)) +#define getTPage(tp, abr, x, y) ( \ + (((x) / 64) & 15) | \ + ((((y) / 256) & 1) << 4) | \ + (((abr) & 3) << 5) | \ + (((tp) & 3) << 7) | \ + ((((y) / 512) & 1) << 11) \ +) #define getClut(x, y) (((y) << 6) | (((x) >> 4) & 0x3f)) @@ -151,24 +156,42 @@ typedef enum _GPU_VideoMode { #define setDrawTPage(p, dfe, dtd, tpage) \ setlen(p, 1), \ - (p)->code[0] = 0xe1000000 | tpage | (dfe << 10) | (dtd << 9) + (p)->code[0] = (0xe1000000 | \ + (tpage) | \ + ((dtd) << 9) | \ + ((dfe) << 10) \ + ) #define setDrawOffset(p, _x, _y) \ setlen(p, 1), \ - (p)->code[0] = 0xe5000000 | (_x & 0x3ff) | ((_y & 0x3ff) << 11) + (p)->code[0] = (0xe5000000 | \ + ((_x) % 1024) | \ + (((_y) % 1024) << 11) \ + ) #define setDrawMask(p, sb, mt) \ setlen(p, 1), \ - (p)->code[0] = 0xe6000000 | sb | (mt << 1) + (p)->code[0] = (0xe6000000 | (sb) | ((mt) << 1)) #define setDrawArea(p, r) \ setlen(p, 2), \ - (p)->code[0] = 0xe3000000 | ((r)->x & 0x3ff) | (((r)->y & 0x1ff) << 10), \ - (p)->code[1] = 0xe4000000 | (((r)->x + (r)->w - 1) & 0x3ff) | ((((r)->y + (r)->h - 1) & 0x1ff) << 10) + (p)->code[0] = (0xe3000000 | \ + ((r)->x % 1024) | \ + (((r)->y % 1024) << 10) \ + ), \ + (p)->code[1] = (0xe4000000 | \ + (((r)->x + (r)->w - 1) % 1024) | \ + ((((r)->y + (r)->h - 1) % 1024) << 10) \ + ) #define setTexWindow(p, r) \ setlen(p, 1), \ - (p)->code[0] = 0xe2000000 | ((r)->w & 0x1f) | (((r)->h & 0x1f) << 5) | (((r)->x & 0x1f) << 10) | (((r)->y & 0x1f) << 15) + (p)->code[0] = (0xe2000000 | \ + ((r)->w % 32) | \ + (((r)->h % 32) << 5) | \ + (((r)->x % 32) << 10) | \ + (((r)->y % 32) << 15) \ + ) /* Primitive structure definitions */ diff --git a/libpsn00b/libc/_start.s b/libpsn00b/libc/_start.s deleted file mode 100644 index 56075c8..0000000 --- a/libpsn00b/libc/_start.s +++ /dev/null @@ -1,18 +0,0 @@ -# PSn00bSDK _start() trampoline -# (C) 2022 spicyjpeg - MPL licensed -# -# This file provides a weak function that can be easily overridden to e.g. set -# $sp or perform additional initialization before the "real" _start() -# (_start_inner()) is called. - -.set noreorder -.section .text - -.global _start -.type _start, @function -.weak _start -_start: - la $gp, _gp - - j _start_inner - nop diff --git a/libpsn00b/libc/_stubs.s b/libpsn00b/libc/_stubs.s new file mode 100644 index 0000000..aa7bfbe --- /dev/null +++ b/libpsn00b/libc/_stubs.s @@ -0,0 +1,27 @@ +# PSn00bSDK _start() trampoline and logging endpoint +# (C) 2022 spicyjpeg - MPL licensed +# +# This file provides a weak function that can be easily overridden to e.g. set +# $sp or perform additional initialization before the "real" _start() function +# (_start_inner()) is called. The _sdk_log_inner() function called by other +# libraries to log debug messages can also be overridden in a similar way. + +.set noreorder + +.section .text._start +.global _start +.type _start, @function +.weak _start +_start: + la $gp, _gp + j _start_inner + nop + +.section .text._sdk_log_inner +.global _sdk_log_inner +.type _sdk_log_inner, @function +.weak _sdk_log_inner +_sdk_log_inner: + li $t2, 0xa0 + jr $t2 + li $t1, 0x3f diff --git a/libpsn00b/libc/abort.c b/libpsn00b/libc/abort.c index 2db5016..9a4661a 100644 --- a/libpsn00b/libc/abort.c +++ b/libpsn00b/libc/abort.c @@ -1,19 +1,24 @@ +/* + * PSn00bSDK assert macro and internal logging + * (C) 2022 spicyjpeg - MPL licensed + */ -#include <psxetc.h> +#include <assert.h> +#include <psxapi.h> -/* Standard abort */ +/* Internal function used by assert() macro */ -void abort(void) { - _sdk_log("abort()\n"); +void _assert_abort(const char *file, int line, const char *expr) { + _sdk_log_inner("%s:%d: assert(%s)\n", file, line, expr); for (;;) __asm__ volatile(""); } -/* Internal function used by assert() macro */ +/* Standard abort */ -void _assert_abort(const char *file, int line, const char *expr) { - _sdk_log("%s:%d: assert(%s)\n", file, line, expr); +void abort(void) { + _sdk_log_inner("abort()\n"); for (;;) __asm__ volatile(""); @@ -22,7 +27,7 @@ void _assert_abort(const char *file, int line, const char *expr) { /* Pure virtual function call (C++) */ void __cxa_pure_virtual(void) { - _sdk_log("__cxa_pure_virtual()\n"); + _sdk_log_inner("__cxa_pure_virtual()\n"); for (;;) __asm__ volatile(""); diff --git a/libpsn00b/psxcd/getsector.c b/libpsn00b/psxcd/getsector.c index 31d0ac7..a214d7a 100644 --- a/libpsn00b/psxcd/getsector.c +++ b/libpsn00b/psxcd/getsector.c @@ -4,7 +4,7 @@ */ #include <stdint.h> -#include <psxetc.h> +#include <assert.h> #include <psxcd.h> #include <hwregs_c.h> @@ -46,6 +46,6 @@ int CdDataSync(int mode) { return 0; } - _sdk_log("psxcd: CdDataSync() timeout\n"); + _sdk_log("CdDataSync() timeout\n"); return -1; } diff --git a/libpsn00b/psxcd/isofs.c b/libpsn00b/psxcd/isofs.c index 0425c0d..cb60152 100644 --- a/libpsn00b/psxcd/isofs.c +++ b/libpsn00b/psxcd/isofs.c @@ -1,10 +1,13 @@ + +#define SDK_LIBRARY_NAME "psxcd/iso" + #include <stdint.h> #include <stdlib.h> #include <string.h> +#include <assert.h> #include <psxgpu.h> #include <psxapi.h> -#include <psxetc.h> -#include "psxcd.h" +#include <psxcd.h> #include "isofs.h" #define DEFAULT_PATH_SEP '\\' @@ -43,7 +46,7 @@ static int _CdReadIsoDescriptor(int session_offs) CdControl(CdlNop, 0, 0); if( (CdStatus()&0x10) ) { - _sdk_log("psxcd: Lid is still open.\n"); + _sdk_log("Lid is still open.\n"); _cd_iso_error = CdlIsoLidOpen; return -1; @@ -58,45 +61,45 @@ static int _CdReadIsoDescriptor(int session_offs) return 0; } - _sdk_log("psxcd: Parsing ISO file system.\n"); + _sdk_log("Parsing ISO file system.\n"); // Seek to volume descriptor CdIntToPos(16+session_offs, &loc); if( !CdControl(CdlSetloc, (uint8_t*)&loc, 0) ) { - _sdk_log("psxcd: Could not set seek destination.\n"); + _sdk_log("Could not set seek destination.\n"); _cd_iso_error = CdlIsoSeekError; return -1; } - _sdk_log("psxcd: Read sectors.\n"); + _sdk_log("Read sectors.\n"); // Read volume descriptor CdRead(1, (uint32_t*)_cd_iso_descriptor_buff, CdlModeSpeed); if( CdReadSync(0, 0) ) { - _sdk_log("psxcd: Error reading ISO volume descriptor.\n"); + _sdk_log("Error reading ISO volume descriptor.\n"); _cd_iso_error = CdlIsoReadError; return -1; } - _sdk_log("psxcd: Read complete.\n"); + _sdk_log("Read complete.\n"); // Verify if volume descriptor is present descriptor = (ISO_DESCRIPTOR*)_cd_iso_descriptor_buff; if( strncmp("CD001", descriptor->header.id, 5) ) { - _sdk_log("psxcd: Disc does not contain a ISO9660 file system.\n"); + _sdk_log("Disc does not contain a ISO9660 file system.\n"); _cd_iso_error = CdlIsoInvalidFs; return -1; } - _sdk_log("psxcd: Path table LBA = %d\n", descriptor->pathTable1Offs); - _sdk_log("psxcd: Path table len = %d\n", descriptor->pathTableSize.lsb); + _sdk_log("Path table LBA = %d\n", descriptor->pathTable1Offs); + _sdk_log("Path table len = %d\n", descriptor->pathTableSize.lsb); // Allocate path table buffer i = ((2047+descriptor->pathTableSize.lsb)>>11)<<11; @@ -106,7 +109,7 @@ static int _CdReadIsoDescriptor(int session_offs) } _cd_iso_pathtable_buff = (uint8_t*)malloc(i); - _sdk_log("psxcd: Allocated %d bytes for path table.\n", i); + _sdk_log("Allocated %d bytes for path table.\n", i); // Read path table CdIntToPos(descriptor->pathTable1Offs, &loc); @@ -114,7 +117,7 @@ static int _CdReadIsoDescriptor(int session_offs) CdRead(i>>11, (uint32_t*)_cd_iso_pathtable_buff, CdlModeSpeed); if( CdReadSync(0, 0) ) { - _sdk_log("psxcd: Error reading ISO path table.\n"); + _sdk_log("Error reading ISO path table.\n"); _cd_iso_error = CdlIsoReadError; return -1; @@ -142,11 +145,11 @@ static int _CdReadIsoDirectory(int lba) CdIntToPos(lba, &loc); i = CdPosToInt(&loc); - _sdk_log("psxcd: Seek to sector %d\n", i); + _sdk_log("Seek to sector %d\n", i); if( !CdControl(CdlSetloc, (uint8_t*)&loc, 0) ) { - _sdk_log("psxcd: Could not set seek destination.\n"); + _sdk_log("Could not set seek destination.\n"); _cd_iso_error = CdlIsoSeekError; return -1; @@ -162,7 +165,7 @@ static int _CdReadIsoDirectory(int lba) CdRead(1, (uint32_t*)_cd_iso_directory_buff, CdlModeSpeed); if( CdReadSync(0, 0) ) { - _sdk_log("psxcd: Error reading initial directory record.\n"); + _sdk_log("Error reading initial directory record.\n"); _cd_iso_error = CdlIsoReadError; return -1; @@ -171,14 +174,14 @@ static int _CdReadIsoDirectory(int lba) direntry = (ISO_DIR_ENTRY*)_cd_iso_directory_buff; _cd_iso_directory_len = direntry->entrySize.lsb; - _sdk_log("psxcd: Location of directory record = %d\n", direntry->entryOffs.lsb); - _sdk_log("psxcd: Size of directory record = %d\n", _cd_iso_directory_len); + _sdk_log("Location of directory record = %d\n", direntry->entryOffs.lsb); + _sdk_log("Size of directory record = %d\n", _cd_iso_directory_len); if( _cd_iso_directory_len > 2048 ) { if( !CdControl(CdlSetloc, (uint8_t*)&loc, 0) ) { - _sdk_log("psxcd: Could not set seek destination.\n"); + _sdk_log("Could not set seek destination.\n"); _cd_iso_error = CdlIsoSeekError; return -1; @@ -188,12 +191,12 @@ static int _CdReadIsoDirectory(int lba) i = ((2047+_cd_iso_directory_len)>>11)<<11; _cd_iso_directory_buff = (uint8_t*)malloc(i); - _sdk_log("psxcd: Allocated %d bytes for directory record.\n", i); + _sdk_log("Allocated %d bytes for directory record.\n", i); CdRead(i>>11, (uint32_t*)_cd_iso_directory_buff, CdlModeSpeed); if( CdReadSync(0, 0) ) { - _sdk_log("psxcd: Error reading remaining directory record.\n"); + _sdk_log("Error reading remaining directory record.\n"); _cd_iso_error = CdlIsoReadError; return -1; @@ -215,7 +218,7 @@ static void dump_directory(void) ISO_DIR_ENTRY *dir_entry; char namebuff[16]; - _sdk_log("psxcd: Cached directory record contents:\n"); + _sdk_log("Cached directory record contents:\n"); i = 0; dir_pos = 0; @@ -226,7 +229,7 @@ static void dump_directory(void) strncpy(namebuff, _cd_iso_directory_buff+dir_pos+sizeof(ISO_DIR_ENTRY), dir_entry->identifierLen); - _sdk_log("psxcd: P:%d L:%d %s\n", dir_pos, dir_entry->identifierLen, namebuff); + _sdk_log("P:%d L:%d %s\n", dir_pos, dir_entry->identifierLen, namebuff); dir_pos += dir_entry->entryLength; i++; @@ -245,7 +248,7 @@ static void dump_directory(void) } } - _sdk_log("psxcd: --\n"); + _sdk_log("--\n"); } @@ -256,7 +259,7 @@ static void dump_pathtable(void) ISO_DESCRIPTOR *descriptor; char namebuff[16]; - _sdk_log("psxcd: Path table entries:\n"); + _sdk_log("Path table entries:\n"); descriptor = (ISO_DESCRIPTOR*)_cd_iso_descriptor_buff; @@ -270,7 +273,7 @@ static void dump_pathtable(void) tbl_pos+sizeof(ISO_PATHTABLE_ENTRY), tbl_entry->nameLength); - _sdk_log("psxcd: %s\n", namebuff); + _sdk_log("%s\n", namebuff); // Advance to next entry tbl_pos += sizeof(ISO_PATHTABLE_ENTRY) @@ -366,7 +369,7 @@ static int find_dir_entry(const char *name, ISO_DIR_ENTRY *dirent) ISO_DIR_ENTRY *dir_entry; char namebuff[16]; - _sdk_log("psxcd: Locating file %s.\n", name); + _sdk_log("Locating file %s.\n", name); i = 0; dir_pos = 0; @@ -459,11 +462,11 @@ CdlFILE *CdSearchFile(CdlFILE *fp, const char *filename) // Read ISO descriptor and path table if( _CdReadIsoDescriptor(0) ) { - _sdk_log("psxcd: Could not read ISO file system.\n"); + _sdk_log("Could not read ISO file system.\n"); return NULL; } - // _sdk_log("psxcd: ISO file system cache updated.\n"); + // _sdk_log("ISO file system cache updated.\n"); // _cd_media_changed = 0; //} @@ -471,23 +474,23 @@ CdlFILE *CdSearchFile(CdlFILE *fp, const char *filename) num_dirs = get_pathtable_entry(0, NULL, NULL); #ifndef NDEBUG - _sdk_log("psxcd: Directories in path table: %d\n", num_dirs); + _sdk_log("Directories in path table: %d\n", num_dirs); rbuff = resolve_pathtable_path(num_dirs-1, tpath_rbuff+127); if( !rbuff ) { - _sdk_log("psxcd: Could not resolve path.\n"); + _sdk_log("Could not resolve path.\n"); } else { - _sdk_log("psxcd: Longest path: %s|\n", rbuff); + _sdk_log("Longest path: %s|\n", rbuff); } #endif if( get_pathname(search_path, filename) ) { - _sdk_log("psxcd: Search path = %s|\n", search_path); + _sdk_log("Search path = %s|\n", search_path); } // Search the pathtable for a matching path @@ -495,7 +498,7 @@ CdlFILE *CdSearchFile(CdlFILE *fp, const char *filename) for(i=1; i<num_dirs; i++) { rbuff = resolve_pathtable_path(i, tpath_rbuff+127); - _sdk_log("psxcd: Found = %s|\n", rbuff); + _sdk_log("Found = %s|\n", rbuff); if( rbuff ) { @@ -509,14 +512,14 @@ CdlFILE *CdSearchFile(CdlFILE *fp, const char *filename) if( !found_dir ) { - _sdk_log("psxcd: Directory path not found.\n"); + _sdk_log("Directory path not found.\n"); return NULL; } - _sdk_log("psxcd: Found directory at record %d!\n", found_dir); + _sdk_log("Found directory at record %d!\n", found_dir); get_pathtable_entry(found_dir, &tbl_entry, NULL); - _sdk_log("psxcd: Directory LBA = %d\n", tbl_entry.dirOffs); + _sdk_log("Directory LBA = %d\n", tbl_entry.dirOffs); _CdReadIsoDirectory(tbl_entry.dirOffs); get_filename(fp->name, filename); @@ -533,12 +536,12 @@ CdlFILE *CdSearchFile(CdlFILE *fp, const char *filename) if( find_dir_entry(fp->name, &dir_entry) ) { - _sdk_log("psxcd: Could not find file.\n"); + _sdk_log("Could not find file.\n"); return NULL; } - _sdk_log("psxcd: Located file at LBA %d.\n", dir_entry.entryOffs.lsb); + _sdk_log("Located file at LBA %d.\n", dir_entry.entryOffs.lsb); CdIntToPos(dir_entry.entryOffs.lsb, &fp->pos); fp->size = dir_entry.entrySize.lsb; @@ -562,11 +565,11 @@ CdlDIR *CdOpenDir(const char* path) // Read ISO descriptor and path table if( _CdReadIsoDescriptor( 0 ) ) { - _sdk_log( "psxcd: Could not read ISO file system.\n" ); + _sdk_log( "Could not read ISO file system.\n" ); return NULL; } -// _sdk_log( "psxcd: ISO file system cache updated.\n" ); +// _sdk_log( "ISO file system cache updated.\n" ); // _cd_media_changed = 0; // } @@ -576,7 +579,7 @@ CdlDIR *CdOpenDir(const char* path) for( i=1; i<num_dirs; i++ ) { rbuff = resolve_pathtable_path( i, tpath_rbuff+127 ); - _sdk_log( "psxcd: Found = %s|\n", rbuff ); + _sdk_log( "Found = %s|\n", rbuff ); if( rbuff ) { @@ -590,14 +593,14 @@ CdlDIR *CdOpenDir(const char* path) if( !found_dir ) { - _sdk_log( "psxcd: Directory path not found.\n" ); + _sdk_log( "Directory path not found.\n" ); return NULL; } - _sdk_log( "psxcd: Found directory at record %d!\n", found_dir ); + _sdk_log( "Found directory at record %d!\n", found_dir ); get_pathtable_entry( found_dir, &tbl_entry, NULL ); - _sdk_log( "psxcd: Directory LBA = %d\n", tbl_entry.dirOffs ); + _sdk_log( "Directory LBA = %d\n", tbl_entry.dirOffs ); _CdReadIsoDirectory( tbl_entry.dirOffs ); @@ -662,11 +665,11 @@ int CdReadDir(CdlDIR *dir, CdlFILE* file) file->size = dir_entry->entrySize.lsb; - _sdk_log("psxcd: dir_entry->entryLength = %d, ", dir_entry->entryLength); + _sdk_log("dir_entry->entryLength = %d, ", dir_entry->entryLength); d_dir->_pos += dir_entry->entryLength; - _sdk_log("psxcd: d_dir->_pos = %d\n", d_dir->_pos); + _sdk_log("d_dir->_pos = %d\n", d_dir->_pos); // Check if padding is reached (end of record sector) if( d_dir->_dir[d_dir->_pos] == 0 ) @@ -770,13 +773,13 @@ int CdLoadSession(int session) int i; // Seek to specified session - _sdk_log("psxcd: CdLoadSession(): Seeking to session %d...\n", session); + _sdk_log("CdLoadSession(): Seeking to session %d...\n", session); CdControl(CdlSetsession, (unsigned char*)&session, (unsigned char*)&resultbuff); if( CdSync(0, 0) == CdlDiskError ) { - _sdk_log("psxcd: CdLoadSession(): Session seek failed, session does not exist. Restarting CD-ROM...\n"); + _sdk_log("CdLoadSession(): Session seek failed, session does not exist. Restarting CD-ROM...\n"); // Restart CD-ROM on session seek failure CdControl(CdlNop, 0, 0); @@ -797,7 +800,7 @@ int CdLoadSession(int session) _ses_scanbuff = scanbuff; // Begin scan for an ISO volume descriptor - _sdk_log("psxcd: CdLoadSession(): Scanning for ISO9660 volume descriptor.\n"); + _sdk_log("CdLoadSession(): Scanning for ISO9660 volume descriptor.\n"); i = CdlModeSpeed; CdControl(CdlSetmode, (unsigned char*)&i, 0); @@ -812,7 +815,7 @@ int CdLoadSession(int session) if( !_ses_scanfound ) { - _sdk_log("psxcd: CdLoadSession(): Did not find volume descriptor.\n"); + _sdk_log("CdLoadSession(): Did not find volume descriptor.\n"); _cd_iso_error = CdlIsoInvalidFs; EnterCriticalSection(); @@ -841,11 +844,11 @@ int CdLoadSession(int session) loc = (CdlLOC*)resultbuff; - _sdk_log("psxcd: CdLoadSession(): Session found in %02d:%02d:%02d (LBA=%d)\n", + _sdk_log("CdLoadSession(): Session found in %02d:%02d:%02d (LBA=%d)\n", btoi(loc->minute), btoi(loc->second), btoi(loc->sector), CdPosToInt(loc)); i = CdPosToInt(loc)-17; - _sdk_log("psxcd: CdLoadSession(): Session starting at LBA=%d\n", i); + _sdk_log("CdLoadSession(): Session starting at LBA=%d\n", i); _cd_media_changed = 1; diff --git a/libpsn00b/psxcd/psxcd.c b/libpsn00b/psxcd/psxcd.c index b914b5e..d8d0686 100644 --- a/libpsn00b/psxcd/psxcd.c +++ b/libpsn00b/psxcd/psxcd.c @@ -1,8 +1,8 @@ #include <stdint.h> +#include <assert.h> #include <psxgpu.h> -#include <psxetc.h> #include <psxapi.h> -#include "psxcd.h" +#include <psxcd.h> #define READ_TIMEOUT 600 // 10 seconds for NTSC @@ -39,9 +39,9 @@ int CdInit(void) { if(CdSync(0, 0) != CdlDiskError) { CdControl(CdlDemute, 0, 0); - _sdk_log("psxcd: setup done\n"); + _sdk_log("setup done\n"); } else { - _sdk_log("psxcd: setup error, bad disc/drive or no disc inserted\n"); + _sdk_log("setup error, bad disc/drive or no disc inserted\n"); } return 1; @@ -305,7 +305,7 @@ static void CdDoRetry() { int cb; - _sdk_log("psxcd: retrying read...\n"); + _sdk_log("retrying read...\n"); // Stop reading CdControl(CdlPause, 0, 0); diff --git a/libpsn00b/psxetc/dl.c b/libpsn00b/psxetc/dl.c index b85a7df..51c1d2d 100644 --- a/libpsn00b/psxetc/dl.c +++ b/libpsn00b/psxetc/dl.c @@ -23,14 +23,16 @@ * of entries */ +#define SDK_LIBRARY_NAME "psxetc/dl" + #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <ctype.h> +#include <assert.h> #include <elf.h> #include <dlfcn.h> #include <string.h> -#include <psxetc.h> #include <psxapi.h> /* Compile options */ @@ -87,7 +89,7 @@ void *_dl_resolve_helper(DLL *dll, uint32_t index) { address = DL_GetSymbolByName(_name); if (!address) { - _sdk_log("psxetc: FATAL! can't resolve %s, locking up\n", _name); + _sdk_log("FATAL! can't resolve %s, locking up\n", _name); while (1) __asm__ volatile("nop"); } @@ -128,7 +130,7 @@ static uint32_t _elf_hash(const char *str) { static uint8_t *_dl_load_file(const char *filename, size_t *size_output) { int32_t fd = open(filename, 1); if (fd < 0) { - _sdk_log("psxetc: can't open %s, error = %d\n", filename, fd); + _sdk_log("can't open %s, error = %d\n", filename, fd); _ERROR(RTLD_E_FILE_OPEN, 0); } @@ -139,11 +141,11 @@ static uint8_t *_dl_load_file(const char *filename, size_t *size_output) { uint8_t *buffer = malloc(size); if (!buffer) { - _sdk_log("psxetc: unable to allocate %d bytes for %s\n", size, filename); + _sdk_log("unable to allocate %d bytes for %s\n", size, filename); _ERROR(RTLD_E_FILE_ALLOC, 0); } - //_sdk_log("psxetc: loading %s (%d bytes)..", filename, size); + //_sdk_log("loading %s (%d bytes)..", filename, size); for (uint32_t offset = 0; offset < size; ) { int32_t length = read(fd, &(buffer[offset]), 0x800); @@ -188,7 +190,7 @@ int32_t DL_ParseSymbolMap(const char *ptr, size_t size) { _symbol_map.nbucket = entries; _symbol_map.nchain = entries; _sdk_log( - "psxetc: allocating nbucket = %d, nchain = %d\n", + "allocating nbucket = %d, nchain = %d\n", _symbol_map.nbucket, entries ); @@ -200,7 +202,7 @@ int32_t DL_ParseSymbolMap(const char *ptr, size_t size) { _symbol_map.chain = malloc(sizeof(uint32_t) * entries); if (!_symbol_map.entries || !_symbol_map.bucket || !_symbol_map.chain) { - _sdk_log("psxetc: unable to allocate symbol map table\n"); + _sdk_log("unable to allocate symbol map table\n"); _ERROR(RTLD_E_MAP_ALLOC, -1); } @@ -244,7 +246,7 @@ int32_t DL_ParseSymbolMap(const char *ptr, size_t size) { (_type == 'B') // .bss )) { //_sdk_log( - //"psxetc: map sym: %08x,%08x [%c %s]\n", + //"map sym: %08x,%08x [%c %s]\n", //address, _size, _type, name //); @@ -269,7 +271,7 @@ int32_t DL_ParseSymbolMap(const char *ptr, size_t size) { pos++; } - _sdk_log("psxetc: parsed %d symbols\n", entries); + _sdk_log("parsed %d symbols\n", entries); if (!entries) _ERROR(RTLD_E_NO_SYMBOLS, -1); @@ -302,7 +304,7 @@ void DL_UnloadSymbolMap(void) { void *DL_GetSymbolByName(const char *name) { if (!_symbol_map.entries) { - _sdk_log("psxetc: attempted lookup with no map loaded\n"); + _sdk_log("attempted lookup with no map loaded\n"); _ERROR(RTLD_E_NO_MAP, 0); } @@ -315,7 +317,7 @@ void *DL_GetSymbolByName(const char *name) { for (uint32_t i = _symbol_map.bucket[hash_mod]; i != 0xffffffff;) { if (i >= _symbol_map.nchain) { _sdk_log( - "psxetc: GetSymbolByName() index out of bounds (%d >= %d)\n", + "GetSymbolByName() index out of bounds (%d >= %d)\n", i, _symbol_map.nchain ); _ERROR(RTLD_E_HASH_LOOKUP, 0); @@ -324,14 +326,14 @@ void *DL_GetSymbolByName(const char *name) { MapEntry *entry = &(_symbol_map.entries[i]); if (hash == entry->hash) { - //_sdk_log("psxetc: map lookup [%s = %08x]\n", name, entry->ptr); + //_sdk_log("map lookup [%s = %08x]\n", name, entry->ptr); return entry->ptr; } i = _symbol_map.chain[i]; } - _sdk_log("psxetc: map lookup [%s not found]\n", name); + _sdk_log("map lookup [%s not found]\n", name); _ERROR(RTLD_E_MAP_SYMBOL, 0); } @@ -347,14 +349,14 @@ DLL *DL_CreateDLL(void *ptr, size_t size, DL_ResolveMode mode) { DLL *dll = malloc(sizeof(DLL)); if (!dll) { - _sdk_log("psxetc: unable to allocate DLL struct\n"); + _sdk_log("unable to allocate DLL struct\n"); _ERROR(RTLD_E_DLL_ALLOC, 0); } dll->ptr = ptr; dll->malloc_ptr = (mode & RTLD_FREE_ON_DESTROY) ? ptr : 0; dll->size = size; - _sdk_log("psxetc: initializing DLL at %08x\n", ptr); + _sdk_log("initializing DLL at %08x\n", ptr); // Interpret the key-value pairs in the .dynamic section to obtain info // about all the other sections. The pairs are null-terminated, which makes @@ -363,7 +365,7 @@ DLL *DL_CreateDLL(void *ptr, size_t size, DL_ResolveMode mode) { uint32_t first_got_sym = 0; for (Elf32_Dyn *dyn = (Elf32_Dyn *) ptr; dyn->d_tag; dyn++) { - //_sdk_log("psxetc: .dynamic %08x=%08x ", dyn->d_tag, dyn->d_un.d_val); + //_sdk_log(".dynamic %08x=%08x ", dyn->d_tag, dyn->d_un.d_val); switch (dyn->d_tag) { // Offset of .got section @@ -407,7 +409,7 @@ DLL *DL_CreateDLL(void *ptr, size_t size, DL_ResolveMode mode) { if (dyn->d_un.d_val != sizeof(Elf32_Sym)) { free(dll); - _sdk_log("psxetc: invalid DLL symtab entry size %d\n", dyn->d_un.d_val); + _sdk_log("invalid DLL symtab entry size %d\n", dyn->d_un.d_val); _ERROR(RTLD_E_DLL_FORMAT, 0); } break; @@ -420,7 +422,7 @@ DLL *DL_CreateDLL(void *ptr, size_t size, DL_ResolveMode mode) { if (dyn->d_un.d_val != 1) { free(dll); - _sdk_log("psxetc: invalid DLL version %d\n", dyn->d_un.d_val); + _sdk_log("invalid DLL version %d\n", dyn->d_un.d_val); _ERROR(RTLD_E_DLL_FORMAT, 0); } break; @@ -433,7 +435,7 @@ DLL *DL_CreateDLL(void *ptr, size_t size, DL_ResolveMode mode) { if (dyn->d_un.d_val & RHF_QUICKSTART) { free(dll); - _sdk_log("psxetc: invalid DLL flags\n"); + _sdk_log("invalid DLL flags\n"); _ERROR(RTLD_E_DLL_FORMAT, 0); } break; @@ -454,7 +456,7 @@ DLL *DL_CreateDLL(void *ptr, size_t size, DL_ResolveMode mode) { if (dyn->d_un.d_val) { free(dll); - _sdk_log("psxetc: invalid DLL base address %08x\n", dyn->d_un.d_val); + _sdk_log("invalid DLL base address %08x\n", dyn->d_un.d_val); _ERROR(RTLD_E_DLL_FORMAT, 0); } break; @@ -497,7 +499,7 @@ DLL *DL_CreateDLL(void *ptr, size_t size, DL_ResolveMode mode) { dll->got_length = local_got_len + (dll->symbol_count - first_got_sym) - 2; _sdk_log( - "psxetc: %d symbols, %d GOT entries\n", + "%d symbols, %d GOT entries\n", dll->symbol_count, dll->got_length ); @@ -526,7 +528,7 @@ DLL *DL_CreateDLL(void *ptr, size_t size, DL_ResolveMode mode) { sym->st_value += (uint32_t) ptr; //_sdk_log( - //"psxetc: DLL sym: %08x,%08x [%s]\n", + //"DLL sym: %08x,%08x [%s]\n", //sym->st_value, sym->st_size, _name //); @@ -636,7 +638,7 @@ void *DL_GetDLLSymbol(const DLL *dll, const char *name) { // provided. for (uint32_t i = bucket[hash_mod]; i != 0xffffffff;) { if (i >= nchain) { - _sdk_log("psxetc: DL_GetDLLSymbol() index out of bounds (%d >= %d)\n", i, nchain); + _sdk_log("DL_GetDLLSymbol() index out of bounds (%d >= %d)\n", i, nchain); _ERROR(RTLD_E_HASH_LOOKUP, 0); } @@ -644,14 +646,14 @@ void *DL_GetDLLSymbol(const DLL *dll, const char *name) { const char *_name = &(dll->strtab[sym->st_name]); if (!strcmp(name, _name)) { - //_sdk_log("psxetc: DLL lookup [%s = %08x]\n", name, sym->st_value); + //_sdk_log("DLL lookup [%s = %08x]\n", name, sym->st_value); return sym->st_value; } i = chain[i]; } - _sdk_log("psxetc: DLL lookup [%s not found]\n", name); + _sdk_log("DLL lookup [%s not found]\n", name); _ERROR(RTLD_E_DLL_SYMBOL, 0); } diff --git a/libpsn00b/psxgpu/common.c b/libpsn00b/psxgpu/common.c index a262472..9eb4ea4 100644 --- a/libpsn00b/psxgpu/common.c +++ b/libpsn00b/psxgpu/common.c @@ -4,6 +4,7 @@ */ #include <stdint.h> +#include <assert.h> #include <psxetc.h> #include <psxapi.h> #include <psxgpu.h> @@ -75,7 +76,7 @@ void ResetGraph(int mode) { _gpu_video_mode = (GPU_GP1 >> 20) & 1; ExitCriticalSection(); - _sdk_log("psxgpu: setup done, default mode is %s\n", _gpu_video_mode ? "PAL" : "NTSC"); + _sdk_log("setup done, default mode is %s\n", _gpu_video_mode ? "PAL" : "NTSC"); } if (mode == 3) { @@ -113,8 +114,7 @@ static void _default_vsync_halt(void) { return; } - _sdk_log("psxgpu: VSync() timeout\n"); - _sdk_dump_log(); + _sdk_log("VSync() timeout\n"); ChangeClearPAD(0); ChangeClearRCnt(3, 0); } @@ -130,7 +130,6 @@ int VSync(int mode) { // Wait for at least one vertical blank event to occur. do { - _sdk_dump_log(); _vsync_halt_func(); // If interlaced mode is enabled, wait until the GPU starts displaying @@ -182,17 +181,17 @@ int EnqueueDrawOp( IRQ_MASK = 0; if (_queue_length) { - if (_queue_length >= QUEUE_LENGTH) { + int length = _queue_length; + + if (length >= QUEUE_LENGTH) { IRQ_MASK = mask; - _sdk_log("psxgpu: draw queue overflow, dropping commands\n"); + _sdk_log("draw queue overflow, dropping commands\n"); return -1; } - int length = _queue_length; - _queue_length = length + 1; - volatile QueueEntry *entry = &_draw_queue[_queue_tail++]; - _queue_tail %= QUEUE_LENGTH; + _queue_tail %= QUEUE_LENGTH; + _queue_length = length + 1; entry->func = func; entry->arg1 = arg1; @@ -230,8 +229,7 @@ int DrawSync(int mode) { while (!(GPU_GP1 & (1 << 26))) __asm__ volatile(""); } else { - _sdk_log("psxgpu: DrawSync() timeout\n"); - _sdk_dump_log(); + _sdk_log("DrawSync() timeout\n"); } return _queue_length; diff --git a/libpsn00b/psxgpu/image.c b/libpsn00b/psxgpu/image.c index 968dde5..bbdb7c8 100644 --- a/libpsn00b/psxgpu/image.c +++ b/libpsn00b/psxgpu/image.c @@ -4,7 +4,7 @@ */ #include <stdint.h> -#include <psxetc.h> +#include <assert.h> #include <psxgpu.h> #include <hwregs_c.h> @@ -15,11 +15,11 @@ static void _dma_transfer(const RECT *rect, uint32_t *data, int write) { size_t length = rect->w * rect->h; if (length % 2) - _sdk_log("psxgpu: can't transfer an odd number of pixels\n"); + _sdk_log("can't transfer an odd number of pixels\n"); length /= 2; if ((length >= DMA_CHUNK_LENGTH) && (length % DMA_CHUNK_LENGTH)) { - _sdk_log("psxgpu: transfer data length (%d) is not a multiple of %d, rounding\n", length, DMA_CHUNK_LENGTH); + _sdk_log("transfer data length (%d) is not a multiple of %d, rounding\n", length, DMA_CHUNK_LENGTH); length += DMA_CHUNK_LENGTH - 1; } diff --git a/libpsn00b/psxpress/mdec.c b/libpsn00b/psxpress/mdec.c index d43436f..d55dbbb 100644 --- a/libpsn00b/psxpress/mdec.c +++ b/libpsn00b/psxpress/mdec.c @@ -4,7 +4,7 @@ */ #include <stdint.h> -#include <psxetc.h> +#include <assert.h> #include <psxapi.h> #include <psxpress.h> #include <hwregs_c.h> @@ -127,7 +127,7 @@ void DecDCTin(const uint32_t *data, int mode) { // the stream. void DecDCTinRaw(const uint32_t *data, size_t length) { if ((length >= DMA_CHUNK_LENGTH) && (length % DMA_CHUNK_LENGTH)) { - _sdk_log("psxpress: transfer data length (%d) is not a multiple of %d, rounding\n", length, DMA_CHUNK_LENGTH); + _sdk_log("transfer data length (%d) is not a multiple of %d, rounding\n", length, DMA_CHUNK_LENGTH); length += DMA_CHUNK_LENGTH - 1; } @@ -149,8 +149,7 @@ int DecDCTinSync(int mode) { return 0; } - _sdk_log("psxpress: DecDCTinSync() timeout\n"); - _sdk_dump_log(); + _sdk_log("DecDCTinSync() timeout\n"); return -1; } @@ -158,7 +157,7 @@ void DecDCTout(uint32_t *data, size_t length) { DecDCToutSync(0); if ((length >= DMA_CHUNK_LENGTH) && (length % DMA_CHUNK_LENGTH)) { - _sdk_log("psxpress: transfer data length (%d) is not a multiple of %d, rounding\n", length, DMA_CHUNK_LENGTH); + _sdk_log("transfer data length (%d) is not a multiple of %d, rounding\n", length, DMA_CHUNK_LENGTH); length += DMA_CHUNK_LENGTH - 1; } @@ -180,7 +179,6 @@ int DecDCToutSync(int mode) { return 0; } - _sdk_log("psxpress: DecDCToutSync() timeout\n"); - _sdk_dump_log(); + _sdk_log("DecDCToutSync() timeout\n"); return -1; } diff --git a/libpsn00b/psxspu/common.c b/libpsn00b/psxspu/common.c index 7d90858..42f7cb7 100644 --- a/libpsn00b/psxspu/common.c +++ b/libpsn00b/psxspu/common.c @@ -4,7 +4,7 @@ */ #include <stdint.h> -#include <psxetc.h> +#include <assert.h> #include <psxspu.h> #include <hwregs_c.h> @@ -25,16 +25,16 @@ static void _wait_status(uint16_t mask, uint16_t value) { return; } - _sdk_log("psxspu: status register timeout (0x%04x)\n", SPU_STAT); + _sdk_log("status register timeout (0x%04x)\n", SPU_STAT); } static void _dma_transfer(uint32_t *data, size_t length, int write) { if (length % 4) - _sdk_log("psxspu: can't transfer a number of bytes that isn't multiple of 4\n"); + _sdk_log("can't transfer a number of bytes that isn't multiple of 4\n"); length /= 4; if ((length >= DMA_CHUNK_LENGTH) && (length % DMA_CHUNK_LENGTH)) { - _sdk_log("psxspu: transfer data length (%d) is not a multiple of %d, rounding\n", length, DMA_CHUNK_LENGTH); + _sdk_log("transfer data length (%d) is not a multiple of %d, rounding\n", length, DMA_CHUNK_LENGTH); length += DMA_CHUNK_LENGTH - 1; } |
