From 6120304537470e7e5ff94b3bf19a33787ca69083 Mon Sep 17 00:00:00 2001 From: spicyjpeg <88942473+spicyjpeg@users.noreply.github.com> Date: Wed, 29 Jun 2022 12:40:46 +0200 Subject: Refactor libpsxgpu in C, add OT drawing queue --- examples/demos/n00bdemo/disp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'examples/demos') diff --git a/examples/demos/n00bdemo/disp.c b/examples/demos/n00bdemo/disp.c index c134163..d8d2bbf 100644 --- a/examples/demos/n00bdemo/disp.c +++ b/examples/demos/n00bdemo/disp.c @@ -19,7 +19,7 @@ MATRIX mtx; void initDisplay() { - ResetGraph( 3 ); + ResetGraph( 0 ); if( GetVideoMode() == MODE_NTSC ) { SetDefDispEnv( &disp, 0, 0, 640, 480 ); -- cgit v1.2.3 From 86f0064afb8200e60dd80827535cac30d0eab028 Mon Sep 17 00:00:00 2001 From: spicyjpeg Date: Thu, 22 Sep 2022 21:36:29 +0200 Subject: Update version number, clean up old headers --- CHANGELOG.md | 10 ++ CMakeLists.txt | 2 +- examples/demos/n00bdemo/smd.s | 4 +- examples/demos/n00bdemo/smd_cel.s | 4 +- examples/demos/n00bdemo/smd_flat.s | 4 +- libpsn00b/include/ctype.h | 23 +++- libpsn00b/include/gtereg.h | 81 ------------- libpsn00b/include/gtereg.inc | 81 +++++++++++++ libpsn00b/include/hwregs_a.h | 150 ------------------------ libpsn00b/include/hwregs_a.inc | 150 ++++++++++++++++++++++++ libpsn00b/include/inline_s.h | 230 ------------------------------------- libpsn00b/include/inline_s.inc | 230 +++++++++++++++++++++++++++++++++++++ libpsn00b/include/string.h | 20 +--- libpsn00b/include/strings.h | 23 ++-- libpsn00b/psxapi/_initcd.s | 2 +- libpsn00b/psxcd/_cd_control.s | 2 +- libpsn00b/psxcd/cdgetsector.s | 2 +- libpsn00b/psxcd/cdmix.s | 2 +- libpsn00b/psxcd/psxcd_asm.s | 2 +- libpsn00b/psxgpu/readme.txt | 1 - libpsn00b/psxgte/applymatrixlv.s | 4 +- libpsn00b/psxgte/compmatrixlv.s | 4 +- libpsn00b/psxgte/initgeom.s | 2 +- libpsn00b/psxgte/mulmatrix.s | 4 +- libpsn00b/psxgte/mulmatrix0.s | 4 +- libpsn00b/psxgte/pushpopmatrix.s | 4 +- libpsn00b/psxgte/readme.txt | 4 +- libpsn00b/psxgte/scalematrix.s | 4 +- libpsn00b/psxgte/scalematrixl.s | 4 +- libpsn00b/psxgte/square0.s | 4 +- libpsn00b/psxgte/squareroot.s | 4 +- libpsn00b/psxgte/vectornormals.s | 4 +- libpsn00b/psxsio/_sio_control.s | 2 +- 33 files changed, 541 insertions(+), 530 deletions(-) delete mode 100644 libpsn00b/include/gtereg.h create mode 100644 libpsn00b/include/gtereg.inc delete mode 100644 libpsn00b/include/hwregs_a.h create mode 100644 libpsn00b/include/hwregs_a.inc delete mode 100644 libpsn00b/include/inline_s.h create mode 100644 libpsn00b/include/inline_s.inc (limited to 'examples/demos') diff --git a/CHANGELOG.md b/CHANGELOG.md index b477b54..f7f4f93 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,16 @@ to ensure the changelog can be parsed correctly. ------------------------------------------------------------------------------- +## 2022-09-22 + +spicyjpeg: + +- libpsn00b: Changed the extension of `gtereg.h`, `hwregs_a.h` and `inline_s.h` + to `.inc`. Cleaned up old leftover PSXSDK headers. + +- Updated documentation and added detailed instructions on how to install + prebuilt releases. + ## 2022-08-21: 0.20 spicyjpeg: diff --git a/CMakeLists.txt b/CMakeLists.txt index 181375c..4f255a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ include(ExternalProject) project( PSn00bSDK LANGUAGES NONE - VERSION 0.19 + VERSION 0.20 DESCRIPTION "Open source PlayStation 1 SDK" HOMEPAGE_URL "http://lameguy64.net/?page=psn00bsdk" ) diff --git a/examples/demos/n00bdemo/smd.s b/examples/demos/n00bdemo/smd.s index f9cf2fe..d25f760 100644 --- a/examples/demos/n00bdemo/smd.s +++ b/examples/demos/n00bdemo/smd.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .include "smd_s.h" diff --git a/examples/demos/n00bdemo/smd_cel.s b/examples/demos/n00bdemo/smd_cel.s index ece0dd8..383f043 100644 --- a/examples/demos/n00bdemo/smd_cel.s +++ b/examples/demos/n00bdemo/smd_cel.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .include "smd_s.h" diff --git a/examples/demos/n00bdemo/smd_flat.s b/examples/demos/n00bdemo/smd_flat.s index 0d48c63..4b47be4 100644 --- a/examples/demos/n00bdemo/smd_flat.s +++ b/examples/demos/n00bdemo/smd_flat.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .include "smd_s.h" diff --git a/libpsn00b/include/ctype.h b/libpsn00b/include/ctype.h index b79498a..24ee9d9 100644 --- a/libpsn00b/include/ctype.h +++ b/libpsn00b/include/ctype.h @@ -1,7 +1,20 @@ -#ifndef _CTYPE_H -#define _CTYPE_H +/* + * PSn00bSDK standard library + * (C) 2019-2022 PSXSDK authors, Lameguy64, spicyjpeg - MPL licensed + */ -extern int tolower(int chr); -extern int toupper(int chr); +#ifndef __CTYPE_H +#define __CTYPE_H -#endif \ No newline at end of file +#ifdef __cplusplus +extern "C" { +#endif + +int tolower(int chr); +int toupper(int chr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libpsn00b/include/gtereg.h b/libpsn00b/include/gtereg.h deleted file mode 100644 index 0d051fc..0000000 --- a/libpsn00b/include/gtereg.h +++ /dev/null @@ -1,81 +0,0 @@ -# GTE register definitions for GNU assembler (as). -# -# Part of the PSn00bSDK Project by Lameguy64. -# 2019 Meido-Tek Productions - -# -# GTE data registers (use mfc2, mtc2, lwc2, swc2) -# -.set C2_VXY0, $0 -.set C2_VZ0, $1 -.set C2_VXY1, $2 -.set C2_VZ1, $3 -.set C2_VXY2, $4 -.set C2_VZ2, $5 -.set C2_RGB, $6 -.set C2_OTZ, $7 - -.set C2_IR0, $8 -.set C2_IR1, $9 -.set C2_IR2, $10 -.set C2_IR3, $11 -.set C2_SXY0, $12 -.set C2_SXY1, $13 -.set C2_SXY2, $14 -.set C2_SXYP, $15 - -.set C2_SZ0, $16 -.set C2_SZ1, $17 -.set C2_SZ2, $18 -.set C2_SZ3, $19 -.set C2_RGB0, $20 -.set C2_RGB1, $21 -.set C2_RGB2, $22 - -.set C2_MAC0, $24 -.set C2_MAC1, $25 -.set C2_MAC2, $26 -.set C2_MAC3, $27 -.set C2_IRGB, $28 -.set C2_ORGB, $29 -.set C2_LZCS, $30 -.set C2_LZCR, $31 - -# -# GTE control registers (use cfc2/ctc2) -# -.set C2_R11R12, $0 -.set C2_R13R21, $1 -.set C2_R22R23, $2 -.set C2_R31R32, $3 -.set C2_R33, $4 -.set C2_TRX, $5 -.set C2_TRY, $6 -.set C2_TRZ, $7 - -.set C2_L11L12, $8 -.set C2_L13L21, $9 -.set C2_L22L23, $10 -.set C2_L31L32, $11 -.set C2_L33, $12 -.set C2_RBK, $13 -.set C2_GBK, $14 -.set C2_BBK, $15 - -.set C2_LR1LR2, $16 -.set C2_LR3LG1, $17 -.set C2_LG2LG3, $18 -.set C2_LB1LB2, $19 -.set C2_LB3, $20 -.set C2_RFC, $21 -.set C2_GFC, $22 -.set C2_BFC, $23 - -.set C2_OFX, $24 -.set C2_OFY, $25 -.set C2_H, $26 -.set C2_DQA, $27 -.set C2_DQB, $28 -.set C2_ZSF3, $29 -.set C2_ZSF4, $30 -.set C2_FLAG, $31 diff --git a/libpsn00b/include/gtereg.inc b/libpsn00b/include/gtereg.inc new file mode 100644 index 0000000..0d051fc --- /dev/null +++ b/libpsn00b/include/gtereg.inc @@ -0,0 +1,81 @@ +# GTE register definitions for GNU assembler (as). +# +# Part of the PSn00bSDK Project by Lameguy64. +# 2019 Meido-Tek Productions + +# +# GTE data registers (use mfc2, mtc2, lwc2, swc2) +# +.set C2_VXY0, $0 +.set C2_VZ0, $1 +.set C2_VXY1, $2 +.set C2_VZ1, $3 +.set C2_VXY2, $4 +.set C2_VZ2, $5 +.set C2_RGB, $6 +.set C2_OTZ, $7 + +.set C2_IR0, $8 +.set C2_IR1, $9 +.set C2_IR2, $10 +.set C2_IR3, $11 +.set C2_SXY0, $12 +.set C2_SXY1, $13 +.set C2_SXY2, $14 +.set C2_SXYP, $15 + +.set C2_SZ0, $16 +.set C2_SZ1, $17 +.set C2_SZ2, $18 +.set C2_SZ3, $19 +.set C2_RGB0, $20 +.set C2_RGB1, $21 +.set C2_RGB2, $22 + +.set C2_MAC0, $24 +.set C2_MAC1, $25 +.set C2_MAC2, $26 +.set C2_MAC3, $27 +.set C2_IRGB, $28 +.set C2_ORGB, $29 +.set C2_LZCS, $30 +.set C2_LZCR, $31 + +# +# GTE control registers (use cfc2/ctc2) +# +.set C2_R11R12, $0 +.set C2_R13R21, $1 +.set C2_R22R23, $2 +.set C2_R31R32, $3 +.set C2_R33, $4 +.set C2_TRX, $5 +.set C2_TRY, $6 +.set C2_TRZ, $7 + +.set C2_L11L12, $8 +.set C2_L13L21, $9 +.set C2_L22L23, $10 +.set C2_L31L32, $11 +.set C2_L33, $12 +.set C2_RBK, $13 +.set C2_GBK, $14 +.set C2_BBK, $15 + +.set C2_LR1LR2, $16 +.set C2_LR3LG1, $17 +.set C2_LG2LG3, $18 +.set C2_LB1LB2, $19 +.set C2_LB3, $20 +.set C2_RFC, $21 +.set C2_GFC, $22 +.set C2_BFC, $23 + +.set C2_OFX, $24 +.set C2_OFY, $25 +.set C2_H, $26 +.set C2_DQA, $27 +.set C2_DQB, $28 +.set C2_ZSF3, $29 +.set C2_ZSF4, $30 +.set C2_FLAG, $31 diff --git a/libpsn00b/include/hwregs_a.h b/libpsn00b/include/hwregs_a.h deleted file mode 100644 index c78b41a..0000000 --- a/libpsn00b/include/hwregs_a.h +++ /dev/null @@ -1,150 +0,0 @@ -# PSn00bSDK hardware registers definitions -# (C) 2019-2022 Lameguy64, spicyjpeg - MPL licensed - -## Constants - -.set IOBASE, 0x1f80 -.set F_CPU, 33868800 -.set F_GPU, 53222400 - -## GPU - -.set GPU_GP0, 0x1810 # Also GPUREAD -.set GPU_GP1, 0x1814 # Also GPUSTAT - -## CD drive - -.set CD_STAT, 0x1800 -.set CD_CMD, 0x1801 # Also response FIFO -.set CD_DATA, 0x1802 # Also parameters -.set CD_IRQ, 0x1803 - -.set CD_REG0, 0x1800 -.set CD_REG1, 0x1801 -.set CD_REG2, 0x1802 -.set CD_REG3, 0x1803 - -## SPU - -.set SPU_VOICE_BASE, 0x1c00 - -.set SPU_MASTER_VOL_L, 0x1d80 -.set SPU_MASTER_VOL_R, 0x1d82 -.set SPU_REVERB_VOL_L, 0x1d84 -.set SPU_REVERB_VOL_R, 0x1d86 -.set SPU_KEY_ON, 0x1d88 -.set SPU_KEY_OFF, 0x1d8c -.set SPU_FM_MODE, 0x1d90 -.set SPU_NOISE_MODE, 0x1d94 -.set SPU_REVERB_ON, 0x1d98 -.set SPU_CHAN_STATUS, 0x1d9c - -.set SPU_REVERB_ADDR, 0x1da2 -.set SPU_IRQ_ADDR, 0x1da4 -.set SPU_ADDR, 0x1da6 -.set SPU_DATA, 0x1da8 - -.set SPU_CTRL, 0x1daa -.set SPU_DMA_CTRL, 0x1dac -.set SPU_STAT, 0x1dae - -.set SPU_CD_VOL_L, 0x1db0 -.set SPU_CD_VOL_R, 0x1db2 -.set SPU_EXT_VOL_L, 0x1db4 -.set SPU_EXT_VOL_R, 0x1db6 -.set SPU_CURRENT_VOL_L, 0x1db8 -.set SPU_CURRENT_VOL_R, 0x1dba - -.set SPU_VOICE_VOL_L, 0x00 -.set SPU_VOICE_VOL_R, 0x02 -.set SPU_VOICE_FREQ, 0x04 -.set SPU_VOICE_ADDR, 0x06 -.set SPU_VOICE_ADSR_L, 0x08 -.set SPU_VOICE_ADSR_H, 0x0a -.set SPU_VOICE_LOOP, 0x0e - -## MDEC - -.set MDEC0, 0x1820 -.set MDEC1, 0x1824 - -## SPI controller port - -.set JOY_TXRX, 0x1040 -.set JOY_STAT, 0x1044 -.set JOY_MODE, 0x1048 -.set JOY_CTRL, 0x104a -.set JOY_BAUD, 0x104e - -## Serial port - -.set SIO_TXRX, 0x1050 -.set SIO_STAT, 0x1054 -.set SIO_MODE, 0x1058 -.set SIO_CTRL, 0x105a -.set SIO_BAUD, 0x105e - -## IRQ controller - -.set IRQ_STAT, 0x1070 -.set IRQ_MASK, 0x1074 - -## DMA - -.set DMA_DPCR, 0x10f0 -.set DMA_DICR, 0x10f4 - -.set DMA0_MADR, 0x1080 -.set DMA0_BCR, 0x1084 -.set DMA0_CHCR, 0x1088 - -.set DMA1_MADR, 0x1090 -.set DMA1_BCR, 0x1094 -.set DMA1_CHCR, 0x1098 - -.set DMA2_MADR, 0x10a0 -.set DMA2_BCR, 0x10a4 -.set DMA2_CHCR, 0x10a8 - -.set DMA3_MADR, 0x10b0 -.set DMA3_BCR, 0x10b4 -.set DMA3_CHCR, 0x10b8 - -.set DMA4_MADR, 0x10c0 -.set DMA4_BCR, 0x10c4 -.set DMA4_CHCR, 0x10c8 - -.set DMA5_MADR, 0x10d0 -.set DMA5_BCR, 0x10d4 -.set DMA5_CHCR, 0x10d8 - -.set DMA6_MADR, 0x10e0 -.set DMA6_BCR, 0x10e4 -.set DMA6_CHCR, 0x10e8 - -## Timers - -.set TIMER0_VALUE, 0x1100 -.set TIMER0_CTRL, 0x1104 -.set TIMER0_RELOAD, 0x1108 - -.set TIMER1_VALUE, 0x1110 -.set TIMER1_CTRL, 0x1114 -.set TIMER1_RELOAD, 0x1118 - -.set TIMER2_VALUE, 0x1120 -.set TIMER2_CTRL, 0x1124 -.set TIMER2_RELOAD, 0x1128 - -## Memory control - -.set EXP1_ADDR, 0x1000 -.set EXP2_ADDR, 0x1004 -.set EXP1_DELAY_SIZE, 0x1008 -.set EXP3_DELAY_SIZE, 0x100c -.set BIOS_DELAY_SIZE, 0x1010 -.set SPU_DELAY_SIZE, 0x1014 -.set CD_DELAY_SIZE, 0x1018 -.set EXP2_DELAY_SIZE, 0x101c -.set COM_DELAY_CFG, 0x1020 -.set RAM_SIZE_CFG, 0x1060 diff --git a/libpsn00b/include/hwregs_a.inc b/libpsn00b/include/hwregs_a.inc new file mode 100644 index 0000000..c78b41a --- /dev/null +++ b/libpsn00b/include/hwregs_a.inc @@ -0,0 +1,150 @@ +# PSn00bSDK hardware registers definitions +# (C) 2019-2022 Lameguy64, spicyjpeg - MPL licensed + +## Constants + +.set IOBASE, 0x1f80 +.set F_CPU, 33868800 +.set F_GPU, 53222400 + +## GPU + +.set GPU_GP0, 0x1810 # Also GPUREAD +.set GPU_GP1, 0x1814 # Also GPUSTAT + +## CD drive + +.set CD_STAT, 0x1800 +.set CD_CMD, 0x1801 # Also response FIFO +.set CD_DATA, 0x1802 # Also parameters +.set CD_IRQ, 0x1803 + +.set CD_REG0, 0x1800 +.set CD_REG1, 0x1801 +.set CD_REG2, 0x1802 +.set CD_REG3, 0x1803 + +## SPU + +.set SPU_VOICE_BASE, 0x1c00 + +.set SPU_MASTER_VOL_L, 0x1d80 +.set SPU_MASTER_VOL_R, 0x1d82 +.set SPU_REVERB_VOL_L, 0x1d84 +.set SPU_REVERB_VOL_R, 0x1d86 +.set SPU_KEY_ON, 0x1d88 +.set SPU_KEY_OFF, 0x1d8c +.set SPU_FM_MODE, 0x1d90 +.set SPU_NOISE_MODE, 0x1d94 +.set SPU_REVERB_ON, 0x1d98 +.set SPU_CHAN_STATUS, 0x1d9c + +.set SPU_REVERB_ADDR, 0x1da2 +.set SPU_IRQ_ADDR, 0x1da4 +.set SPU_ADDR, 0x1da6 +.set SPU_DATA, 0x1da8 + +.set SPU_CTRL, 0x1daa +.set SPU_DMA_CTRL, 0x1dac +.set SPU_STAT, 0x1dae + +.set SPU_CD_VOL_L, 0x1db0 +.set SPU_CD_VOL_R, 0x1db2 +.set SPU_EXT_VOL_L, 0x1db4 +.set SPU_EXT_VOL_R, 0x1db6 +.set SPU_CURRENT_VOL_L, 0x1db8 +.set SPU_CURRENT_VOL_R, 0x1dba + +.set SPU_VOICE_VOL_L, 0x00 +.set SPU_VOICE_VOL_R, 0x02 +.set SPU_VOICE_FREQ, 0x04 +.set SPU_VOICE_ADDR, 0x06 +.set SPU_VOICE_ADSR_L, 0x08 +.set SPU_VOICE_ADSR_H, 0x0a +.set SPU_VOICE_LOOP, 0x0e + +## MDEC + +.set MDEC0, 0x1820 +.set MDEC1, 0x1824 + +## SPI controller port + +.set JOY_TXRX, 0x1040 +.set JOY_STAT, 0x1044 +.set JOY_MODE, 0x1048 +.set JOY_CTRL, 0x104a +.set JOY_BAUD, 0x104e + +## Serial port + +.set SIO_TXRX, 0x1050 +.set SIO_STAT, 0x1054 +.set SIO_MODE, 0x1058 +.set SIO_CTRL, 0x105a +.set SIO_BAUD, 0x105e + +## IRQ controller + +.set IRQ_STAT, 0x1070 +.set IRQ_MASK, 0x1074 + +## DMA + +.set DMA_DPCR, 0x10f0 +.set DMA_DICR, 0x10f4 + +.set DMA0_MADR, 0x1080 +.set DMA0_BCR, 0x1084 +.set DMA0_CHCR, 0x1088 + +.set DMA1_MADR, 0x1090 +.set DMA1_BCR, 0x1094 +.set DMA1_CHCR, 0x1098 + +.set DMA2_MADR, 0x10a0 +.set DMA2_BCR, 0x10a4 +.set DMA2_CHCR, 0x10a8 + +.set DMA3_MADR, 0x10b0 +.set DMA3_BCR, 0x10b4 +.set DMA3_CHCR, 0x10b8 + +.set DMA4_MADR, 0x10c0 +.set DMA4_BCR, 0x10c4 +.set DMA4_CHCR, 0x10c8 + +.set DMA5_MADR, 0x10d0 +.set DMA5_BCR, 0x10d4 +.set DMA5_CHCR, 0x10d8 + +.set DMA6_MADR, 0x10e0 +.set DMA6_BCR, 0x10e4 +.set DMA6_CHCR, 0x10e8 + +## Timers + +.set TIMER0_VALUE, 0x1100 +.set TIMER0_CTRL, 0x1104 +.set TIMER0_RELOAD, 0x1108 + +.set TIMER1_VALUE, 0x1110 +.set TIMER1_CTRL, 0x1114 +.set TIMER1_RELOAD, 0x1118 + +.set TIMER2_VALUE, 0x1120 +.set TIMER2_CTRL, 0x1124 +.set TIMER2_RELOAD, 0x1128 + +## Memory control + +.set EXP1_ADDR, 0x1000 +.set EXP2_ADDR, 0x1004 +.set EXP1_DELAY_SIZE, 0x1008 +.set EXP3_DELAY_SIZE, 0x100c +.set BIOS_DELAY_SIZE, 0x1010 +.set SPU_DELAY_SIZE, 0x1014 +.set CD_DELAY_SIZE, 0x1018 +.set EXP2_DELAY_SIZE, 0x101c +.set COM_DELAY_CFG, 0x1020 +.set RAM_SIZE_CFG, 0x1060 diff --git a/libpsn00b/include/inline_s.h b/libpsn00b/include/inline_s.h deleted file mode 100644 index 68e0d07..0000000 --- a/libpsn00b/include/inline_s.h +++ /dev/null @@ -1,230 +0,0 @@ -# Inline GTE macros for GNU assembler (as). -# -# Part of the PSn00bSDK Project by Lameguy64. -# 2019 Meido-Tek Productions -# -# Similar to inline_c.h, it does not require running your object file -# through some silly tool. - -.macro nRTPS - nop - nop - cop2 0x0180001 -.endm - -.macro nRTPT - nop - nop - cop2 0x0280030 -.endm - -.macro nNCLIP - nop - nop - cop2 0x1400006 -.endm - -.macro nAVSZ3 - nop - nop - cop2 0x158002D -.endm - -.macro nAVSZ4 - nop - nop - cop2 0x168002E -.endm - -.macro nMVMVA sf mx v cv lm - nop - nop - cop2 0x0400012|(\sf<<19)|(\mx<<17)|(\v<<15)|(\cv<<13)|(\lm<<10) -.endm - -.macro nSQR sf - nop - nop - cop2 0x0A00428|(\sf<<19) -.endm - -.macro nnOP sf lm # extra n to prevent conflict with the nop opcode - nop - nop - cop2 0x170000C|(\sf<<19)|(\lm<<10) -.endm - -.macro nNCS - nop - nop - cop2 0x0C8041E -.endm - -.macro nNCT - nop - nop - cop2 0x0D80420 -.endm - -.macro nNCCS - nop - nop - cop2 0x108041B -.endm - -.macro nNCCT - nop - nop - cop2 0x118043F -.endm - -.macro nNCDS - nop - nop - cop2 0x0E80413 -.endm - -.macro nNCDT - nop - nop - cop2 0x0F80416 -.endm - -.macro nCC - nop - nop - cop2 0x138041C -.endm - -.macro nCDP - nop - nop - cop2 0x1280414 -.endm - -.macro nDCPL - nop - nop - cop2 0x0680029 -.endm - -.macro nDPCS - nop - nop - cop2 0x0780010 -.endm - -.macro nDPCT - nop - nop - cop2 0x0180001 -.endm - -.macro nINTPL - nop - nop - cop2 0x0980011 -.endm - -.macro nGPF sf - nop - nop - cop2 0x190003D|(\sf<<19) -.endm - -.macro nGPL sf - nop - nop - cop2 0x1A0003E|(\sf<<19) -.endm - -# -# Macros without leading nops (for optimized usage) -# -.macro RTPS - cop2 0x0180001 -.endm - -.macro RTPT - cop2 0x0280030 -.endm - -.macro NCLIP - cop2 0x1400006 -.endm - -.macro AVSZ3 - cop2 0x158002D -.endm - -.macro AVSZ4 - cop2 0x168002E -.endm - -.macro MVMVA sf mx v cv lm - cop2 0x0400012|(\sf<<19)|(\mx<<17)|(\v<<15)|(\cv<<13)|(\lm<<10) -.endm - -.macro SQR sf - cop2 0x0A00428|(\sf<<19) -.endm - -.macro OP sf lm - cop2 0x170000C|(\sf<<19)|(\lm<<10) -.endm - -.macro NCS - cop2 0x0C8041E -.endm - -.macro NCT - cop2 0x0D80420 -.endm - -.macro NCCS - cop2 0x108041B -.endm - -.macro NCCT - cop2 0x118043F -.endm - -.macro NCDS - cop2 0x0E80413 -.endm - -.macro NCDT - cop2 0x0F80416 -.endm - -.macro CC - cop2 0x138041C -.endm - -.macro CDP - cop2 0x1280414 -.endm - -.macro DCPL - cop2 0x0680029 -.endm - -.macro DPCS - cop2 0x0780010 -.endm - -.macro DPCT - cop2 0x0180001 -.endm - -.macro INTPL - cop2 0x0980011 -.endm - -.macro GPF sf - cop2 0x190003D|(\sf<<19) -.endm - -.macro GPL sf - cop2 0x1A0003E|(\sf<<19) -.endm diff --git a/libpsn00b/include/inline_s.inc b/libpsn00b/include/inline_s.inc new file mode 100644 index 0000000..68e0d07 --- /dev/null +++ b/libpsn00b/include/inline_s.inc @@ -0,0 +1,230 @@ +# Inline GTE macros for GNU assembler (as). +# +# Part of the PSn00bSDK Project by Lameguy64. +# 2019 Meido-Tek Productions +# +# Similar to inline_c.h, it does not require running your object file +# through some silly tool. + +.macro nRTPS + nop + nop + cop2 0x0180001 +.endm + +.macro nRTPT + nop + nop + cop2 0x0280030 +.endm + +.macro nNCLIP + nop + nop + cop2 0x1400006 +.endm + +.macro nAVSZ3 + nop + nop + cop2 0x158002D +.endm + +.macro nAVSZ4 + nop + nop + cop2 0x168002E +.endm + +.macro nMVMVA sf mx v cv lm + nop + nop + cop2 0x0400012|(\sf<<19)|(\mx<<17)|(\v<<15)|(\cv<<13)|(\lm<<10) +.endm + +.macro nSQR sf + nop + nop + cop2 0x0A00428|(\sf<<19) +.endm + +.macro nnOP sf lm # extra n to prevent conflict with the nop opcode + nop + nop + cop2 0x170000C|(\sf<<19)|(\lm<<10) +.endm + +.macro nNCS + nop + nop + cop2 0x0C8041E +.endm + +.macro nNCT + nop + nop + cop2 0x0D80420 +.endm + +.macro nNCCS + nop + nop + cop2 0x108041B +.endm + +.macro nNCCT + nop + nop + cop2 0x118043F +.endm + +.macro nNCDS + nop + nop + cop2 0x0E80413 +.endm + +.macro nNCDT + nop + nop + cop2 0x0F80416 +.endm + +.macro nCC + nop + nop + cop2 0x138041C +.endm + +.macro nCDP + nop + nop + cop2 0x1280414 +.endm + +.macro nDCPL + nop + nop + cop2 0x0680029 +.endm + +.macro nDPCS + nop + nop + cop2 0x0780010 +.endm + +.macro nDPCT + nop + nop + cop2 0x0180001 +.endm + +.macro nINTPL + nop + nop + cop2 0x0980011 +.endm + +.macro nGPF sf + nop + nop + cop2 0x190003D|(\sf<<19) +.endm + +.macro nGPL sf + nop + nop + cop2 0x1A0003E|(\sf<<19) +.endm + +# +# Macros without leading nops (for optimized usage) +# +.macro RTPS + cop2 0x0180001 +.endm + +.macro RTPT + cop2 0x0280030 +.endm + +.macro NCLIP + cop2 0x1400006 +.endm + +.macro AVSZ3 + cop2 0x158002D +.endm + +.macro AVSZ4 + cop2 0x168002E +.endm + +.macro MVMVA sf mx v cv lm + cop2 0x0400012|(\sf<<19)|(\mx<<17)|(\v<<15)|(\cv<<13)|(\lm<<10) +.endm + +.macro SQR sf + cop2 0x0A00428|(\sf<<19) +.endm + +.macro OP sf lm + cop2 0x170000C|(\sf<<19)|(\lm<<10) +.endm + +.macro NCS + cop2 0x0C8041E +.endm + +.macro NCT + cop2 0x0D80420 +.endm + +.macro NCCS + cop2 0x108041B +.endm + +.macro NCCT + cop2 0x118043F +.endm + +.macro NCDS + cop2 0x0E80413 +.endm + +.macro NCDT + cop2 0x0F80416 +.endm + +.macro CC + cop2 0x138041C +.endm + +.macro CDP + cop2 0x1280414 +.endm + +.macro DCPL + cop2 0x0680029 +.endm + +.macro DPCS + cop2 0x0780010 +.endm + +.macro DPCT + cop2 0x0180001 +.endm + +.macro INTPL + cop2 0x0980011 +.endm + +.macro GPF sf + cop2 0x190003D|(\sf<<19) +.endm + +.macro GPL sf + cop2 0x1A0003E|(\sf<<19) +.endm diff --git a/libpsn00b/include/string.h b/libpsn00b/include/string.h index 365d238..ceee066 100644 --- a/libpsn00b/include/string.h +++ b/libpsn00b/include/string.h @@ -1,13 +1,10 @@ /* - * string.h - * - * Prototypes for string functions of the C library - * - * PSXSDK + * PSn00bSDK standard library + * (C) 2019-2022 PSXSDK authors, Lameguy64, spicyjpeg - MPL licensed */ -#ifndef _STRING_H -#define _STRING_H +#ifndef __STRING_H +#define __STRING_H #ifdef __cplusplus extern "C" { @@ -19,11 +16,6 @@ char *strpbrk(const char *dst , const char *src); char *strtok(char *s , char *set); char *strstr(const char *big , const char *little); -//int strspn(char *s , char *set); -//int strcspn(char *s , char *set); -//int index(char *s , int c); -//int rindex(char *s , int c); - char *strcat(char *s , const char *append); char *strncat(char *s , const char *append, int n); char *strcpy(char *dst , const char *src); @@ -34,9 +26,6 @@ char *strrchr(const char *s , int c); void *memmove(void *dst , const void *src , int n); void *memchr(void *s , int c , int n); - -// Functions converted to ASM - void *memcpy(void *dst , const void *src , int n); void *memset(void *dst , char c , int n); int memcmp(const void *b1 , const void *b2 , int n); @@ -46,4 +35,3 @@ int memcmp(const void *b1 , const void *b2 , int n); #endif #endif - diff --git a/libpsn00b/include/strings.h b/libpsn00b/include/strings.h index e5e88d4..7223ab9 100644 --- a/libpsn00b/include/strings.h +++ b/libpsn00b/include/strings.h @@ -1,18 +1,19 @@ -/* - * strings.h - * - * PSXSDK +/* + * PSn00bSDK standard library + * (C) 2019-2022 PSXSDK authors, Lameguy64, spicyjpeg - MPL licensed */ -#ifndef _STRINGS_H -#define _STRINGS_H +#ifndef __STRINGS_H +#define __STRINGS_H #include -#define bcopy(src,dst,len) memmove(dst,src,len) -#define bzero(ptr, len) memset(ptr, 0, len) -#define bcmp(b1,b2,len) memcmp(b1,b2,len) -#define index(s, c) strchr(s, c) -#define rindex(s, c) strrchr(s, c) +/* Compatibility macros (this header is useless) */ + +#define bcopy(src, dst, len) memmove(dst, src, len) +#define bzero(ptr, len) memset(ptr, 0, len) +#define bcmp(b1, b2, len) memcmp(b1, b2, len) +#define index(s, c) strchr(s, c) +#define rindex(s, c) strrchr(s, c) #endif diff --git a/libpsn00b/psxapi/_initcd.s b/libpsn00b/psxapi/_initcd.s index c3a2861..600d686 100644 --- a/libpsn00b/psxapi/_initcd.s +++ b/libpsn00b/psxapi/_initcd.s @@ -1,7 +1,7 @@ .section .text .set noreorder -.include "hwregs_a.h" +.include "hwregs_a.inc" .global _InitCd .type _InitCd, @function diff --git a/libpsn00b/psxcd/_cd_control.s b/libpsn00b/psxcd/_cd_control.s index c4153ff..5fa336a 100644 --- a/libpsn00b/psxcd/_cd_control.s +++ b/libpsn00b/psxcd/_cd_control.s @@ -1,6 +1,6 @@ .set noreorder -.include "hwregs_a.h" +.include "hwregs_a.inc" .section .text diff --git a/libpsn00b/psxcd/cdgetsector.s b/libpsn00b/psxcd/cdgetsector.s index 9f38e7a..6a29069 100644 --- a/libpsn00b/psxcd/cdgetsector.s +++ b/libpsn00b/psxcd/cdgetsector.s @@ -1,6 +1,6 @@ .set noreorder -.include "hwregs_a.h" +.include "hwregs_a.inc" .section .text diff --git a/libpsn00b/psxcd/cdmix.s b/libpsn00b/psxcd/cdmix.s index 745fb65..40cd181 100644 --- a/libpsn00b/psxcd/cdmix.s +++ b/libpsn00b/psxcd/cdmix.s @@ -1,6 +1,6 @@ .set noreorder -.include "hwregs_a.h" +.include "hwregs_a.inc" .section .text diff --git a/libpsn00b/psxcd/psxcd_asm.s b/libpsn00b/psxcd/psxcd_asm.s index 129bc89..906ab32 100644 --- a/libpsn00b/psxcd/psxcd_asm.s +++ b/libpsn00b/psxcd/psxcd_asm.s @@ -1,6 +1,6 @@ .set noreorder -.include "hwregs_a.h" +.include "hwregs_a.inc" .section .text diff --git a/libpsn00b/psxgpu/readme.txt b/libpsn00b/psxgpu/readme.txt index 2963b6a..67aa110 100644 --- a/libpsn00b/psxgpu/readme.txt +++ b/libpsn00b/psxgpu/readme.txt @@ -17,5 +17,4 @@ Library developer(s): Library header(s): - hwregs_a.h (GNU assembler port defs) psxgpu.h diff --git a/libpsn00b/psxgte/applymatrixlv.s b/libpsn00b/psxgte/applymatrixlv.s index 332a2f8..3180d0f 100644 --- a/libpsn00b/psxgte/applymatrixlv.s +++ b/libpsn00b/psxgte/applymatrixlv.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .section .text diff --git a/libpsn00b/psxgte/compmatrixlv.s b/libpsn00b/psxgte/compmatrixlv.s index 95da5e9..2908eb9 100644 --- a/libpsn00b/psxgte/compmatrixlv.s +++ b/libpsn00b/psxgte/compmatrixlv.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .set MATRIX_r11r12, 0 .set MATRIX_r13r21, 4 diff --git a/libpsn00b/psxgte/initgeom.s b/libpsn00b/psxgte/initgeom.s index 14ca293..d004ecc 100644 --- a/libpsn00b/psxgte/initgeom.s +++ b/libpsn00b/psxgte/initgeom.s @@ -1,6 +1,6 @@ .set noreorder -.include "gtereg.h" +.include "gtereg.inc" .section .text diff --git a/libpsn00b/psxgte/mulmatrix.s b/libpsn00b/psxgte/mulmatrix.s index 19dabe8..08c79c2 100644 --- a/libpsn00b/psxgte/mulmatrix.s +++ b/libpsn00b/psxgte/mulmatrix.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .section .text diff --git a/libpsn00b/psxgte/mulmatrix0.s b/libpsn00b/psxgte/mulmatrix0.s index 874226b..c2fd859 100644 --- a/libpsn00b/psxgte/mulmatrix0.s +++ b/libpsn00b/psxgte/mulmatrix0.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .section .text diff --git a/libpsn00b/psxgte/pushpopmatrix.s b/libpsn00b/psxgte/pushpopmatrix.s index d10687a..ca6b992 100644 --- a/libpsn00b/psxgte/pushpopmatrix.s +++ b/libpsn00b/psxgte/pushpopmatrix.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .section .text diff --git a/libpsn00b/psxgte/readme.txt b/libpsn00b/psxgte/readme.txt index 13067ee..3242474 100644 --- a/libpsn00b/psxgte/readme.txt +++ b/libpsn00b/psxgte/readme.txt @@ -21,9 +21,9 @@ Library developer(s): Library header(s): - gtereg.h + gtereg.inc inline_c.h - inline_s.h + inline_s.inc psxgte.h diff --git a/libpsn00b/psxgte/scalematrix.s b/libpsn00b/psxgte/scalematrix.s index 3e83800..1b2b6dd 100644 --- a/libpsn00b/psxgte/scalematrix.s +++ b/libpsn00b/psxgte/scalematrix.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .section .text diff --git a/libpsn00b/psxgte/scalematrixl.s b/libpsn00b/psxgte/scalematrixl.s index 014b85a..53c2d14 100644 --- a/libpsn00b/psxgte/scalematrixl.s +++ b/libpsn00b/psxgte/scalematrixl.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .section .text diff --git a/libpsn00b/psxgte/square0.s b/libpsn00b/psxgte/square0.s index d037b7e..a8ca107 100644 --- a/libpsn00b/psxgte/square0.s +++ b/libpsn00b/psxgte/square0.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .section .text diff --git a/libpsn00b/psxgte/squareroot.s b/libpsn00b/psxgte/squareroot.s index a038e18..72198b4 100644 --- a/libpsn00b/psxgte/squareroot.s +++ b/libpsn00b/psxgte/squareroot.s @@ -1,7 +1,7 @@ .set noreorder -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .section .text diff --git a/libpsn00b/psxgte/vectornormals.s b/libpsn00b/psxgte/vectornormals.s index 939c4d1..85e94e6 100644 --- a/libpsn00b/psxgte/vectornormals.s +++ b/libpsn00b/psxgte/vectornormals.s @@ -1,8 +1,8 @@ .set noreorder .set noat -.include "gtereg.h" -.include "inline_s.h" +.include "gtereg.inc" +.include "inline_s.inc" .section .text diff --git a/libpsn00b/psxsio/_sio_control.s b/libpsn00b/psxsio/_sio_control.s index bf3b9b9..6378def 100644 --- a/libpsn00b/psxsio/_sio_control.s +++ b/libpsn00b/psxsio/_sio_control.s @@ -1,6 +1,6 @@ .set noreorder -.include "hwregs_a.h" +.include "hwregs_a.inc" .section .text -- cgit v1.2.3