Merge branch 'docu_boot' into 'master'

Big documentation update for the boot section

See merge request banjo.decomp/banjo-kazooie!115
This commit is contained in:
Mario
2026-03-29 15:25:20 +00:00
376 changed files with 1607 additions and 27377 deletions
+2 -3
View File
@@ -9,9 +9,8 @@ asm/nonmatchings
asm/data
asm/*.s
asm/*/*.s
asm/core1/os
!asm/ultra
!asm/core1/ultra
asm/boot/
asm/core1/
build/*
build/
+4
View File
@@ -16,3 +16,7 @@
[submodule "tools/bk_rom_compressor"]
path = tools/bk_rom_compressor
url = https://github.com/MittenzHugg/bk_rom_compressor.git
[submodule "lib/ultralib"]
path = lib/ultralib
url = https://github.com/mariob92/ultralib.git
branch = banjo-kazooie
+23 -55
View File
@@ -67,7 +67,7 @@ BUILD_ROOT := build
BUILD_DIR := $(BUILD_ROOT)/$(VERSION)
ALL_ASSET_FILES := $(shell find $(ASSET_ROOT) -type f -iname '*.*' 2> /dev/null)
C_SRCS := $(shell find $(SRC_ROOT) -type f -iname '*.c' 2> /dev/null)
BOOT_C_SRCS := $(wildcard $(SRC_ROOT)/done/*.c)
BOOT_C_SRCS := $(shell find $(SRC_ROOT)/boot -type f -iname '*.c' 2> /dev/null)
ALL_ASM_SRCS := $(filter-out $(ASM_ROOT)/$(NONMATCHINGS), $(shell find $(ASM_ROOT) -name $(NONMATCHINGS) -prune -o -iname '*.s' 2> /dev/null))
ALL_BINS := $(shell find $(BIN_ROOT) -type f -iname '*.bin' 2> /dev/null)
# Files referenced in the splat file
@@ -116,8 +116,8 @@ BIN_OBJS := $(filter-out $(ASSET_OBJS),$(BIN_OBJS))
ALL_OBJS := $(C_OBJS) $(ASM_OBJS) $(BIN_OBJS)
SYMBOL_ADDRS := symbol_addrs.$(VERSION).txt
SYMBOL_ADDR_FILES := $(filter-out $(SYMBOL_ADDRS), $(wildcard symbol_addrs.*.$(VERSION).txt))
MIPS3_OBJS := $(BUILD_DIR)/$(SRC_ROOT)/core1/ll.c.o $(BUILD_DIR)/$(SRC_ROOT)/core1/ll_cvt.c.o
BOOT_MIPS3_OBJS := $(BUILD_DIR)/$(SRC_ROOT)/done/ll.c.o
MIPS3_OBJS := $(BUILD_DIR)/$(SRC_ROOT)/core1/ultra/libc/ll.c.o $(BUILD_DIR)/$(SRC_ROOT)/core1/ultra/libc/llcvt.c.o
BOOT_MIPS3_OBJS := $(BUILD_DIR)/$(SRC_ROOT)/boot/ultra/libc/ll.c.o
BOOT_C_OBJS := $(filter-out $(BOOT_MIPS3_OBJS),$(BOOT_C_OBJS))
COMPRESSED_SYMBOLS := $(BUILD_DIR)/compressed_symbols.txt
@@ -158,10 +158,10 @@ endef
### Flags ###
# Build tool flags
CFLAGS := -c -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm $(OPT_FLAGS) $(MIPSBIT) -D_FINALROM -DF3DEX_GBI -DVERSION='$(C_VERSION)'
CFLAGS := -c -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm $(OPT_FLAGS) $(MIPSBIT) -D_FINALROM -DF3DEX_GBI -DVERSION='$(C_VERSION)' -DNDEBUG -DBUILD_VERSION=VERSION_I -DBKDIFFS
CFLAGS += -woff 649,654,838,807
CPPFLAGS := -D_FINALROM -DN_MICRO
INCLUDE_CFLAGS := -I . -I include -I include/2.0L -I include/2.0L/PR
CPPFLAGS := -D_FINALROM -DN_MICRO -DNDEBUG -DBUILD_VERSION=VERSION_I -DBKDIFFS
INCLUDE_CFLAGS := -I . -I include -I lib/ultralib/include -I lib/ultralib/include/PR -I lib/ultralib/include/PRinternal -I lib/ultralib/include/compiler/ido -I include/n_audio/PR -I lib/ultralib/src/audio
OPT_FLAGS := -O2
MIPSBIT := -mips2
ASFLAGS := -EB -mtune=vr4300 -march=vr4300 -mabi=32 -I include
@@ -325,9 +325,9 @@ $(DECOMPRESSED_BASEROM): $(BASEROM) $(BK_ROM_DECOMPRESS)
@$(BK_ROM_DECOMPRESS) $< $@
# .o -> .elf (dummy symbols)
$(PRELIM_ELF): $(ALL_OBJS) $(LD_SCRIPT) $(ASSET_OBJS)
$(PRELIM_ELF): $(ALL_OBJS) $(LD_SCRIPT) $(ASSET_OBJS) $(BUILD_DIR)/libultra_rom.a $(BUILD_DIR)/libultra_rom_boot.a
$(call print1,Linking elf:,$@)
@$(LD) $(LDFLAGS) -T rzip_dummy_addrs.$(VERSION).txt -o $@
@$(LD) $(LDFLAGS) -T rzip_dummy_addrs.$(VERSION).txt $(BUILD_DIR)/libultra_rom.a $(BUILD_DIR)/libultra_rom_boot.a -o $@
# .elf -> .z64 (dummy symbols)
$(PRELIM_Z64) : $(PRELIM_ELF)
@@ -339,9 +339,9 @@ $(COMPRESSED_SYMBOLS): $(PRELIM_ELF) $(PRELIM_Z64) $(BK_ROM_COMPRESS)
@$(BK_ROM_COMPRESS) --symbols $(PRELIM_ELF) $(PRELIM_Z64) $@
# .o -> .elf (game)
$(ELF): $(ALL_OBJS) $(LD_SCRIPT) $(ASSET_OBJS) $(COMPRESSED_SYMBOLS)
$(ELF): $(ALL_OBJS) $(LD_SCRIPT) $(ASSET_OBJS) $(COMPRESSED_SYMBOLS) $(BUILD_DIR)/libultra_rom.a $(BUILD_DIR)/libultra_rom_boot.a
$(call print1,Linking elf:,$@)
@$(LD) $(LDFLAGS) -T $(COMPRESSED_SYMBOLS) -o $@
@$(LD) $(LDFLAGS) -T $(COMPRESSED_SYMBOLS) $(BUILD_DIR)/libultra_rom.a $(BUILD_DIR)/libultra_rom_boot.a -o $@
# .elf -> .z64 (uncompressed)
$(UNCOMPRESSED_Z64) : $(ELF)
@@ -352,6 +352,15 @@ $(UNCOMPRESSED_Z64) : $(ELF)
$(FINAL_Z64) : $(UNCOMPRESSED_Z64) $(ELF) $(BK_ROM_COMPRESS)
@$(BK_ROM_COMPRESS) $(ELF) $(UNCOMPRESSED_Z64) $@
# Libultra files
$(BUILD_DIR)/libultra_rom.a:
@$(MAKE) -C lib/ultralib VERSION=I TARGET=libultra_rom COMPARE=0 MODERN_LD=1 setup
@$(MAKE) -C lib/ultralib VERSION=I TARGET=libultra_rom COMPARE=0 MODERN_LD=1
@$(CP) lib/ultralib/build/I/libultra_rom/libultra_rom.a $@
$(BUILD_DIR)/libultra_rom_boot.a: $(BUILD_DIR)/libultra_rom.a
@$(OBJCOPY) --prefix-symbols=boot_ $< $@
# TOOLS
# Tool for spliting BK asset sections into and from ROM Bin and transforming certain file types
$(BK_ASSET_TOOL): tools/bk_asset_tool/Cargo.toml tools/bk_asset_tool/Cargo.lock $(wildcard tools/bk_rom_compressor/src/*.rs)
@@ -367,6 +376,7 @@ $(BK_ROM_DECOMPRESS): tools/bk_rom_compressor/Cargo.toml tools/bk_rom_compressor
clean:
$(call print0,Cleaning build artifacts)
@$(MAKE) -C lib/ultralib clean
@$(RM) -rf $(BUILD_ROOT)
@$(RM) -rf $(DECOMPRESSED_BASEROM)
@$(RM) -rf $(BIN_ROOT)
@@ -375,54 +385,12 @@ clean:
@$(RM) -rf $(addprefix $(ASM_ROOT)/,$(filter-out core1,$(OVERLAYS)))
@$(RM) -rf $(ASM_ROOT)/data
@$(RM) -rf $(ASM_ROOT)/core1/*.s
@$(RM) -rf $(ASM_ROOT)/core1/os
@$(RM) -f *.ld
# Per-file flag definitions
build/$(VERSION)/src/core1/io/%.c.o: OPT_FLAGS = -O1
build/$(VERSION)/src/core1/os/%.c.o: OPT_FLAGS = -O1
build/$(VERSION)/src/core1/gu/%.c.o: OPT_FLAGS = -O3
build/$(VERSION)/src/core1/gu/%.c.o: INCLUDE_CFLAGS = -I . -I include -I include/2.0L -I include/2.0L/PR
build/$(VERSION)/src/core1/audio/%.c.o: OPT_FLAGS = -O3
build/$(VERSION)/src/core1/audio/%.c.o: INCLUDE_CFLAGS = -I . -I include -I include/2.0L -I include/2.0L/PR
build/$(VERSION)/src/core1/ll.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/core1/ll.c.o: MIPSBIT := -mips3 -o32
build/$(VERSION)/src/core1/ll_cvt.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/core1/ll_cvt.c.o: MIPSBIT := -mips3 -o32
build/$(VERSION)/src/bk_boot_27F0.c.o: OPT_FLAGS = -O2
build/$(VERSION)/src/done/destroythread.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/pirawdma.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/thread.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/pimgr.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/getthreadid.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/setthreadpri.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/createthread.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/yieldthread.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/setglobalintmask.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/recvmesg.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/startthread.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/devmgr.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/sendmesg.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/pigetstat.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/si.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/resetglobalintmask.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/epirawwrite.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/epirawread.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/createmesgqueue.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/leodiskinit.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/virtualtophysical.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/ll.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/ll.c.o: MIPSBIT := -mips3 -o32
build/$(VERSION)/src/done/sirawwrite.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/sirawread.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/initialize.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/pirawread.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/seteventmesg.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/siacs.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/cartrominit.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/leointerrupt.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/done/epirawdma.c.o: OPT_FLAGS := -O1
build/$(VERSION)/src/core1/ultra/audio/%.c.o: OPT_FLAGS = -O3
build/$(VERSION)/src/core1/n_audio/%.c.o: OPT_FLAGS = -O3
build/$(VERSION)/src/core1/ultra/gu/%.c.o: OPT_FLAGS := -O3
# Disable implicit rules
MAKEFLAGS += -r
-743
View File
@@ -1,743 +0,0 @@
#include <sys/asm.h>
#include <PR/rcp.h>
.include "macro.inc"
/* assembler directives */
.set noat /* allow manual use of $at */
.set noreorder /* don't insert nops after branches */
.set gp=64 /* allow use of 64-bit general purpose registers */
.data
EXPORT(__osHwIntTable)
.word 0x0, 0x0, 0x0, 0x0, 0x0
.rdata
#define REDISPATCH 0x00
#define SW1 0x04
#define SW2 0x08
#define RCP 0x0c
#define CART 0x10
#define PRENMI 0x14
#define IP6_HDLR 0x18
#define IP7_HDLR 0x1c
#define COUNTER 0x20
__osIntOffTable:
.byte REDISPATCH
.byte PRENMI
.byte IP6_HDLR
.byte IP6_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte COUNTER
.byte COUNTER
.byte IP6_HDLR
.byte IP6_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte REDISPATCH
.byte SW1
.byte SW2
.byte SW2
.byte RCP
.byte RCP
.byte RCP
.byte RCP
.byte CART
.byte CART
.byte CART
.byte CART
.byte CART
.byte CART
.byte CART
.byte CART
__osIntTable:
.word redispatch, sw1, sw2, rcp, cart, prenmi, IP6_Hdlr, IP7_Hdlr, counter
.section .text, "ax"
/* Generated by spimdisasm 1.24.3 */
# Handwritten function
glabel func_8026A2E0
/* F45B10 8026A2E0 3C1A8027 */ lui $k0, %hi(D_8026A300)
/* F45B14 8026A2E4 275AA300 */ addiu $k0, $k0, %lo(D_8026A300)
/* F45B18 8026A2E8 03400008 */ jr $k0
/* F45B1C 8026A2EC 00000000 */ nop
/* F45B20 8026A2F0 3C1A8027 */ lui $k0, %hi(D_8026A300)
/* F45B24 8026A2F4 275AA300 */ addiu $k0, $k0, %lo(D_8026A300)
/* F45B28 8026A2F8 03400008 */ jr $k0
/* F45B2C 8026A2FC 00000000 */ nop
D_8026A300:
/* F45B30 8026A300 3C1A8028 */ lui $k0, %hi(__osThreadSave)
/* F45B34 8026A304 275A5DE0 */ addiu $k0, $k0, %lo(__osThreadSave)
/* F45B38 8026A308 FF410020 */ sd $at, 0x20($k0)
/* F45B3C 8026A30C 401B6000 */ mfc0 $k1, $12
/* F45B40 8026A310 AF5B0118 */ sw $k1, 0x118($k0)
/* F45B44 8026A314 2401FFFC */ addiu $at, $zero, -0x4
/* F45B48 8026A318 0361D824 */ and $k1, $k1, $at
/* F45B4C 8026A31C 409B6000 */ mtc0 $k1, $12
/* F45B50 8026A320 FF480058 */ sd $t0, 0x58($k0)
/* F45B54 8026A324 FF490060 */ sd $t1, 0x60($k0)
/* F45B58 8026A328 FF4A0068 */ sd $t2, 0x68($k0)
/* F45B5C 8026A32C AF400018 */ sw $zero, 0x18($k0)
/* F45B60 8026A330 40086800 */ mfc0 $t0, $13
/* F45B64 8026A334 03404025 */ or $t0, $k0, $zero
/* F45B68 8026A338 3C1A8027 */ lui $k0, %hi(__osRunningThread)
/* F45B6C 8026A33C 8F5A7380 */ lw $k0, %lo(__osRunningThread)($k0)
/* F45B70 8026A340 DD090020 */ ld $t1, 0x20($t0)
/* F45B74 8026A344 FF490020 */ sd $t1, 0x20($k0)
/* F45B78 8026A348 DD090118 */ ld $t1, 0x118($t0)
/* F45B7C 8026A34C FF490118 */ sd $t1, 0x118($k0)
/* F45B80 8026A350 DD090058 */ ld $t1, 0x58($t0)
/* F45B84 8026A354 FF490058 */ sd $t1, 0x58($k0)
/* F45B88 8026A358 DD090060 */ ld $t1, 0x60($t0)
/* F45B8C 8026A35C FF490060 */ sd $t1, 0x60($k0)
/* F45B90 8026A360 DD090068 */ ld $t1, 0x68($t0)
/* F45B94 8026A364 FF490068 */ sd $t1, 0x68($k0)
/* F45B98 8026A368 8F5B0118 */ lw $k1, 0x118($k0)
/* F45B9C 8026A36C 00004012 */ mflo $t0
/* F45BA0 8026A370 FF480108 */ sd $t0, 0x108($k0)
/* F45BA4 8026A374 00004010 */ mfhi $t0
/* F45BA8 8026A378 3369FF00 */ andi $t1, $k1, 0xFF00
/* F45BAC 8026A37C FF420028 */ sd $v0, 0x28($k0)
/* F45BB0 8026A380 FF430030 */ sd $v1, 0x30($k0)
/* F45BB4 8026A384 FF440038 */ sd $a0, 0x38($k0)
/* F45BB8 8026A388 FF450040 */ sd $a1, 0x40($k0)
/* F45BBC 8026A38C FF460048 */ sd $a2, 0x48($k0)
/* F45BC0 8026A390 FF470050 */ sd $a3, 0x50($k0)
/* F45BC4 8026A394 FF4B0070 */ sd $t3, 0x70($k0)
/* F45BC8 8026A398 FF4C0078 */ sd $t4, 0x78($k0)
/* F45BCC 8026A39C FF4D0080 */ sd $t5, 0x80($k0)
/* F45BD0 8026A3A0 FF4E0088 */ sd $t6, 0x88($k0)
/* F45BD4 8026A3A4 FF4F0090 */ sd $t7, 0x90($k0)
/* F45BD8 8026A3A8 FF500098 */ sd $s0, 0x98($k0)
/* F45BDC 8026A3AC FF5100A0 */ sd $s1, 0xA0($k0)
/* F45BE0 8026A3B0 FF5200A8 */ sd $s2, 0xA8($k0)
/* F45BE4 8026A3B4 FF5300B0 */ sd $s3, 0xB0($k0)
/* F45BE8 8026A3B8 FF5400B8 */ sd $s4, 0xB8($k0)
/* F45BEC 8026A3BC FF5500C0 */ sd $s5, 0xC0($k0)
/* F45BF0 8026A3C0 FF5600C8 */ sd $s6, 0xC8($k0)
/* F45BF4 8026A3C4 FF5700D0 */ sd $s7, 0xD0($k0)
/* F45BF8 8026A3C8 FF5800D8 */ sd $t8, 0xD8($k0)
/* F45BFC 8026A3CC FF5900E0 */ sd $t9, 0xE0($k0)
/* F45C00 8026A3D0 FF5C00E8 */ sd $gp, 0xE8($k0)
/* F45C04 8026A3D4 FF5D00F0 */ sd $sp, 0xF0($k0)
/* F45C08 8026A3D8 FF5E00F8 */ sd $fp, 0xF8($k0)
/* F45C0C 8026A3DC FF5F0100 */ sd $ra, 0x100($k0)
/* F45C10 8026A3E0 1120000D */ beqz $t1, .L8026A418
/* F45C14 8026A3E4 FF480110 */ sd $t0, 0x110($k0)
/* F45C18 8026A3E8 3C088027 */ lui $t0, %hi(__OSGlobalIntMask)
/* F45C1C 8026A3EC 25087130 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
/* F45C20 8026A3F0 8D080000 */ lw $t0, 0x0($t0)
/* F45C24 8026A3F4 2401FFFF */ addiu $at, $zero, -0x1
/* F45C28 8026A3F8 01014026 */ xor $t0, $t0, $at
/* F45C2C 8026A3FC 3C01FFFF */ lui $at, (0xFFFF00FF >> 16)
/* F45C30 8026A400 3108FF00 */ andi $t0, $t0, 0xFF00
/* F45C34 8026A404 342100FF */ ori $at, $at, (0xFFFF00FF & 0xFFFF)
/* F45C38 8026A408 01284825 */ or $t1, $t1, $t0
/* F45C3C 8026A40C 0361D824 */ and $k1, $k1, $at
/* F45C40 8026A410 0369D825 */ or $k1, $k1, $t1
/* F45C44 8026A414 AF5B0118 */ sw $k1, 0x118($k0)
.L8026A418:
/* F45C48 8026A418 3C09A430 */ lui $t1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
/* F45C4C 8026A41C 8D29000C */ lw $t1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t1)
/* F45C50 8026A420 5120000C */ beql $t1, $zero, .L8026A454
/* F45C54 8026A424 AF490128 */ sw $t1, 0x128($k0)
/* F45C58 8026A428 3C088027 */ lui $t0, %hi(__OSGlobalIntMask)
/* F45C5C 8026A42C 25087130 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
/* F45C60 8026A430 8D080000 */ lw $t0, 0x0($t0)
/* F45C64 8026A434 8F4C0128 */ lw $t4, 0x128($k0)
/* F45C68 8026A438 2401FFFF */ addiu $at, $zero, -0x1
/* F45C6C 8026A43C 00084402 */ srl $t0, $t0, 16
/* F45C70 8026A440 01014026 */ xor $t0, $t0, $at
/* F45C74 8026A444 3108003F */ andi $t0, $t0, 0x3F
/* F45C78 8026A448 010C4024 */ and $t0, $t0, $t4
/* F45C7C 8026A44C 01284825 */ or $t1, $t1, $t0
/* F45C80 8026A450 AF490128 */ sw $t1, 0x128($k0)
.L8026A454:
/* F45C84 8026A454 40087000 */ mfc0 $t0, $14
/* F45C88 8026A458 AF48011C */ sw $t0, 0x11C($k0)
/* F45C8C 8026A45C 8F480018 */ lw $t0, 0x18($k0)
/* F45C90 8026A460 11000014 */ beqz $t0, .L8026A4B4
/* F45C94 8026A464 00000000 */ nop
/* F45C98 8026A468 4448F800 */ cfc1 $t0, $31
/* F45C9C 8026A46C 00000000 */ nop
/* F45CA0 8026A470 AF48012C */ sw $t0, 0x12C($k0)
/* F45CA4 8026A474 F7400130 */ sdc1 $f0, 0x130($k0)
/* F45CA8 8026A478 F7420138 */ sdc1 $f2, 0x138($k0)
/* F45CAC 8026A47C F7440140 */ sdc1 $f4, 0x140($k0)
/* F45CB0 8026A480 F7460148 */ sdc1 $f6, 0x148($k0)
/* F45CB4 8026A484 F7480150 */ sdc1 $f8, 0x150($k0)
/* F45CB8 8026A488 F74A0158 */ sdc1 $f10, 0x158($k0)
/* F45CBC 8026A48C F74C0160 */ sdc1 $f12, 0x160($k0)
/* F45CC0 8026A490 F74E0168 */ sdc1 $f14, 0x168($k0)
/* F45CC4 8026A494 F7500170 */ sdc1 $f16, 0x170($k0)
/* F45CC8 8026A498 F7520178 */ sdc1 $f18, 0x178($k0)
/* F45CCC 8026A49C F7540180 */ sdc1 $f20, 0x180($k0)
/* F45CD0 8026A4A0 F7560188 */ sdc1 $f22, 0x188($k0)
/* F45CD4 8026A4A4 F7580190 */ sdc1 $f24, 0x190($k0)
/* F45CD8 8026A4A8 F75A0198 */ sdc1 $f26, 0x198($k0)
/* F45CDC 8026A4AC F75C01A0 */ sdc1 $f28, 0x1A0($k0)
/* F45CE0 8026A4B0 F75E01A8 */ sdc1 $f30, 0x1A8($k0)
.L8026A4B4:
/* F45CE4 8026A4B4 40086800 */ mfc0 $t0, $13
/* F45CE8 8026A4B8 AF480120 */ sw $t0, 0x120($k0)
/* F45CEC 8026A4BC 24090002 */ addiu $t1, $zero, 0x2
/* F45CF0 8026A4C0 A7490010 */ sh $t1, 0x10($k0)
/* F45CF4 8026A4C4 3109007C */ andi $t1, $t0, 0x7C
/* F45CF8 8026A4C8 240A0024 */ addiu $t2, $zero, 0x24
/* F45CFC 8026A4CC 512A00B1 */ beql $t1, $t2, handle_break
/* F45D00 8026A4D0 24090001 */ addiu $t1, $zero, 0x1
/* F45D04 8026A4D4 240A002C */ addiu $t2, $zero, 0x2C
/* F45D08 8026A4D8 112A00FF */ beq $t1, $t2, .L8026A8D8
/* F45D0C 8026A4DC 00000000 */ nop
/* F45D10 8026A4E0 240A0000 */ addiu $t2, $zero, 0x0
/* F45D14 8026A4E4 152A00C3 */ bne $t1, $t2, .L8026A7F4
/* F45D18 8026A4E8 00000000 */ nop
/* F45D1C 8026A4EC 03688024 */ and $s0, $k1, $t0
.L8026A4F0:
/* F45D20 8026A4F0 3209FF00 */ andi $t1, $s0, 0xFF00
.L8026A4F4:
/* F45D24 8026A4F4 00095302 */ srl $t2, $t1, 12
/* F45D28 8026A4F8 15400003 */ bnez $t2, .L8026A508
/* F45D2C 8026A4FC 00000000 */ nop
/* F45D30 8026A500 00095202 */ srl $t2, $t1, 8
/* F45D34 8026A504 214A0010 */ addi $t2, $t2, 0x10
.L8026A508:
/* F45D38 8026A508 3C018028 */ lui $at, %hi(__osIntOffTable)
/* F45D3C 8026A50C 002A0821 */ addu $at, $at, $t2
/* F45D40 8026A510 902A8D60 */ lbu $t2, %lo(__osIntOffTable)($at)
/* F45D44 8026A514 3C018028 */ lui $at, %hi(__osIntTable)
/* F45D48 8026A518 002A0821 */ addu $at, $at, $t2
/* F45D4C 8026A51C 8C2A8D80 */ lw $t2, %lo(__osIntTable)($at)
/* F45D50 8026A520 01400008 */ jr $t2
/* F45D54 8026A524 00000000 */ nop
IP6_Hdlr:
/* F45D58 8026A528 2401DFFF */ addiu $at, $zero, -0x2001
/* F45D5C 8026A52C 1000FFF0 */ b .L8026A4F0
/* F45D60 8026A530 02018024 */ and $s0, $s0, $at
IP7_Hdlr:
/* F45D64 8026A534 2401BFFF */ addiu $at, $zero, -0x4001
/* F45D68 8026A538 1000FFED */ b .L8026A4F0
/* F45D6C 8026A53C 02018024 */ and $s0, $s0, $at
counter:
/* F45D70 8026A540 40095800 */ mfc0 $t1, $11
/* F45D74 8026A544 40895800 */ mtc0 $t1, $11
/* F45D78 8026A548 0C09AA09 */ jal func_8026A824
/* F45D7C 8026A54C 24040018 */ addiu $a0, $zero, 0x18
/* F45D80 8026A550 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16)
/* F45D84 8026A554 34217FFF */ ori $at, $at, (0xFFFF7FFF & 0xFFFF)
/* F45D88 8026A558 1000FFE5 */ b .L8026A4F0
/* F45D8C 8026A55C 02018024 */ and $s0, $s0, $at
cart:
/* F45D90 8026A560 2401F7FF */ addiu $at, $zero, -0x801
/* F45D94 8026A564 02018024 */ and $s0, $s0, $at
/* F45D98 8026A568 240A0004 */ addiu $t2, $zero, 0x4
/* F45D9C 8026A56C 3C018027 */ lui $at, %hi(__osHwIntTable)
/* F45DA0 8026A570 002A0821 */ addu $at, $at, $t2
/* F45DA4 8026A574 8C2A7350 */ lw $t2, %lo(__osHwIntTable)($at)
/* F45DA8 8026A578 3C1D8028 */ lui $sp, %hi(leoDiskStack)
/* F45DAC 8026A57C 27BD5F90 */ addiu $sp, $sp, %lo(leoDiskStack)
/* F45DB0 8026A580 24040010 */ addiu $a0, $zero, 0x10
/* F45DB4 8026A584 11400007 */ beqz $t2, .L8026A5A4
/* F45DB8 8026A588 27BD0FF0 */ addiu $sp, $sp, 0xFF0
/* F45DBC 8026A58C 0140F809 */ jalr $t2
/* F45DC0 8026A590 00000000 */ nop
/* F45DC4 8026A594 10400003 */ beqz $v0, .L8026A5A4
/* F45DC8 8026A598 00000000 */ nop
/* F45DCC 8026A59C 10000082 */ b redispatch
/* F45DD0 8026A5A0 00000000 */ nop
.L8026A5A4:
/* F45DD4 8026A5A4 0C09AA09 */ jal func_8026A824
/* F45DD8 8026A5A8 00000000 */ nop
/* F45DDC 8026A5AC 1000FFD1 */ b .L8026A4F4
/* F45DE0 8026A5B0 3209FF00 */ andi $t1, $s0, 0xFF00
rcp:
/* F45DE4 8026A5B4 3C088027 */ lui $t0, %hi(__OSGlobalIntMask)
/* F45DE8 8026A5B8 25087130 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
/* F45DEC 8026A5BC 8D080000 */ lw $t0, 0x0($t0)
/* F45DF0 8026A5C0 3C11A430 */ lui $s1, %hi(PHYS_TO_K1(MI_INTR_REG))
/* F45DF4 8026A5C4 8E310008 */ lw $s1, %lo(PHYS_TO_K1(MI_INTR_REG))($s1)
/* F45DF8 8026A5C8 00084402 */ srl $t0, $t0, 16
/* F45DFC 8026A5CC 02288824 */ and $s1, $s1, $t0
/* F45E00 8026A5D0 32290001 */ andi $t1, $s1, 0x1
/* F45E04 8026A5D4 51200014 */ beql $t1, $zero, .L8026A628
/* F45E08 8026A5D8 32290008 */ andi $t1, $s1, 0x8
/* F45E0C 8026A5DC 3C0CA404 */ lui $t4, %hi(PHYS_TO_K1(SP_STATUS_REG))
/* F45E10 8026A5E0 8D8C0010 */ lw $t4, %lo(PHYS_TO_K1(SP_STATUS_REG))($t4)
/* F45E14 8026A5E4 24090008 */ addiu $t1, $zero, 0x8
/* F45E18 8026A5E8 3C01A404 */ lui $at, %hi(PHYS_TO_K1(SP_STATUS_REG))
/* F45E1C 8026A5EC 318C0300 */ andi $t4, $t4, 0x300
/* F45E20 8026A5F0 3231003E */ andi $s1, $s1, 0x3E
/* F45E24 8026A5F4 11800007 */ beqz $t4, .L8026A614
/* F45E28 8026A5F8 AC290010 */ sw $t1, %lo(PHYS_TO_K1(SP_STATUS_REG))($at)
/* F45E2C 8026A5FC 0C09AA09 */ jal func_8026A824
/* F45E30 8026A600 24040020 */ addiu $a0, $zero, 0x20
/* F45E34 8026A604 52200039 */ beql $s1, $zero, .L8026A6EC
/* F45E38 8026A608 2401FBFF */ addiu $at, $zero, -0x401
/* F45E3C 8026A60C 10000006 */ b .L8026A628
/* F45E40 8026A610 32290008 */ andi $t1, $s1, 0x8
.L8026A614:
/* F45E44 8026A614 0C09AA09 */ jal func_8026A824
/* F45E48 8026A618 24040058 */ addiu $a0, $zero, 0x58
/* F45E4C 8026A61C 52200033 */ beql $s1, $zero, .L8026A6EC
/* F45E50 8026A620 2401FBFF */ addiu $at, $zero, -0x401
/* F45E54 8026A624 32290008 */ andi $t1, $s1, 0x8
.L8026A628:
/* F45E58 8026A628 11200007 */ beqz $t1, .L8026A648
/* F45E5C 8026A62C 3C01A440 */ lui $at, %hi(PHYS_TO_K1(VI_CURRENT_REG))
/* F45E60 8026A630 32310037 */ andi $s1, $s1, 0x37
/* F45E64 8026A634 AC200010 */ sw $zero, %lo(PHYS_TO_K1(VI_CURRENT_REG))($at)
/* F45E68 8026A638 0C09AA09 */ jal func_8026A824
/* F45E6C 8026A63C 24040038 */ addiu $a0, $zero, 0x38
/* F45E70 8026A640 5220002A */ beql $s1, $zero, .L8026A6EC
/* F45E74 8026A644 2401FBFF */ addiu $at, $zero, -0x401
.L8026A648:
/* F45E78 8026A648 32290004 */ andi $t1, $s1, 0x4
/* F45E7C 8026A64C 5120000A */ beql $t1, $zero, .L8026A678
/* F45E80 8026A650 32290002 */ andi $t1, $s1, 0x2
/* F45E84 8026A654 24090001 */ addiu $t1, $zero, 0x1
/* F45E88 8026A658 3C01A450 */ lui $at, %hi(PHYS_TO_K1(AI_STATUS_REG))
/* F45E8C 8026A65C 3231003B */ andi $s1, $s1, 0x3B
/* F45E90 8026A660 AC29000C */ sw $t1, %lo(PHYS_TO_K1(AI_STATUS_REG))($at)
/* F45E94 8026A664 0C09AA09 */ jal func_8026A824
/* F45E98 8026A668 24040030 */ addiu $a0, $zero, 0x30
/* F45E9C 8026A66C 5220001F */ beql $s1, $zero, .L8026A6EC
/* F45EA0 8026A670 2401FBFF */ addiu $at, $zero, -0x401
/* F45EA4 8026A674 32290002 */ andi $t1, $s1, 0x2
.L8026A678:
/* F45EA8 8026A678 11200007 */ beqz $t1, .L8026A698
/* F45EAC 8026A67C 3C01A480 */ lui $at, %hi(PHYS_TO_K1(SI_STATUS_REG))
/* F45EB0 8026A680 3231003D */ andi $s1, $s1, 0x3D
/* F45EB4 8026A684 AC200018 */ sw $zero, %lo(PHYS_TO_K1(SI_STATUS_REG))($at)
/* F45EB8 8026A688 0C09AA09 */ jal func_8026A824
/* F45EBC 8026A68C 24040028 */ addiu $a0, $zero, 0x28
/* F45EC0 8026A690 52200016 */ beql $s1, $zero, .L8026A6EC
/* F45EC4 8026A694 2401FBFF */ addiu $at, $zero, -0x401
.L8026A698:
/* F45EC8 8026A698 32290010 */ andi $t1, $s1, 0x10
/* F45ECC 8026A69C 5120000A */ beql $t1, $zero, .L8026A6C8
/* F45ED0 8026A6A0 32290020 */ andi $t1, $s1, 0x20
/* F45ED4 8026A6A4 24090002 */ addiu $t1, $zero, 0x2
/* F45ED8 8026A6A8 3C01A460 */ lui $at, %hi(PHYS_TO_K1(PI_STATUS_REG))
/* F45EDC 8026A6AC 3231002F */ andi $s1, $s1, 0x2F
/* F45EE0 8026A6B0 AC290010 */ sw $t1, %lo(PHYS_TO_K1(PI_STATUS_REG))($at)
/* F45EE4 8026A6B4 0C09AA09 */ jal func_8026A824
/* F45EE8 8026A6B8 24040040 */ addiu $a0, $zero, 0x40
/* F45EEC 8026A6BC 5220000B */ beql $s1, $zero, .L8026A6EC
/* F45EF0 8026A6C0 2401FBFF */ addiu $at, $zero, -0x401
/* F45EF4 8026A6C4 32290020 */ andi $t1, $s1, 0x20
.L8026A6C8:
/* F45EF8 8026A6C8 51200008 */ beql $t1, $zero, .L8026A6EC
/* F45EFC 8026A6CC 2401FBFF */ addiu $at, $zero, -0x401
/* F45F00 8026A6D0 24090800 */ addiu $t1, $zero, 0x800
/* F45F04 8026A6D4 3C01A430 */ lui $at, %hi(PHYS_TO_K1(MI_MODE_REG))
/* F45F08 8026A6D8 3231001F */ andi $s1, $s1, 0x1F
/* F45F0C 8026A6DC AC290000 */ sw $t1, %lo(PHYS_TO_K1(MI_MODE_REG))($at)
/* F45F10 8026A6E0 0C09AA09 */ jal func_8026A824
/* F45F14 8026A6E4 24040048 */ addiu $a0, $zero, 0x48
/* F45F18 8026A6E8 2401FBFF */ addiu $at, $zero, -0x401
.L8026A6EC:
/* F45F1C 8026A6EC 1000FF80 */ b .L8026A4F0
/* F45F20 8026A6F0 02018024 */ and $s0, $s0, $at
prenmi:
/* F45F24 8026A6F4 8F5B0118 */ lw $k1, 0x118($k0)
/* F45F28 8026A6F8 2401EFFF */ addiu $at, $zero, -0x1001
/* F45F2C 8026A6FC 3C098027 */ lui $t1, %hi(__osShutdown)
/* F45F30 8026A700 0361D824 */ and $k1, $k1, $at
/* F45F34 8026A704 AF5B0118 */ sw $k1, 0x118($k0)
/* F45F38 8026A708 2529712C */ addiu $t1, $t1, %lo(__osShutdown)
/* F45F3C 8026A70C 8D2A0000 */ lw $t2, 0x0($t1)
/* F45F40 8026A710 11400003 */ beqz $t2, firstnmi
/* F45F44 8026A714 2401EFFF */ addiu $at, $zero, -0x1001
/* F45F48 8026A718 10000023 */ b redispatch
/* F45F4C 8026A71C 02018024 */ and $s0, $s0, $at
firstnmi:
/* F45F50 8026A720 240A0001 */ addiu $t2, $zero, 0x1
/* F45F54 8026A724 AD2A0000 */ sw $t2, 0x0($t1)
/* F45F58 8026A728 0C09AA09 */ jal func_8026A824
/* F45F5C 8026A72C 24040070 */ addiu $a0, $zero, 0x70
/* F45F60 8026A730 3C0A8027 */ lui $t2, %hi(__osRunQueue)
/* F45F64 8026A734 8D4A7378 */ lw $t2, %lo(__osRunQueue)($t2)
/* F45F68 8026A738 2401EFFF */ addiu $at, $zero, -0x1001
/* F45F6C 8026A73C 02018024 */ and $s0, $s0, $at
/* F45F70 8026A740 8D5B0118 */ lw $k1, 0x118($t2)
/* F45F74 8026A744 0361D824 */ and $k1, $k1, $at
/* F45F78 8026A748 10000017 */ b redispatch
/* F45F7C 8026A74C AD5B0118 */ sw $k1, 0x118($t2)
sw2:
/* F45F80 8026A750 2401FDFF */ addiu $at, $zero, -0x201
/* F45F84 8026A754 01014024 */ and $t0, $t0, $at
/* F45F88 8026A758 40886800 */ mtc0 $t0, $13
/* F45F8C 8026A75C 0C09AA09 */ jal func_8026A824
/* F45F90 8026A760 24040008 */ addiu $a0, $zero, 0x8
/* F45F94 8026A764 2401FDFF */ addiu $at, $zero, -0x201
/* F45F98 8026A768 1000FF61 */ b .L8026A4F0
/* F45F9C 8026A76C 02018024 */ and $s0, $s0, $at
sw1:
/* F45FA0 8026A770 2401FEFF */ addiu $at, $zero, -0x101
/* F45FA4 8026A774 01014024 */ and $t0, $t0, $at
/* F45FA8 8026A778 40886800 */ mtc0 $t0, $13
/* F45FAC 8026A77C 0C09AA09 */ jal func_8026A824
/* F45FB0 8026A780 24040000 */ addiu $a0, $zero, 0x0
/* F45FB4 8026A784 2401FEFF */ addiu $at, $zero, -0x101
/* F45FB8 8026A788 1000FF59 */ b .L8026A4F0
/* F45FBC 8026A78C 02018024 */ and $s0, $s0, $at
/* F45FC0 8026A790 24090001 */ addiu $t1, $zero, 0x1
handle_break:
/* F45FC4 8026A794 A7490012 */ sh $t1, 0x12($k0)
/* F45FC8 8026A798 0C09AA09 */ jal func_8026A824
/* F45FCC 8026A79C 24040050 */ addiu $a0, $zero, 0x50
/* F45FD0 8026A7A0 10000001 */ b redispatch
/* F45FD4 8026A7A4 00000000 */ nop
redispatch:
/* F45FD8 8026A7A8 3C0A8027 */ lui $t2, %hi(__osRunQueue)
/* F45FDC 8026A7AC 8D4A7378 */ lw $t2, %lo(__osRunQueue)($t2)
/* F45FE0 8026A7B0 8F490004 */ lw $t1, 0x4($k0)
/* F45FE4 8026A7B4 8D4B0004 */ lw $t3, 0x4($t2)
/* F45FE8 8026A7B8 012B082A */ slt $at, $t1, $t3
/* F45FEC 8026A7BC 10200007 */ beqz $at, enqueueRunning
/* F45FF0 8026A7C0 00000000 */ nop
/* F45FF4 8026A7C4 3C048027 */ lui $a0, %hi(__osRunQueue)
/* F45FF8 8026A7C8 03402825 */ or $a1, $k0, $zero
/* F45FFC 8026A7CC 0C09AA83 */ jal __osEnqueueThread
/* F46000 8026A7D0 24847378 */ addiu $a0, $a0, %lo(__osRunQueue)
/* F46004 8026A7D4 0809AA99 */ j __osDispatchThread
/* F46008 8026A7D8 00000000 */ nop
enqueueRunning:
/* F4600C 8026A7DC 3C098027 */ lui $t1, %hi(__osRunQueue)
/* F46010 8026A7E0 25297378 */ addiu $t1, $t1, %lo(__osRunQueue)
/* F46014 8026A7E4 8D2A0000 */ lw $t2, 0x0($t1)
/* F46018 8026A7E8 AF4A0000 */ sw $t2, 0x0($k0)
/* F4601C 8026A7EC 0809AA99 */ j __osDispatchThread
/* F46020 8026A7F0 AD3A0000 */ sw $k0, 0x0($t1)
.L8026A7F4:
/* F46024 8026A7F4 3C018027 */ lui $at, %hi(__osFaultedThread)
/* F46028 8026A7F8 AC3A7384 */ sw $k0, %lo(__osFaultedThread)($at)
/* F4602C 8026A7FC 24090001 */ addiu $t1, $zero, 0x1
/* F46030 8026A800 A7490010 */ sh $t1, 0x10($k0)
/* F46034 8026A804 24090002 */ addiu $t1, $zero, 0x2
/* F46038 8026A808 A7490012 */ sh $t1, 0x12($k0)
/* F4603C 8026A80C 400A4000 */ mfc0 $t2, $8
/* F46040 8026A810 AF4A0124 */ sw $t2, 0x124($k0)
/* F46044 8026A814 0C09AA09 */ jal func_8026A824
/* F46048 8026A818 24040060 */ addiu $a0, $zero, 0x60
/* F4604C 8026A81C 0809AA99 */ j __osDispatchThread
/* F46050 8026A820 00000000 */ nop
endlabel func_8026A2E0
.size func_8026A2E0, . - func_8026A2E0
# Handwritten function
glabel func_8026A824
/* F46054 8026A824 3C0A8028 */ lui $t2, %hi(__osEventStateTab)
/* F46058 8026A828 254A4660 */ addiu $t2, $t2, %lo(__osEventStateTab)
/* F4605C 8026A82C 01445021 */ addu $t2, $t2, $a0
/* F46060 8026A830 8D490000 */ lw $t1, 0x0($t2)
/* F46064 8026A834 03E09025 */ or $s2, $ra, $zero
/* F46068 8026A838 11200025 */ beqz $t1, .L8026A8D0
/* F4606C 8026A83C 00000000 */ nop
/* F46070 8026A840 8D2B0008 */ lw $t3, 0x8($t1)
/* F46074 8026A844 8D2C0010 */ lw $t4, 0x10($t1)
/* F46078 8026A848 016C082A */ slt $at, $t3, $t4
/* F4607C 8026A84C 10200020 */ beqz $at, .L8026A8D0
/* F46080 8026A850 00000000 */ nop
/* F46084 8026A854 8D2D000C */ lw $t5, 0xC($t1)
/* F46088 8026A858 01AB6821 */ addu $t5, $t5, $t3
/* F4608C 8026A85C 01AC001A */ div $zero, $t5, $t4
/* F46090 8026A860 15800002 */ bnez $t4, .L8026A86C
/* F46094 8026A864 00000000 */ nop
/* F46098 8026A868 0007000D */ break 7
.L8026A86C:
/* F4609C 8026A86C 2401FFFF */ addiu $at, $zero, -0x1
/* F460A0 8026A870 15810004 */ bne $t4, $at, .L8026A884
/* F460A4 8026A874 3C018000 */ lui $at, (0x80000000 >> 16)
/* F460A8 8026A878 15A10002 */ bne $t5, $at, .L8026A884
/* F460AC 8026A87C 00000000 */ nop
/* F460B0 8026A880 0006000D */ break 6
.L8026A884:
/* F460B4 8026A884 8D2C0014 */ lw $t4, 0x14($t1)
/* F460B8 8026A888 00006810 */ mfhi $t5
/* F460BC 8026A88C 000D6880 */ sll $t5, $t5, 2
/* F460C0 8026A890 018D6021 */ addu $t4, $t4, $t5
/* F460C4 8026A894 8D4D0004 */ lw $t5, 0x4($t2)
/* F460C8 8026A898 256A0001 */ addiu $t2, $t3, 0x1
/* F460CC 8026A89C AD8D0000 */ sw $t5, 0x0($t4)
/* F460D0 8026A8A0 AD2A0008 */ sw $t2, 0x8($t1)
/* F460D4 8026A8A4 8D2A0000 */ lw $t2, 0x0($t1)
/* F460D8 8026A8A8 8D4B0000 */ lw $t3, 0x0($t2)
/* F460DC 8026A8AC 11600008 */ beqz $t3, .L8026A8D0
/* F460E0 8026A8B0 00000000 */ nop
/* F460E4 8026A8B4 0C09AA95 */ jal __osPopThread
/* F460E8 8026A8B8 01202025 */ or $a0, $t1, $zero
/* F460EC 8026A8BC 00405025 */ or $t2, $v0, $zero
/* F460F0 8026A8C0 3C048027 */ lui $a0, %hi(__osRunQueue)
/* F460F4 8026A8C4 01402825 */ or $a1, $t2, $zero
/* F460F8 8026A8C8 0C09AA83 */ jal __osEnqueueThread
/* F460FC 8026A8CC 24847378 */ addiu $a0, $a0, %lo(__osRunQueue)
.L8026A8D0:
/* F46100 8026A8D0 02400008 */ jr $s2
/* F46104 8026A8D4 00000000 */ nop
.L8026A8D8:
/* F46108 8026A8D8 3C013000 */ lui $at, (0x30000000 >> 16)
/* F4610C 8026A8DC 01014824 */ and $t1, $t0, $at
/* F46110 8026A8E0 00094F02 */ srl $t1, $t1, 28
/* F46114 8026A8E4 240A0001 */ addiu $t2, $zero, 0x1
/* F46118 8026A8E8 152AFFC2 */ bne $t1, $t2, .L8026A7F4
/* F4611C 8026A8EC 00000000 */ nop
/* F46120 8026A8F0 8F5B0118 */ lw $k1, 0x118($k0)
/* F46124 8026A8F4 3C012000 */ lui $at, (0x20000000 >> 16)
/* F46128 8026A8F8 24090001 */ addiu $t1, $zero, 0x1
/* F4612C 8026A8FC 0361D825 */ or $k1, $k1, $at
/* F46130 8026A900 AF490018 */ sw $t1, 0x18($k0)
/* F46134 8026A904 1000FFB5 */ b enqueueRunning
/* F46138 8026A908 AF5B0118 */ sw $k1, 0x118($k0)
endlabel func_8026A824
.size func_8026A824, . - func_8026A824
# Handwritten function
glabel __osEnqueueAndYield
/* F4613C 8026A90C 3C058027 */ lui $a1, %hi(__osRunningThread)
/* F46140 8026A910 8CA57380 */ lw $a1, %lo(__osRunningThread)($a1)
/* F46144 8026A914 40086000 */ mfc0 $t0, $12
/* F46148 8026A918 8CBB0018 */ lw $k1, 0x18($a1)
/* F4614C 8026A91C 35080002 */ ori $t0, $t0, 0x2
/* F46150 8026A920 ACA80118 */ sw $t0, 0x118($a1)
/* F46154 8026A924 FCB00098 */ sd $s0, 0x98($a1)
/* F46158 8026A928 FCB100A0 */ sd $s1, 0xA0($a1)
/* F4615C 8026A92C FCB200A8 */ sd $s2, 0xA8($a1)
/* F46160 8026A930 FCB300B0 */ sd $s3, 0xB0($a1)
/* F46164 8026A934 FCB400B8 */ sd $s4, 0xB8($a1)
/* F46168 8026A938 FCB500C0 */ sd $s5, 0xC0($a1)
/* F4616C 8026A93C FCB600C8 */ sd $s6, 0xC8($a1)
/* F46170 8026A940 FCB700D0 */ sd $s7, 0xD0($a1)
/* F46174 8026A944 FCBC00E8 */ sd $gp, 0xE8($a1)
/* F46178 8026A948 FCBD00F0 */ sd $sp, 0xF0($a1)
/* F4617C 8026A94C FCBE00F8 */ sd $fp, 0xF8($a1)
/* F46180 8026A950 FCBF0100 */ sd $ra, 0x100($a1)
/* F46184 8026A954 13600009 */ beqz $k1, .L8026A97C
/* F46188 8026A958 ACBF011C */ sw $ra, 0x11C($a1)
/* F4618C 8026A95C 445BF800 */ cfc1 $k1, $31
/* F46190 8026A960 F4B40180 */ sdc1 $f20, 0x180($a1)
/* F46194 8026A964 F4B60188 */ sdc1 $f22, 0x188($a1)
/* F46198 8026A968 F4B80190 */ sdc1 $f24, 0x190($a1)
/* F4619C 8026A96C F4BA0198 */ sdc1 $f26, 0x198($a1)
/* F461A0 8026A970 F4BC01A0 */ sdc1 $f28, 0x1A0($a1)
/* F461A4 8026A974 F4BE01A8 */ sdc1 $f30, 0x1A8($a1)
/* F461A8 8026A978 ACBB012C */ sw $k1, 0x12C($a1)
.L8026A97C:
/* F461AC 8026A97C 8CBB0118 */ lw $k1, 0x118($a1)
/* F461B0 8026A980 3369FF00 */ andi $t1, $k1, 0xFF00
/* F461B4 8026A984 5120000E */ beql $t1, $zero, .L8026A9C0
/* F461B8 8026A988 3C1BA430 */ lui $k1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
/* F461BC 8026A98C 3C088027 */ lui $t0, %hi(__OSGlobalIntMask)
/* F461C0 8026A990 25087130 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
/* F461C4 8026A994 8D080000 */ lw $t0, 0x0($t0)
/* F461C8 8026A998 2401FFFF */ addiu $at, $zero, -0x1
/* F461CC 8026A99C 01014026 */ xor $t0, $t0, $at
/* F461D0 8026A9A0 3C01FFFF */ lui $at, (0xFFFF00FF >> 16)
/* F461D4 8026A9A4 3108FF00 */ andi $t0, $t0, 0xFF00
/* F461D8 8026A9A8 342100FF */ ori $at, $at, (0xFFFF00FF & 0xFFFF)
/* F461DC 8026A9AC 01284825 */ or $t1, $t1, $t0
/* F461E0 8026A9B0 0361D824 */ and $k1, $k1, $at
/* F461E4 8026A9B4 0369D825 */ or $k1, $k1, $t1
/* F461E8 8026A9B8 ACBB0118 */ sw $k1, 0x118($a1)
/* F461EC 8026A9BC 3C1BA430 */ lui $k1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
.L8026A9C0:
/* F461F0 8026A9C0 8F7B000C */ lw $k1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($k1)
/* F461F4 8026A9C4 1360000B */ beqz $k1, .L8026A9F4
/* F461F8 8026A9C8 00000000 */ nop
/* F461FC 8026A9CC 3C1A8027 */ lui $k0, %hi(__OSGlobalIntMask)
/* F46200 8026A9D0 275A7130 */ addiu $k0, $k0, %lo(__OSGlobalIntMask)
/* F46204 8026A9D4 8F5A0000 */ lw $k0, 0x0($k0)
/* F46208 8026A9D8 8CA80128 */ lw $t0, 0x128($a1)
/* F4620C 8026A9DC 2401FFFF */ addiu $at, $zero, -0x1
/* F46210 8026A9E0 001AD402 */ srl $k0, $k0, 16
/* F46214 8026A9E4 0341D026 */ xor $k0, $k0, $at
/* F46218 8026A9E8 335A003F */ andi $k0, $k0, 0x3F
/* F4621C 8026A9EC 0348D024 */ and $k0, $k0, $t0
/* F46220 8026A9F0 037AD825 */ or $k1, $k1, $k0
.L8026A9F4:
/* F46224 8026A9F4 10800003 */ beqz $a0, .L8026AA04
/* F46228 8026A9F8 ACBB0128 */ sw $k1, 0x128($a1)
/* F4622C 8026A9FC 0C09AA83 */ jal __osEnqueueThread
/* F46230 8026AA00 00000000 */ nop
.L8026AA04:
/* F46234 8026AA04 0809AA99 */ j __osDispatchThread
/* F46238 8026AA08 00000000 */ nop
endlabel __osEnqueueAndYield
.size __osEnqueueAndYield, . - __osEnqueueAndYield
glabel __osEnqueueThread
/* F4623C 8026AA0C 8C980000 */ lw $t8, 0x0($a0)
/* F46240 8026AA10 8CAF0004 */ lw $t7, 0x4($a1)
/* F46244 8026AA14 0080C825 */ or $t9, $a0, $zero
/* F46248 8026AA18 8F0E0004 */ lw $t6, 0x4($t8)
/* F4624C 8026AA1C 01CF082A */ slt $at, $t6, $t7
/* F46250 8026AA20 54200008 */ bnel $at, $zero, .L8026AA44
/* F46254 8026AA24 8F380000 */ lw $t8, 0x0($t9)
/* F46258 8026AA28 0300C825 */ or $t9, $t8, $zero
.L8026AA2C:
/* F4625C 8026AA2C 8F180000 */ lw $t8, 0x0($t8)
/* F46260 8026AA30 8F0E0004 */ lw $t6, 0x4($t8)
/* F46264 8026AA34 01CF082A */ slt $at, $t6, $t7
/* F46268 8026AA38 5020FFFC */ beql $at, $zero, .L8026AA2C
/* F4626C 8026AA3C 0300C825 */ or $t9, $t8, $zero
/* F46270 8026AA40 8F380000 */ lw $t8, 0x0($t9)
.L8026AA44:
/* F46274 8026AA44 ACB80000 */ sw $t8, 0x0($a1)
/* F46278 8026AA48 AF250000 */ sw $a1, 0x0($t9)
/* F4627C 8026AA4C 03E00008 */ jr $ra
/* F46280 8026AA50 ACA40008 */ sw $a0, 0x8($a1)
endlabel __osEnqueueThread
.size __osEnqueueThread, . - __osEnqueueThread
glabel __osPopThread
/* F46284 8026AA54 8C820000 */ lw $v0, 0x0($a0)
/* F46288 8026AA58 8C590000 */ lw $t9, 0x0($v0)
/* F4628C 8026AA5C 03E00008 */ jr $ra
/* F46290 8026AA60 AC990000 */ sw $t9, 0x0($a0)
endlabel __osPopThread
.size __osPopThread, . - __osPopThread
# Handwritten function
glabel __osDispatchThread
/* F46294 8026AA64 3C048027 */ lui $a0, %hi(__osRunQueue)
/* F46298 8026AA68 0C09AA95 */ jal __osPopThread
/* F4629C 8026AA6C 24847378 */ addiu $a0, $a0, %lo(__osRunQueue)
/* F462A0 8026AA70 3C018027 */ lui $at, %hi(__osRunningThread)
/* F462A4 8026AA74 AC227380 */ sw $v0, %lo(__osRunningThread)($at)
/* F462A8 8026AA78 24080004 */ addiu $t0, $zero, 0x4
/* F462AC 8026AA7C A4480010 */ sh $t0, 0x10($v0)
/* F462B0 8026AA80 0040D025 */ or $k0, $v0, $zero
/* F462B4 8026AA84 3C088027 */ lui $t0, %hi(__OSGlobalIntMask)
/* F462B8 8026AA88 8F5B0118 */ lw $k1, 0x118($k0)
/* F462BC 8026AA8C 25087130 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
/* F462C0 8026AA90 8D080000 */ lw $t0, 0x0($t0)
/* F462C4 8026AA94 3C01FFFF */ lui $at, (0xFFFF00FF >> 16)
/* F462C8 8026AA98 3369FF00 */ andi $t1, $k1, 0xFF00
/* F462CC 8026AA9C 342100FF */ ori $at, $at, (0xFFFF00FF & 0xFFFF)
/* F462D0 8026AAA0 3108FF00 */ andi $t0, $t0, 0xFF00
/* F462D4 8026AAA4 01284824 */ and $t1, $t1, $t0
/* F462D8 8026AAA8 0361D824 */ and $k1, $k1, $at
/* F462DC 8026AAAC 0369D825 */ or $k1, $k1, $t1
/* F462E0 8026AAB0 409B6000 */ mtc0 $k1, $12
/* F462E4 8026AAB4 DF5B0108 */ ld $k1, 0x108($k0)
/* F462E8 8026AAB8 DF410020 */ ld $at, 0x20($k0)
/* F462EC 8026AABC DF420028 */ ld $v0, 0x28($k0)
/* F462F0 8026AAC0 03600013 */ mtlo $k1
/* F462F4 8026AAC4 DF5B0110 */ ld $k1, 0x110($k0)
/* F462F8 8026AAC8 DF430030 */ ld $v1, 0x30($k0)
/* F462FC 8026AACC DF440038 */ ld $a0, 0x38($k0)
/* F46300 8026AAD0 DF450040 */ ld $a1, 0x40($k0)
/* F46304 8026AAD4 DF460048 */ ld $a2, 0x48($k0)
/* F46308 8026AAD8 DF470050 */ ld $a3, 0x50($k0)
/* F4630C 8026AADC DF480058 */ ld $t0, 0x58($k0)
/* F46310 8026AAE0 DF490060 */ ld $t1, 0x60($k0)
/* F46314 8026AAE4 DF4A0068 */ ld $t2, 0x68($k0)
/* F46318 8026AAE8 DF4B0070 */ ld $t3, 0x70($k0)
/* F4631C 8026AAEC DF4C0078 */ ld $t4, 0x78($k0)
/* F46320 8026AAF0 DF4D0080 */ ld $t5, 0x80($k0)
/* F46324 8026AAF4 DF4E0088 */ ld $t6, 0x88($k0)
/* F46328 8026AAF8 DF4F0090 */ ld $t7, 0x90($k0)
/* F4632C 8026AAFC DF500098 */ ld $s0, 0x98($k0)
/* F46330 8026AB00 DF5100A0 */ ld $s1, 0xA0($k0)
/* F46334 8026AB04 DF5200A8 */ ld $s2, 0xA8($k0)
/* F46338 8026AB08 DF5300B0 */ ld $s3, 0xB0($k0)
/* F4633C 8026AB0C DF5400B8 */ ld $s4, 0xB8($k0)
/* F46340 8026AB10 DF5500C0 */ ld $s5, 0xC0($k0)
/* F46344 8026AB14 DF5600C8 */ ld $s6, 0xC8($k0)
/* F46348 8026AB18 DF5700D0 */ ld $s7, 0xD0($k0)
/* F4634C 8026AB1C DF5800D8 */ ld $t8, 0xD8($k0)
/* F46350 8026AB20 DF5900E0 */ ld $t9, 0xE0($k0)
/* F46354 8026AB24 DF5C00E8 */ ld $gp, 0xE8($k0)
/* F46358 8026AB28 03600011 */ mthi $k1
/* F4635C 8026AB2C DF5D00F0 */ ld $sp, 0xF0($k0)
/* F46360 8026AB30 DF5E00F8 */ ld $fp, 0xF8($k0)
/* F46364 8026AB34 DF5F0100 */ ld $ra, 0x100($k0)
/* F46368 8026AB38 8F5B011C */ lw $k1, 0x11C($k0)
/* F4636C 8026AB3C 409B7000 */ mtc0 $k1, $14
/* F46370 8026AB40 8F5B0018 */ lw $k1, 0x18($k0)
/* F46374 8026AB44 13600013 */ beqz $k1, .L8026AB94
/* F46378 8026AB48 00000000 */ nop
/* F4637C 8026AB4C 8F5B012C */ lw $k1, 0x12C($k0)
/* F46380 8026AB50 44DBF800 */ ctc1 $k1, $31
/* F46384 8026AB54 D7400130 */ ldc1 $f0, 0x130($k0)
/* F46388 8026AB58 D7420138 */ ldc1 $f2, 0x138($k0)
/* F4638C 8026AB5C D7440140 */ ldc1 $f4, 0x140($k0)
/* F46390 8026AB60 D7460148 */ ldc1 $f6, 0x148($k0)
/* F46394 8026AB64 D7480150 */ ldc1 $f8, 0x150($k0)
/* F46398 8026AB68 D74A0158 */ ldc1 $f10, 0x158($k0)
/* F4639C 8026AB6C D74C0160 */ ldc1 $f12, 0x160($k0)
/* F463A0 8026AB70 D74E0168 */ ldc1 $f14, 0x168($k0)
/* F463A4 8026AB74 D7500170 */ ldc1 $f16, 0x170($k0)
/* F463A8 8026AB78 D7520178 */ ldc1 $f18, 0x178($k0)
/* F463AC 8026AB7C D7540180 */ ldc1 $f20, 0x180($k0)
/* F463B0 8026AB80 D7560188 */ ldc1 $f22, 0x188($k0)
/* F463B4 8026AB84 D7580190 */ ldc1 $f24, 0x190($k0)
/* F463B8 8026AB88 D75A0198 */ ldc1 $f26, 0x198($k0)
/* F463BC 8026AB8C D75C01A0 */ ldc1 $f28, 0x1A0($k0)
/* F463C0 8026AB90 D75E01A8 */ ldc1 $f30, 0x1A8($k0)
.L8026AB94:
/* F463C4 8026AB94 8F5B0128 */ lw $k1, 0x128($k0)
/* F463C8 8026AB98 3C1A8027 */ lui $k0, %hi(__OSGlobalIntMask)
/* F463CC 8026AB9C 275A7130 */ addiu $k0, $k0, %lo(__OSGlobalIntMask)
/* F463D0 8026ABA0 8F5A0000 */ lw $k0, 0x0($k0)
/* F463D4 8026ABA4 001AD402 */ srl $k0, $k0, 16
/* F463D8 8026ABA8 037AD824 */ and $k1, $k1, $k0
/* F463DC 8026ABAC 001BD840 */ sll $k1, $k1, 1
/* F463E0 8026ABB0 3C1A8028 */ lui $k0, %hi(__osRcpImTable)
/* F463E4 8026ABB4 275A8C60 */ addiu $k0, $k0, %lo(__osRcpImTable)
/* F463E8 8026ABB8 037AD821 */ addu $k1, $k1, $k0
/* F463EC 8026ABBC 977B0000 */ lhu $k1, 0x0($k1)
/* F463F0 8026ABC0 3C1AA430 */ lui $k0, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
/* F463F4 8026ABC4 275A000C */ addiu $k0, $k0, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))
/* F463F8 8026ABC8 AF5B0000 */ sw $k1, 0x0($k0)
/* F463FC 8026ABCC 00000000 */ nop
/* F46400 8026ABD0 00000000 */ nop
/* F46404 8026ABD4 00000000 */ nop
/* F46408 8026ABD8 00000000 */ nop
/* F4640C 8026ABDC 42000018 */ eret
endlabel __osDispatchThread
.size __osDispatchThread, . - __osDispatchThread
glabel __osCleanupThread
/* F46410 8026ABE0 0C09936C */ jal osDestroyThread
/* F46414 8026ABE4 00002025 */ or $a0, $zero, $zero
/* F46418 8026ABE8 00000000 */ nop
/* F4641C 8026ABEC 00000000 */ nop
endlabel __osCleanupThread
.size __osCleanupThread, . - __osCleanupThread
# Handwritten function
glabel osMapTLBRdb
/* F46420 8026ABF0 40085000 */ mfc0 $t0, $10
/* F46424 8026ABF4 2409001F */ addiu $t1, $zero, 0x1F
/* F46428 8026ABF8 40890000 */ mtc0 $t1, $0
/* F4642C 8026ABFC 40802800 */ mtc0 $zero, $5
/* F46430 8026AC00 240A0017 */ addiu $t2, $zero, 0x17
/* F46434 8026AC04 3C09C000 */ lui $t1, (0xC0000000 >> 16)
/* F46438 8026AC08 40895000 */ mtc0 $t1, $10
/* F4643C 8026AC0C 3C098000 */ lui $t1, (0x80000000 >> 16)
/* F46440 8026AC10 00095982 */ srl $t3, $t1, 6
/* F46444 8026AC14 016A5825 */ or $t3, $t3, $t2
/* F46448 8026AC18 408B1000 */ mtc0 $t3, $2
/* F4644C 8026AC1C 24090001 */ addiu $t1, $zero, 0x1
/* F46450 8026AC20 40891800 */ mtc0 $t1, $3
/* F46454 8026AC24 00000000 */ nop
/* F46458 8026AC28 42000002 */ tlbwi
/* F4645C 8026AC2C 00000000 */ nop
/* F46460 8026AC30 00000000 */ nop
/* F46464 8026AC34 00000000 */ nop
/* F46468 8026AC38 00000000 */ nop
/* F4646C 8026AC3C 40885000 */ mtc0 $t0, $10
/* F46470 8026AC40 03E00008 */ jr $ra
/* F46474 8026AC44 00000000 */ nop
/* F46478 8026AC48 00000000 */ nop
/* F4647C 8026AC4C 00000000 */ nop
endlabel osMapTLBRdb
.size osMapTLBRdb, . - osMapTLBRdb
-5
View File
@@ -1,5 +0,0 @@
.rdata
.align 4
.globl __libm_qnan_f
__libm_qnan_f:
.word 0x7F810000
-17
View File
@@ -1,17 +0,0 @@
#include "PR/R4300.h"
#include "sys/asm.h"
#include "sys/regdef.h"
.text
ABS(leoBootID, 0x800001a0)
ABS(osTvType, 0x80000300)
ABS(osRomType, 0x80000304)
ABS(osRomBase, 0x80000308)
ABS(osResetType, 0x8000030c)
ABS(osCicId, 0x80000310)
ABS(osVersion, 0x80000314)
ABS(osMemSize, 0x80000318)
ABS(osAppNMIBuffer, 0x8000031c)
.space 0x60
/* padded to 0x60 in the object file */
-136
View File
@@ -1,136 +0,0 @@
#include <sys/asm.h>
#include <PR/rcp.h>
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set gp=64 # allow use of 64-bit general purpose registers
.rdata
#define MI_INTR_MASK 0x3f
#define CLR_SP 0x0001
#define SET_SP 0x0002
#define CLR_SI 0x0004
#define SET_SI 0x0008
#define CLR_AI 0x0010
#define SET_AI 0x0020
#define CLR_VI 0x0040
#define SET_VI 0x0080
#define CLR_PI 0x0100
#define SET_PI 0x0200
#define CLR_DP 0x0400
#define SET_DP 0x0800
EXPORT(__osRcpImTable)
/* LUT to convert between MI_INTR and MI_INTR_MASK */
/* MI_INTR is status for each interrupt whereas */
/* MI_INTR_MASK has seperate bits for set/clr */
.half CLR_SP | CLR_SI | CLR_AI | CLR_VI | CLR_PI | CLR_DP
.half SET_SP | CLR_SI | CLR_AI | CLR_VI | CLR_PI | CLR_DP
.half CLR_SP | SET_SI | CLR_AI | CLR_VI | CLR_PI | CLR_DP
.half SET_SP | SET_SI | CLR_AI | CLR_VI | CLR_PI | CLR_DP
.half CLR_SP | CLR_SI | SET_AI | CLR_VI | CLR_PI | CLR_DP
.half SET_SP | CLR_SI | SET_AI | CLR_VI | CLR_PI | CLR_DP
.half CLR_SP | SET_SI | SET_AI | CLR_VI | CLR_PI | CLR_DP
.half SET_SP | SET_SI | SET_AI | CLR_VI | CLR_PI | CLR_DP
.half CLR_SP | CLR_SI | CLR_AI | SET_VI | CLR_PI | CLR_DP
.half SET_SP | CLR_SI | CLR_AI | SET_VI | CLR_PI | CLR_DP
.half CLR_SP | SET_SI | CLR_AI | SET_VI | CLR_PI | CLR_DP
.half SET_SP | SET_SI | CLR_AI | SET_VI | CLR_PI | CLR_DP
.half CLR_SP | CLR_SI | SET_AI | SET_VI | CLR_PI | CLR_DP
.half SET_SP | CLR_SI | SET_AI | SET_VI | CLR_PI | CLR_DP
.half CLR_SP | SET_SI | SET_AI | SET_VI | CLR_PI | CLR_DP
.half SET_SP | SET_SI | SET_AI | SET_VI | CLR_PI | CLR_DP
.half CLR_SP | CLR_SI | CLR_AI | CLR_VI | SET_PI | CLR_DP
.half SET_SP | CLR_SI | CLR_AI | CLR_VI | SET_PI | CLR_DP
.half CLR_SP | SET_SI | CLR_AI | CLR_VI | SET_PI | CLR_DP
.half SET_SP | SET_SI | CLR_AI | CLR_VI | SET_PI | CLR_DP
.half CLR_SP | CLR_SI | SET_AI | CLR_VI | SET_PI | CLR_DP
.half SET_SP | CLR_SI | SET_AI | CLR_VI | SET_PI | CLR_DP
.half CLR_SP | SET_SI | SET_AI | CLR_VI | SET_PI | CLR_DP
.half SET_SP | SET_SI | SET_AI | CLR_VI | SET_PI | CLR_DP
.half CLR_SP | CLR_SI | CLR_AI | SET_VI | SET_PI | CLR_DP
.half SET_SP | CLR_SI | CLR_AI | SET_VI | SET_PI | CLR_DP
.half CLR_SP | SET_SI | CLR_AI | SET_VI | SET_PI | CLR_DP
.half SET_SP | SET_SI | CLR_AI | SET_VI | SET_PI | CLR_DP
.half CLR_SP | CLR_SI | SET_AI | SET_VI | SET_PI | CLR_DP
.half SET_SP | CLR_SI | SET_AI | SET_VI | SET_PI | CLR_DP
.half CLR_SP | SET_SI | SET_AI | SET_VI | SET_PI | CLR_DP
.half SET_SP | SET_SI | SET_AI | SET_VI | SET_PI | CLR_DP
.half CLR_SP | CLR_SI | CLR_AI | CLR_VI | CLR_PI | SET_DP
.half SET_SP | CLR_SI | CLR_AI | CLR_VI | CLR_PI | SET_DP
.half CLR_SP | SET_SI | CLR_AI | CLR_VI | CLR_PI | SET_DP
.half SET_SP | SET_SI | CLR_AI | CLR_VI | CLR_PI | SET_DP
.half CLR_SP | CLR_SI | SET_AI | CLR_VI | CLR_PI | SET_DP
.half SET_SP | CLR_SI | SET_AI | CLR_VI | CLR_PI | SET_DP
.half CLR_SP | SET_SI | SET_AI | CLR_VI | CLR_PI | SET_DP
.half SET_SP | SET_SI | SET_AI | CLR_VI | CLR_PI | SET_DP
.half CLR_SP | CLR_SI | CLR_AI | SET_VI | CLR_PI | SET_DP
.half SET_SP | CLR_SI | CLR_AI | SET_VI | CLR_PI | SET_DP
.half CLR_SP | SET_SI | CLR_AI | SET_VI | CLR_PI | SET_DP
.half SET_SP | SET_SI | CLR_AI | SET_VI | CLR_PI | SET_DP
.half CLR_SP | CLR_SI | SET_AI | SET_VI | CLR_PI | SET_DP
.half SET_SP | CLR_SI | SET_AI | SET_VI | CLR_PI | SET_DP
.half CLR_SP | SET_SI | SET_AI | SET_VI | CLR_PI | SET_DP
.half SET_SP | SET_SI | SET_AI | SET_VI | CLR_PI | SET_DP
.half CLR_SP | CLR_SI | CLR_AI | CLR_VI | SET_PI | SET_DP
.half SET_SP | CLR_SI | CLR_AI | CLR_VI | SET_PI | SET_DP
.half CLR_SP | SET_SI | CLR_AI | CLR_VI | SET_PI | SET_DP
.half SET_SP | SET_SI | CLR_AI | CLR_VI | SET_PI | SET_DP
.half CLR_SP | CLR_SI | SET_AI | CLR_VI | SET_PI | SET_DP
.half SET_SP | CLR_SI | SET_AI | CLR_VI | SET_PI | SET_DP
.half CLR_SP | SET_SI | SET_AI | CLR_VI | SET_PI | SET_DP
.half SET_SP | SET_SI | SET_AI | CLR_VI | SET_PI | SET_DP
.half CLR_SP | CLR_SI | CLR_AI | SET_VI | SET_PI | SET_DP
.half SET_SP | CLR_SI | CLR_AI | SET_VI | SET_PI | SET_DP
.half CLR_SP | SET_SI | CLR_AI | SET_VI | SET_PI | SET_DP
.half SET_SP | SET_SI | CLR_AI | SET_VI | SET_PI | SET_DP
.half CLR_SP | CLR_SI | SET_AI | SET_VI | SET_PI | SET_DP
.half SET_SP | CLR_SI | SET_AI | SET_VI | SET_PI | SET_DP
.half CLR_SP | SET_SI | SET_AI | SET_VI | SET_PI | SET_DP
.half SET_SP | SET_SI | SET_AI | SET_VI | SET_PI | SET_DP
.text
.set noreorder
glabel osSetIntMask
mfc0 $t4, $12
andi $v0, $t4, 0xff01
lui $t0, %hi(__OSGlobalIntMask)
addiu $t0, $t0, %lo(__OSGlobalIntMask)
lw $t3, ($t0)
addiu $at, $zero, -1
xor $t0, $t3, $at
andi $t0, $t0, 0xff00
or $v0, $v0, $t0
lui $t2, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
lw $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t2)
beqz $t2, setintmask_1
srl $t1, $t3, 0x10
addiu $at, $zero, -1
xor $t1, $t1, $at
andi $t1, $t1, 0x3f
or $t2, $t2, $t1
setintmask_1:
sll $t2, $t2, 0x10
or $v0, $v0, $t2
lui $at, 0x3f
and $t0, $a0, $at
and $t0, $t0, $t3
srl $t0, $t0, 0xf
lui $t2, %hi(__osRcpImTable)
addu $t2, $t2, $t0
lhu $t2, %lo(__osRcpImTable)($t2)
lui $at, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
sw $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($at)
andi $t0, $a0, 0xff01
andi $t1, $t3, 0xff00
and $t0, $t0, $t1
lui $at, 0xffff
ori $at, $at, 0xff
and $t4, $t4, $at
or $t4, $t4, $t0
mtc0 $t4, $12
nop
nop
jr $ra
nop
endlabel osSetIntMask
-708
View File
@@ -1,708 +0,0 @@
#include <sys/asm.h>
#include <PR/rcp.h>
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.data
EXPORT(__osHwIntTable)
.word 0x0, 0x0, 0x0, 0x0, 0x0
.rdata
#define REDISPATCH 0x00
#define SW1 0x04
#define SW2 0x08
#define RCP 0x0c
#define CART 0x10
#define PRENMI 0x14
#define IP6_HDLR 0x18
#define IP7_HDLR 0x1c
#define COUNTER 0x20
__osIntOffTable:
.byte REDISPATCH
.byte PRENMI
.byte IP6_HDLR
.byte IP6_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte COUNTER
.byte COUNTER
.byte IP6_HDLR
.byte IP6_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte IP7_HDLR
.byte REDISPATCH
.byte SW1
.byte SW2
.byte SW2
.byte RCP
.byte RCP
.byte RCP
.byte RCP
.byte CART
.byte CART
.byte CART
.byte CART
.byte CART
.byte CART
.byte CART
.byte CART
__osIntTable:
.word redispatch, sw1, sw2, rcp, cart, prenmi, IP6_Hdlr, IP7_Hdlr, counter
.text
glabel __osExceptionPreamble
/* 2E60 80002260 3C1A8000 */ lui $k0, %hi(__osException)
/* 2E64 80002264 275A2280 */ addiu $k0, $k0, %lo(__osException)
/* 2E68 80002268 03400008 */ jr $k0
/* 2E6C 8000226C 00000000 */ nop
endlabel __osExceptionPreamble
# What is this?
glabel __osExceptionPreamble2
/* 2E70 80002270 3C1A8000 */ lui $k0, %hi(__osException)
/* 2E74 80002274 275A2280 */ addiu $k0, $k0, %lo(__osException)
/* 2E78 80002278 03400008 */ jr $k0
/* 2E7C 8000227C 00000000 */ nop
endlabel __osExceptionPreamble2
glabel __osException
/* 2E80 80002280 3C1A8000 */ lui $k0, %hi(__osThreadSave)
/* 2E84 80002284 275A72C0 */ addiu $k0, $k0, %lo(__osThreadSave)
/* 2E88 80002288 FF410020 */ sd $at, 0x20($k0)
/* 2E8C 8000228C 401B6000 */ mfc0 $k1, $12
/* 2E90 80002290 AF5B0118 */ sw $k1, 0x118($k0)
/* 2E94 80002294 2401FFFC */ addiu $at, $zero, -4
/* 2E98 80002298 0361D824 */ and $k1, $k1, $at
/* 2E9C 8000229C 409B6000 */ mtc0 $k1, $12
/* 2EA0 800022A0 FF480058 */ sd $t0, 0x58($k0)
/* 2EA4 800022A4 FF490060 */ sd $t1, 0x60($k0)
/* 2EA8 800022A8 FF4A0068 */ sd $t2, 0x68($k0)
/* 2EAC 800022AC AF400018 */ sw $zero, 0x18($k0)
/* 2EB0 800022B0 40086800 */ mfc0 $t0, $13
/* 2EB4 800022B4 03404025 */ or $t0, $k0, $zero
/* 2EB8 800022B8 3C1A8000 */ lui $k0, %hi(__osRunningThread)
/* 2EBC 800022BC 8F5A5130 */ lw $k0, %lo(__osRunningThread)($k0)
/* 2EC0 800022C0 DD090020 */ ld $t1, 0x20($t0)
/* 2EC4 800022C4 FF490020 */ sd $t1, 0x20($k0)
/* 2EC8 800022C8 DD090118 */ ld $t1, 0x118($t0)
/* 2ECC 800022CC FF490118 */ sd $t1, 0x118($k0)
/* 2ED0 800022D0 DD090058 */ ld $t1, 0x58($t0)
/* 2ED4 800022D4 FF490058 */ sd $t1, 0x58($k0)
/* 2ED8 800022D8 DD090060 */ ld $t1, 0x60($t0)
/* 2EDC 800022DC FF490060 */ sd $t1, 0x60($k0)
/* 2EE0 800022E0 DD090068 */ ld $t1, 0x68($t0)
/* 2EE4 800022E4 FF490068 */ sd $t1, 0x68($k0)
/* 2EE8 800022E8 8F5B0118 */ lw $k1, 0x118($k0)
/* 2EEC 800022EC 00004012 */ mflo $t0
/* 2EF0 800022F0 FF480108 */ sd $t0, 0x108($k0)
/* 2EF4 800022F4 00004010 */ mfhi $t0
/* 2EF8 800022F8 3369FF00 */ andi $t1, $k1, 0xff00
/* 2EFC 800022FC FF420028 */ sd $v0, 0x28($k0)
/* 2F00 80002300 FF430030 */ sd $v1, 0x30($k0)
/* 2F04 80002304 FF440038 */ sd $a0, 0x38($k0)
/* 2F08 80002308 FF450040 */ sd $a1, 0x40($k0)
/* 2F0C 8000230C FF460048 */ sd $a2, 0x48($k0)
/* 2F10 80002310 FF470050 */ sd $a3, 0x50($k0)
/* 2F14 80002314 FF4B0070 */ sd $t3, 0x70($k0)
/* 2F18 80002318 FF4C0078 */ sd $t4, 0x78($k0)
/* 2F1C 8000231C FF4D0080 */ sd $t5, 0x80($k0)
/* 2F20 80002320 FF4E0088 */ sd $t6, 0x88($k0)
/* 2F24 80002324 FF4F0090 */ sd $t7, 0x90($k0)
/* 2F28 80002328 FF500098 */ sd $s0, 0x98($k0)
/* 2F2C 8000232C FF5100A0 */ sd $s1, 0xa0($k0)
/* 2F30 80002330 FF5200A8 */ sd $s2, 0xa8($k0)
/* 2F34 80002334 FF5300B0 */ sd $s3, 0xb0($k0)
/* 2F38 80002338 FF5400B8 */ sd $s4, 0xb8($k0)
/* 2F3C 8000233C FF5500C0 */ sd $s5, 0xc0($k0)
/* 2F40 80002340 FF5600C8 */ sd $s6, 0xc8($k0)
/* 2F44 80002344 FF5700D0 */ sd $s7, 0xd0($k0)
/* 2F48 80002348 FF5800D8 */ sd $t8, 0xd8($k0)
/* 2F4C 8000234C FF5900E0 */ sd $t9, 0xe0($k0)
/* 2F50 80002350 FF5C00E8 */ sd $gp, 0xe8($k0)
/* 2F54 80002354 FF5D00F0 */ sd $sp, 0xf0($k0)
/* 2F58 80002358 FF5E00F8 */ sd $fp, 0xf8($k0)
/* 2F5C 8000235C FF5F0100 */ sd $ra, 0x100($k0)
/* 2F60 80002360 1120000D */ beqz $t1, .L80002398
/* 2F64 80002364 FF480110 */ sd $t0, 0x110($k0)
/* 2F68 80002368 3C088000 */ lui $t0, %hi(__OSGlobalIntMask)
/* 2F6C 8000236C 250850F0 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
/* 2F70 80002370 8D080000 */ lw $t0, ($t0)
/* 2F74 80002374 2401FFFF */ addiu $at, $zero, -1
/* 2F78 80002378 01014026 */ xor $t0, $t0, $at
/* 2F7C 8000237C 3C01FFFF */ lui $at, 0xffff
/* 2F80 80002380 3108FF00 */ andi $t0, $t0, 0xff00
/* 2F84 80002384 342100FF */ ori $at, $at, 0xff
/* 2F88 80002388 01284825 */ or $t1, $t1, $t0
/* 2F8C 8000238C 0361D824 */ and $k1, $k1, $at
/* 2F90 80002390 0369D825 */ or $k1, $k1, $t1
/* 2F94 80002394 AF5B0118 */ sw $k1, 0x118($k0)
.L80002398:
/* 2F98 80002398 3C09A430 */ lui $t1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
/* 2F9C 8000239C 8D29000C */ lw $t1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t1)
/* 2FA0 800023A0 5120000C */ beql $t1, $zero, .L800023D4
/* 2FA4 800023A4 AF490128 */ sw $t1, 0x128($k0)
/* 2FA8 800023A8 3C088000 */ lui $t0, %hi(__OSGlobalIntMask)
/* 2FAC 800023AC 250850F0 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
/* 2FB0 800023B0 8D080000 */ lw $t0, ($t0)
/* 2FB4 800023B4 8F4C0128 */ lw $t4, 0x128($k0)
/* 2FB8 800023B8 2401FFFF */ addiu $at, $zero, -1
/* 2FBC 800023BC 00084402 */ srl $t0, $t0, 0x10
/* 2FC0 800023C0 01014026 */ xor $t0, $t0, $at
/* 2FC4 800023C4 3108003F */ andi $t0, $t0, 0x3f
/* 2FC8 800023C8 010C4024 */ and $t0, $t0, $t4
/* 2FCC 800023CC 01284825 */ or $t1, $t1, $t0
/* 2FD0 800023D0 AF490128 */ sw $t1, 0x128($k0)
.L800023D4:
/* 2FD4 800023D4 40087000 */ mfc0 $t0, $14
/* 2FD8 800023D8 AF48011C */ sw $t0, 0x11c($k0)
/* 2FDC 800023DC 8F480018 */ lw $t0, 0x18($k0)
/* 2FE0 800023E0 11000014 */ beqz $t0, .L80002434
/* 2FE4 800023E4 00000000 */ nop
/* 2FE8 800023E8 4448F800 */ cfc1 $t0, $31
/* 2FEC 800023EC 00000000 */ nop
/* 2FF0 800023F0 AF48012C */ sw $t0, 0x12c($k0)
/* 2FF4 800023F4 F7400130 */ sdc1 $f0, 0x130($k0)
/* 2FF8 800023F8 F7420138 */ sdc1 $f2, 0x138($k0)
/* 2FFC 800023FC F7440140 */ sdc1 $f4, 0x140($k0)
/* 3000 80002400 F7460148 */ sdc1 $f6, 0x148($k0)
/* 3004 80002404 F7480150 */ sdc1 $f8, 0x150($k0)
/* 3008 80002408 F74A0158 */ sdc1 $f10, 0x158($k0)
/* 300C 8000240C F74C0160 */ sdc1 $f12, 0x160($k0)
/* 3010 80002410 F74E0168 */ sdc1 $f14, 0x168($k0)
/* 3014 80002414 F7500170 */ sdc1 $f16, 0x170($k0)
/* 3018 80002418 F7520178 */ sdc1 $f18, 0x178($k0)
/* 301C 8000241C F7540180 */ sdc1 $f20, 0x180($k0)
/* 3020 80002420 F7560188 */ sdc1 $f22, 0x188($k0)
/* 3024 80002424 F7580190 */ sdc1 $f24, 0x190($k0)
/* 3028 80002428 F75A0198 */ sdc1 $f26, 0x198($k0)
/* 302C 8000242C F75C01A0 */ sdc1 $f28, 0x1a0($k0)
/* 3030 80002430 F75E01A8 */ sdc1 $f30, 0x1a8($k0)
.L80002434:
/* 3034 80002434 40086800 */ mfc0 $t0, $13
/* 3038 80002438 AF480120 */ sw $t0, 0x120($k0)
/* 303C 8000243C 24090002 */ addiu $t1, $zero, 2
/* 3040 80002440 A7490010 */ sh $t1, 0x10($k0)
/* 3044 80002444 3109007C */ andi $t1, $t0, 0x7c
/* 3048 80002448 240A0024 */ addiu $t2, $zero, 0x24
/* 304C 8000244C 512A00B1 */ beql $t1, $t2, handle_break
/* 3050 80002450 24090001 */ addiu $t1, $zero, 1
/* 3054 80002454 240A002C */ addiu $t2, $zero, 0x2c
/* 3058 80002458 112A00FF */ beq $t1, $t2, handle_CpU
/* 305C 8000245C 00000000 */ nop
/* 3060 80002460 240A0000 */ addiu $t2, $zero, 0
/* 3064 80002464 152A00C3 */ bne $t1, $t2, .L80002774
/* 3068 80002468 00000000 */ nop
/* 306C 8000246C 03688024 */ and $s0, $k1, $t0
next_interrupt:
/* 3070 80002470 3209FF00 */ andi $t1, $s0, 0xff00
/* 3074 80002474 00095302 */ srl $t2, $t1, 0xc
/* 3078 80002478 15400003 */ bnez $t2, .L80002488
/* 307C 8000247C 00000000 */ nop
/* 3080 80002480 00095202 */ srl $t2, $t1, 8
/* 3084 80002484 214A0010 */ addi $t2, $t2, 0x10
.L80002488:
/* 3088 80002488 3C018000 */ lui $at, %hi(__osIntOffTable)
/* 308C 8000248C 002A0821 */ addu $at, $at, $t2
/* 3090 80002490 902A5180 */ lbu $t2, %lo(__osIntOffTable)($at)
/* 3094 80002494 3C018000 */ lui $at, %hi(__osIntTable)
/* 3098 80002498 002A0821 */ addu $at, $at, $t2
/* 309C 8000249C 8C2A51A0 */ lw $t2, %lo(__osIntTable)($at)
/* 30A0 800024A0 01400008 */ jr $t2
/* 30A4 800024A4 00000000 */ nop
IP6_Hdlr:
/* 30A8 800024A8 2401DFFF */ addiu $at, $zero, -0x2001
/* 30AC 800024AC 1000FFF0 */ b next_interrupt
/* 30B0 800024B0 02018024 */ and $s0, $s0, $at
IP7_Hdlr:
/* 30B4 800024B4 2401BFFF */ addiu $at, $zero, -0x4001
/* 30B8 800024B8 1000FFED */ b next_interrupt
/* 30BC 800024BC 02018024 */ and $s0, $s0, $at
counter:
/* 30C0 800024C0 40095800 */ mfc0 $t1, $11
/* 30C4 800024C4 40895800 */ mtc0 $t1, $11
/* 30C8 800024C8 0C0009E9 */ jal send_mesg
/* 30CC 800024CC 24040018 */ addiu $a0, $zero, 0x18
/* 30D0 800024D0 3C01FFFF */ lui $at, 0xffff
/* 30D4 800024D4 34217FFF */ ori $at, $at, 0x7fff
/* 30D8 800024D8 1000FFE5 */ b next_interrupt
/* 30DC 800024DC 02018024 */ and $s0, $s0, $at
cart:
/* 30E0 800024E0 2401F7FF */ addiu $at, $zero, -0x801
/* 30E4 800024E4 02018024 */ and $s0, $s0, $at
/* 30E8 800024E8 240A0004 */ addiu $t2, $zero, 4
/* 30EC 800024EC 3C018000 */ lui $at, %hi(__osHwIntTable)
/* 30F0 800024F0 002A0821 */ addu $at, $at, $t2
/* 30F4 800024F4 8C2A5100 */ lw $t2, %lo(__osHwIntTable)($at)
/* 30F8 800024F8 3C1D8000 */ lui $sp, %hi(leoDiskStack)
/* 30FC 800024FC 27BD7470 */ addiu $sp, $sp, %lo(leoDiskStack)
/* 3100 80002500 24040010 */ addiu $a0, $zero, 0x10
/* 3104 80002504 11400007 */ beqz $t2, .L80002524
/* 3108 80002508 27BD0FF0 */ addiu $sp, $sp, 0xff0
/* 310C 8000250C 0140F809 */ jalr $t2
/* 3110 80002510 00000000 */ nop
/* 3114 80002514 10400003 */ beqz $v0, .L80002524
/* 3118 80002518 00000000 */ nop
/* 311C 8000251C 10000082 */ b redispatch
/* 3120 80002520 00000000 */ nop
.L80002524:
/* 3124 80002524 0C0009E9 */ jal send_mesg
/* 3128 80002528 00000000 */ nop
/* 312C 8000252C 1000FFD1 */ b next_interrupt + 4
/* 3130 80002530 3209FF00 */ andi $t1, $s0, 0xff00
rcp:
/* 3134 80002534 3C088000 */ lui $t0, %hi(__OSGlobalIntMask)
/* 3138 80002538 250850F0 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
/* 313C 8000253C 8D080000 */ lw $t0, ($t0)
/* 3140 80002540 3C11A430 */ lui $s1, %hi(PHYS_TO_K1(MI_INTR_REG))
/* 3144 80002544 8E310008 */ lw $s1, %lo(PHYS_TO_K1(MI_INTR_REG))($s1)
/* 3148 80002548 00084402 */ srl $t0, $t0, 0x10
/* 314C 8000254C 02288824 */ and $s1, $s1, $t0
/* 3150 80002550 32290001 */ andi $t1, $s1, 1
/* 3154 80002554 51200014 */ beql $t1, $zero, .L800025A8
/* 3158 80002558 32290008 */ andi $t1, $s1, 8
/* 315C 8000255C 3C0CA404 */ lui $t4, %hi(PHYS_TO_K1(SP_STATUS_REG))
/* 3160 80002560 8D8C0010 */ lw $t4, %lo(PHYS_TO_K1(SP_STATUS_REG))($t4)
/* 3164 80002564 24090008 */ addiu $t1, $zero, 8
/* 3168 80002568 3C01A404 */ lui $at, %hi(PHYS_TO_K1(SP_STATUS_REG))
/* 316C 8000256C 318C0300 */ andi $t4, $t4, 0x300
/* 3170 80002570 3231003E */ andi $s1, $s1, 0x3e
/* 3174 80002574 11800007 */ beqz $t4, .L80002594
/* 3178 80002578 AC290010 */ sw $t1, %lo(PHYS_TO_K1(SP_STATUS_REG))($at)
/* 317C 8000257C 0C0009E9 */ jal send_mesg
/* 3180 80002580 24040020 */ addiu $a0, $zero, 0x20
/* 3184 80002584 52200039 */ beql $s1, $zero, .L8000266C
/* 3188 80002588 2401FBFF */ addiu $at, $zero, -0x401
/* 318C 8000258C 10000006 */ b .L800025A8
/* 3190 80002590 32290008 */ andi $t1, $s1, 8
.L80002594:
/* 3194 80002594 0C0009E9 */ jal send_mesg
/* 3198 80002598 24040058 */ addiu $a0, $zero, 0x58
/* 319C 8000259C 52200033 */ beql $s1, $zero, .L8000266C
/* 31A0 800025A0 2401FBFF */ addiu $at, $zero, -0x401
/* 31A4 800025A4 32290008 */ andi $t1, $s1, 8
.L800025A8:
/* 31A8 800025A8 11200007 */ beqz $t1, .L800025C8
/* 31AC 800025AC 3C01A440 */ lui $at, %hi(PHYS_TO_K1(VI_CURRENT_REG))
/* 31B0 800025B0 32310037 */ andi $s1, $s1, 0x37
/* 31B4 800025B4 AC200010 */ sw $zero, %lo(PHYS_TO_K1(VI_CURRENT_REG))($at)
/* 31B8 800025B8 0C0009E9 */ jal send_mesg
/* 31BC 800025BC 24040038 */ addiu $a0, $zero, 0x38
/* 31C0 800025C0 5220002A */ beql $s1, $zero, .L8000266C
/* 31C4 800025C4 2401FBFF */ addiu $at, $zero, -0x401
.L800025C8:
/* 31C8 800025C8 32290004 */ andi $t1, $s1, 4
/* 31CC 800025CC 5120000A */ beql $t1, $zero, .L800025F8
/* 31D0 800025D0 32290002 */ andi $t1, $s1, 2
/* 31D4 800025D4 24090001 */ addiu $t1, $zero, 1
/* 31D8 800025D8 3C01A450 */ lui $at, %hi(PHYS_TO_K1(AI_STATUS_REG))
/* 31DC 800025DC 3231003B */ andi $s1, $s1, 0x3b
/* 31E0 800025E0 AC29000C */ sw $t1, %lo(PHYS_TO_K1(AI_STATUS_REG))($at)
/* 31E4 800025E4 0C0009E9 */ jal send_mesg
/* 31E8 800025E8 24040030 */ addiu $a0, $zero, 0x30
/* 31EC 800025EC 5220001F */ beql $s1, $zero, .L8000266C
/* 31F0 800025F0 2401FBFF */ addiu $at, $zero, -0x401
/* 31F4 800025F4 32290002 */ andi $t1, $s1, 2
.L800025F8:
/* 31F8 800025F8 11200007 */ beqz $t1, .L80002618
/* 31FC 800025FC 3C01A480 */ lui $at, %hi(PHYS_TO_K1(SI_STATUS_REG))
/* 3200 80002600 3231003D */ andi $s1, $s1, 0x3d
/* 3204 80002604 AC200018 */ sw $zero, %lo(PHYS_TO_K1(SI_STATUS_REG))($at)
/* 3208 80002608 0C0009E9 */ jal send_mesg
/* 320C 8000260C 24040028 */ addiu $a0, $zero, 0x28
/* 3210 80002610 52200016 */ beql $s1, $zero, .L8000266C
/* 3214 80002614 2401FBFF */ addiu $at, $zero, -0x401
.L80002618:
/* 3218 80002618 32290010 */ andi $t1, $s1, 0x10
/* 321C 8000261C 5120000A */ beql $t1, $zero, .L80002648
/* 3220 80002620 32290020 */ andi $t1, $s1, 0x20
/* 3224 80002624 24090002 */ addiu $t1, $zero, 2
/* 3228 80002628 3C01A460 */ lui $at, %hi(PHYS_TO_K1(PI_STATUS_REG))
/* 322C 8000262C 3231002F */ andi $s1, $s1, 0x2f
/* 3230 80002630 AC290010 */ sw $t1, %lo(PHYS_TO_K1(PI_STATUS_REG))($at)
/* 3234 80002634 0C0009E9 */ jal send_mesg
/* 3238 80002638 24040040 */ addiu $a0, $zero, 0x40
/* 323C 8000263C 5220000B */ beql $s1, $zero, .L8000266C
/* 3240 80002640 2401FBFF */ addiu $at, $zero, -0x401
/* 3244 80002644 32290020 */ andi $t1, $s1, 0x20
.L80002648:
/* 3248 80002648 51200008 */ beql $t1, $zero, .L8000266C
/* 324C 8000264C 2401FBFF */ addiu $at, $zero, -0x401
/* 3250 80002650 24090800 */ addiu $t1, $zero, 0x800
/* 3254 80002654 3C01A430 */ lui $at, 0xa430
/* 3258 80002658 3231001F */ andi $s1, $s1, 0x1f
/* 325C 8000265C AC290000 */ sw $t1, ($at)
/* 3260 80002660 0C0009E9 */ jal send_mesg
/* 3264 80002664 24040048 */ addiu $a0, $zero, 0x48
/* 3268 80002668 2401FBFF */ addiu $at, $zero, -0x401
.L8000266C:
/* 326C 8000266C 1000FF80 */ b next_interrupt
/* 3270 80002670 02018024 */ and $s0, $s0, $at
prenmi:
/* 3274 80002674 8F5B0118 */ lw $k1, 0x118($k0)
/* 3278 80002678 2401EFFF */ addiu $at, $zero, -0x1001
/* 327C 8000267C 3C098000 */ lui $t1, %hi(__osShutdown)
/* 3280 80002680 0361D824 */ and $k1, $k1, $at
/* 3284 80002684 AF5B0118 */ sw $k1, 0x118($k0)
/* 3288 80002688 252950EC */ addiu $t1, $t1, %lo(__osShutdown)
/* 328C 8000268C 8D2A0000 */ lw $t2, ($t1)
/* 3290 80002690 11400003 */ beqz $t2, firstnmi
/* 3294 80002694 2401EFFF */ addiu $at, $zero, -0x1001
/* 3298 80002698 10000023 */ b redispatch
/* 329C 8000269C 02018024 */ and $s0, $s0, $at
firstnmi:
/* 32A0 800026A0 240A0001 */ addiu $t2, $zero, 1
/* 32A4 800026A4 AD2A0000 */ sw $t2, ($t1)
/* 32A8 800026A8 0C0009E9 */ jal send_mesg
/* 32AC 800026AC 24040070 */ addiu $a0, $zero, 0x70
/* 32B0 800026B0 3C0A8000 */ lui $t2, %hi(__osRunQueue)
/* 32B4 800026B4 8D4A5128 */ lw $t2, %lo(__osRunQueue)($t2)
/* 32B8 800026B8 2401EFFF */ addiu $at, $zero, -0x1001
/* 32BC 800026BC 02018024 */ and $s0, $s0, $at
/* 32C0 800026C0 8D5B0118 */ lw $k1, 0x118($t2)
/* 32C4 800026C4 0361D824 */ and $k1, $k1, $at
/* 32C8 800026C8 10000017 */ b redispatch
/* 32CC 800026CC AD5B0118 */ sw $k1, 0x118($t2)
sw2:
/* 32D0 800026D0 2401FDFF */ addiu $at, $zero, -0x201
/* 32D4 800026D4 01014024 */ and $t0, $t0, $at
/* 32D8 800026D8 40886800 */ mtc0 $t0, $13
/* 32DC 800026DC 0C0009E9 */ jal send_mesg
/* 32E0 800026E0 24040008 */ addiu $a0, $zero, 8
/* 32E4 800026E4 2401FDFF */ addiu $at, $zero, -0x201
/* 32E8 800026E8 1000FF61 */ b next_interrupt
/* 32EC 800026EC 02018024 */ and $s0, $s0, $at
sw1:
/* 32F0 800026F0 2401FEFF */ addiu $at, $zero, -0x101
/* 32F4 800026F4 01014024 */ and $t0, $t0, $at
/* 32F8 800026F8 40886800 */ mtc0 $t0, $13
/* 32FC 800026FC 0C0009E9 */ jal send_mesg
/* 3300 80002700 24040000 */ addiu $a0, $zero, 0
/* 3304 80002704 2401FEFF */ addiu $at, $zero, -0x101
/* 3308 80002708 1000FF59 */ b next_interrupt
/* 330C 8000270C 02018024 */ and $s0, $s0, $at
/* 3310 80002710 24090001 */ addiu $t1, $zero, 1
handle_break:
/* 3314 80002714 A7490012 */ sh $t1, 0x12($k0)
/* 3318 80002718 0C0009E9 */ jal send_mesg
/* 331C 8000271C 24040050 */ addiu $a0, $zero, 0x50
/* 3320 80002720 10000001 */ b redispatch
/* 3324 80002724 00000000 */ nop
redispatch:
/* 3328 80002728 3C0A8000 */ lui $t2, %hi(__osRunQueue)
/* 332C 8000272C 8D4A5128 */ lw $t2, %lo(__osRunQueue)($t2)
/* 3330 80002730 8F490004 */ lw $t1, 4($k0)
/* 3334 80002734 8D4B0004 */ lw $t3, 4($t2)
/* 3338 80002738 012B082A */ slt $at, $t1, $t3
/* 333C 8000273C 10200007 */ beqz $at, enqueueRunning
/* 3340 80002740 00000000 */ nop
/* 3344 80002744 3C048000 */ lui $a0, %hi(__osRunQueue)
/* 3348 80002748 03402825 */ or $a1, $k0, $zero
/* 334C 8000274C 0C000A63 */ jal __osEnqueueThread
/* 3350 80002750 24845128 */ addiu $a0, $a0, %lo(__osRunQueue)
/* 3354 80002754 08000A79 */ j __osDispatchThread
/* 3358 80002758 00000000 */ nop
enqueueRunning:
/* 335C 8000275C 3C098000 */ lui $t1, %hi(__osRunQueue)
/* 3360 80002760 25295128 */ addiu $t1, $t1, %lo(__osRunQueue)
/* 3364 80002764 8D2A0000 */ lw $t2, ($t1)
/* 3368 80002768 AF4A0000 */ sw $t2, ($k0)
/* 336C 8000276C 08000A79 */ j __osDispatchThread
/* 3370 80002770 AD3A0000 */ sw $k0, ($t1)
.L80002774:
/* 3374 80002774 3C018000 */ lui $at, %hi(__osFaultedThread)
/* 3378 80002778 AC3A5134 */ sw $k0, %lo(__osFaultedThread)($at)
/* 337C 8000277C 24090001 */ addiu $t1, $zero, 1
/* 3380 80002780 A7490010 */ sh $t1, 0x10($k0)
/* 3384 80002784 24090002 */ addiu $t1, $zero, 2
/* 3388 80002788 A7490012 */ sh $t1, 0x12($k0)
/* 338C 8000278C 400A4000 */ mfc0 $t2, $8
/* 3390 80002790 AF4A0124 */ sw $t2, 0x124($k0)
/* 3394 80002794 0C0009E9 */ jal send_mesg
/* 3398 80002798 24040060 */ addiu $a0, $zero, 0x60
/* 339C 8000279C 08000A79 */ j __osDispatchThread
/* 33A0 800027A0 00000000 */ nop
endlabel __osException
glabel send_mesg
/* 33A4 800027A4 3C0A8001 */ lui $t2, %hi(__osEventStateTab)
/* 33A8 800027A8 254A8470 */ addiu $t2, $t2, %lo(__osEventStateTab)
/* 33AC 800027AC 01445021 */ addu $t2, $t2, $a0
/* 33B0 800027B0 8D490000 */ lw $t1, ($t2)
/* 33B4 800027B4 03E09025 */ or $s2, $ra, $zero
/* 33B8 800027B8 11200025 */ beqz $t1, send_done
/* 33BC 800027BC 00000000 */ nop
/* 33C0 800027C0 8D2B0008 */ lw $t3, 8($t1)
/* 33C4 800027C4 8D2C0010 */ lw $t4, 0x10($t1)
/* 33C8 800027C8 016C082A */ slt $at, $t3, $t4
/* 33CC 800027CC 10200020 */ beqz $at, send_done
/* 33D0 800027D0 00000000 */ nop
/* 33D4 800027D4 8D2D000C */ lw $t5, 0xc($t1)
/* 33D8 800027D8 01AB6821 */ addu $t5, $t5, $t3
/* 33DC 800027DC 01AC001A */ div $zero, $t5, $t4
/* 33E0 800027E0 15800002 */ bnez $t4, .L800027EC
/* 33E4 800027E4 00000000 */ nop
/* 33E8 800027E8 0007000D */ break 7
.L800027EC:
/* 33EC 800027EC 2401FFFF */ addiu $at, $zero, -1
/* 33F0 800027F0 15810004 */ bne $t4, $at, .L80002804
/* 33F4 800027F4 3C018000 */ lui $at, 0x8000
/* 33F8 800027F8 15A10002 */ bne $t5, $at, .L80002804
/* 33FC 800027FC 00000000 */ nop
/* 3400 80002800 0006000D */ break 6
.L80002804:
/* 3404 80002804 8D2C0014 */ lw $t4, 0x14($t1)
/* 3408 80002808 00006810 */ mfhi $t5
/* 340C 8000280C 000D6880 */ sll $t5, $t5, 2
/* 3410 80002810 018D6021 */ addu $t4, $t4, $t5
/* 3414 80002814 8D4D0004 */ lw $t5, 4($t2)
/* 3418 80002818 256A0001 */ addiu $t2, $t3, 1
/* 341C 8000281C AD8D0000 */ sw $t5, ($t4)
/* 3420 80002820 AD2A0008 */ sw $t2, 8($t1)
/* 3424 80002824 8D2A0000 */ lw $t2, ($t1)
/* 3428 80002828 8D4B0000 */ lw $t3, ($t2)
/* 342C 8000282C 11600008 */ beqz $t3, send_done
/* 3430 80002830 00000000 */ nop
/* 3434 80002834 0C000A75 */ jal __osPopThread
/* 3438 80002838 01202025 */ or $a0, $t1, $zero
/* 343C 8000283C 00405025 */ or $t2, $v0, $zero
/* 3440 80002840 3C048000 */ lui $a0, %hi(__osRunQueue)
/* 3444 80002844 01402825 */ or $a1, $t2, $zero
/* 3448 80002848 0C000A63 */ jal __osEnqueueThread
/* 344C 8000284C 24845128 */ addiu $a0, $a0, %lo(__osRunQueue)
send_done:
/* 3450 80002850 02400008 */ jr $s2
/* 3454 80002854 00000000 */ nop
endlabel send_mesg
glabel handle_CpU
/* 3458 80002858 3C013000 */ lui $at, 0x3000
/* 345C 8000285C 01014824 */ and $t1, $t0, $at
/* 3460 80002860 00094F02 */ srl $t1, $t1, 0x1c
/* 3464 80002864 240A0001 */ addiu $t2, $zero, 1
/* 3468 80002868 152AFFC2 */ bne $t1, $t2, .L80002774
/* 346C 8000286C 00000000 */ nop
/* 3470 80002870 8F5B0118 */ lw $k1, 0x118($k0)
/* 3474 80002874 3C012000 */ lui $at, 0x2000
/* 3478 80002878 24090001 */ addiu $t1, $zero, 1
/* 347C 8000287C 0361D825 */ or $k1, $k1, $at
/* 3480 80002880 AF490018 */ sw $t1, 0x18($k0)
/* 3484 80002884 1000FFB5 */ b enqueueRunning
/* 3488 80002888 AF5B0118 */ sw $k1, 0x118($k0)
endlabel handle_CpU
glabel __osEnqueueAndYield
/* 348C 8000288C 3C058000 */ lui $a1, %hi(__osRunningThread)
/* 3490 80002890 8CA55130 */ lw $a1, %lo(__osRunningThread)($a1)
/* 3494 80002894 40086000 */ mfc0 $t0, $12
/* 3498 80002898 8CBB0018 */ lw $k1, 0x18($a1)
/* 349C 8000289C 35080002 */ ori $t0, $t0, 2
/* 34A0 800028A0 ACA80118 */ sw $t0, 0x118($a1)
/* 34A4 800028A4 FCB00098 */ sd $s0, 0x98($a1)
/* 34A8 800028A8 FCB100A0 */ sd $s1, 0xa0($a1)
/* 34AC 800028AC FCB200A8 */ sd $s2, 0xa8($a1)
/* 34B0 800028B0 FCB300B0 */ sd $s3, 0xb0($a1)
/* 34B4 800028B4 FCB400B8 */ sd $s4, 0xb8($a1)
/* 34B8 800028B8 FCB500C0 */ sd $s5, 0xc0($a1)
/* 34BC 800028BC FCB600C8 */ sd $s6, 0xc8($a1)
/* 34C0 800028C0 FCB700D0 */ sd $s7, 0xd0($a1)
/* 34C4 800028C4 FCBC00E8 */ sd $gp, 0xe8($a1)
/* 34C8 800028C8 FCBD00F0 */ sd $sp, 0xf0($a1)
/* 34CC 800028CC FCBE00F8 */ sd $fp, 0xf8($a1)
/* 34D0 800028D0 FCBF0100 */ sd $ra, 0x100($a1)
/* 34D4 800028D4 13600009 */ beqz $k1, .L800028FC
/* 34D8 800028D8 ACBF011C */ sw $ra, 0x11c($a1)
/* 34DC 800028DC 445BF800 */ cfc1 $k1, $31
/* 34E0 800028E0 F4B40180 */ sdc1 $f20, 0x180($a1)
/* 34E4 800028E4 F4B60188 */ sdc1 $f22, 0x188($a1)
/* 34E8 800028E8 F4B80190 */ sdc1 $f24, 0x190($a1)
/* 34EC 800028EC F4BA0198 */ sdc1 $f26, 0x198($a1)
/* 34F0 800028F0 F4BC01A0 */ sdc1 $f28, 0x1a0($a1)
/* 34F4 800028F4 F4BE01A8 */ sdc1 $f30, 0x1a8($a1)
/* 34F8 800028F8 ACBB012C */ sw $k1, 0x12c($a1)
.L800028FC:
/* 34FC 800028FC 8CBB0118 */ lw $k1, 0x118($a1)
/* 3500 80002900 3369FF00 */ andi $t1, $k1, 0xff00
/* 3504 80002904 5120000E */ beql $t1, $zero, .L80002940
/* 3508 80002908 3C1BA430 */ lui $k1, 0xa430
/* 350C 8000290C 3C088000 */ lui $t0, %hi(__OSGlobalIntMask)
/* 3510 80002910 250850F0 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
/* 3514 80002914 8D080000 */ lw $t0, ($t0)
/* 3518 80002918 2401FFFF */ addiu $at, $zero, -1
/* 351C 8000291C 01014026 */ xor $t0, $t0, $at
/* 3520 80002920 3C01FFFF */ lui $at, 0xffff
/* 3524 80002924 3108FF00 */ andi $t0, $t0, 0xff00
/* 3528 80002928 342100FF */ ori $at, $at, 0xff
/* 352C 8000292C 01284825 */ or $t1, $t1, $t0
/* 3530 80002930 0361D824 */ and $k1, $k1, $at
/* 3534 80002934 0369D825 */ or $k1, $k1, $t1
/* 3538 80002938 ACBB0118 */ sw $k1, 0x118($a1)
/* 353C 8000293C 3C1BA430 */ lui $k1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
.L80002940:
/* 3540 80002940 8F7B000C */ lw $k1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($k1)
/* 3544 80002944 1360000B */ beqz $k1, .L80002974
/* 3548 80002948 00000000 */ nop
/* 354C 8000294C 3C1A8000 */ lui $k0, %hi(__OSGlobalIntMask)
/* 3550 80002950 275A50F0 */ addiu $k0, $k0, %lo(__OSGlobalIntMask)
/* 3554 80002954 8F5A0000 */ lw $k0, ($k0)
/* 3558 80002958 8CA80128 */ lw $t0, 0x128($a1)
/* 355C 8000295C 2401FFFF */ addiu $at, $zero, -1
/* 3560 80002960 001AD402 */ srl $k0, $k0, 0x10
/* 3564 80002964 0341D026 */ xor $k0, $k0, $at
/* 3568 80002968 335A003F */ andi $k0, $k0, 0x3f
/* 356C 8000296C 0348D024 */ and $k0, $k0, $t0
/* 3570 80002970 037AD825 */ or $k1, $k1, $k0
.L80002974:
/* 3574 80002974 10800003 */ beqz $a0, .L80002984
/* 3578 80002978 ACBB0128 */ sw $k1, 0x128($a1)
/* 357C 8000297C 0C000A63 */ jal __osEnqueueThread
/* 3580 80002980 00000000 */ nop
.L80002984:
/* 3584 80002984 08000A79 */ j __osDispatchThread
/* 3588 80002988 00000000 */ nop
endlabel __osEnqueueAndYield
glabel __osEnqueueThread
/* 358C 8000298C 8C980000 */ lw $t8, ($a0)
/* 3590 80002990 8CAF0004 */ lw $t7, 4($a1)
/* 3594 80002994 0080C825 */ or $t9, $a0, $zero
/* 3598 80002998 8F0E0004 */ lw $t6, 4($t8)
/* 359C 8000299C 01CF082A */ slt $at, $t6, $t7
/* 35A0 800029A0 54200008 */ bnel $at, $zero, .L800029C4
/* 35A4 800029A4 8F380000 */ lw $t8, ($t9)
/* 35A8 800029A8 0300C825 */ or $t9, $t8, $zero
.L800029AC:
/* 35AC 800029AC 8F180000 */ lw $t8, ($t8)
/* 35B0 800029B0 8F0E0004 */ lw $t6, 4($t8)
/* 35B4 800029B4 01CF082A */ slt $at, $t6, $t7
/* 35B8 800029B8 5020FFFC */ beql $at, $zero, .L800029AC
/* 35BC 800029BC 0300C825 */ or $t9, $t8, $zero
/* 35C0 800029C0 8F380000 */ lw $t8, ($t9)
.L800029C4:
/* 35C4 800029C4 ACB80000 */ sw $t8, ($a1)
/* 35C8 800029C8 AF250000 */ sw $a1, ($t9)
/* 35CC 800029CC 03E00008 */ jr $ra
/* 35D0 800029D0 ACA40008 */ sw $a0, 8($a1)
endlabel __osEnqueueThread
glabel __osPopThread
/* 35D4 800029D4 8C820000 */ lw $v0, ($a0)
/* 35D8 800029D8 8C590000 */ lw $t9, ($v0)
/* 35DC 800029DC 03E00008 */ jr $ra
/* 35E0 800029E0 AC990000 */ sw $t9, ($a0)
endlabel __osPopThread
glabel __osDispatchThread
/* 35E4 800029E4 3C048000 */ lui $a0, %hi(__osRunQueue)
/* 35E8 800029E8 0C000A75 */ jal __osPopThread
/* 35EC 800029EC 24845128 */ addiu $a0, $a0, %lo(__osRunQueue)
/* 35F0 800029F0 3C018000 */ lui $at, %hi(__osRunningThread)
/* 35F4 800029F4 AC225130 */ sw $v0, %lo(__osRunningThread)($at)
/* 35F8 800029F8 24080004 */ addiu $t0, $zero, 4
/* 35FC 800029FC A4480010 */ sh $t0, 0x10($v0)
/* 3600 80002A00 0040D025 */ or $k0, $v0, $zero
/* 3604 80002A04 3C088000 */ lui $t0, %hi(__OSGlobalIntMask)
/* 3608 80002A08 8F5B0118 */ lw $k1, 0x118($k0)
/* 360C 80002A0C 250850F0 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
/* 3610 80002A10 8D080000 */ lw $t0, ($t0)
/* 3614 80002A14 3C01FFFF */ lui $at, 0xffff
/* 3618 80002A18 3369FF00 */ andi $t1, $k1, 0xff00
/* 361C 80002A1C 342100FF */ ori $at, $at, 0xff
/* 3620 80002A20 3108FF00 */ andi $t0, $t0, 0xff00
/* 3624 80002A24 01284824 */ and $t1, $t1, $t0
/* 3628 80002A28 0361D824 */ and $k1, $k1, $at
/* 362C 80002A2C 0369D825 */ or $k1, $k1, $t1
/* 3630 80002A30 409B6000 */ mtc0 $k1, $12
/* 3634 80002A34 DF5B0108 */ ld $k1, 0x108($k0)
/* 3638 80002A38 DF410020 */ ld $at, 0x20($k0)
/* 363C 80002A3C DF420028 */ ld $v0, 0x28($k0)
/* 3640 80002A40 03600013 */ mtlo $k1
/* 3644 80002A44 DF5B0110 */ ld $k1, 0x110($k0)
/* 3648 80002A48 DF430030 */ ld $v1, 0x30($k0)
/* 364C 80002A4C DF440038 */ ld $a0, 0x38($k0)
/* 3650 80002A50 DF450040 */ ld $a1, 0x40($k0)
/* 3654 80002A54 DF460048 */ ld $a2, 0x48($k0)
/* 3658 80002A58 DF470050 */ ld $a3, 0x50($k0)
/* 365C 80002A5C DF480058 */ ld $t0, 0x58($k0)
/* 3660 80002A60 DF490060 */ ld $t1, 0x60($k0)
/* 3664 80002A64 DF4A0068 */ ld $t2, 0x68($k0)
/* 3668 80002A68 DF4B0070 */ ld $t3, 0x70($k0)
/* 366C 80002A6C DF4C0078 */ ld $t4, 0x78($k0)
/* 3670 80002A70 DF4D0080 */ ld $t5, 0x80($k0)
/* 3674 80002A74 DF4E0088 */ ld $t6, 0x88($k0)
/* 3678 80002A78 DF4F0090 */ ld $t7, 0x90($k0)
/* 367C 80002A7C DF500098 */ ld $s0, 0x98($k0)
/* 3680 80002A80 DF5100A0 */ ld $s1, 0xa0($k0)
/* 3684 80002A84 DF5200A8 */ ld $s2, 0xa8($k0)
/* 3688 80002A88 DF5300B0 */ ld $s3, 0xb0($k0)
/* 368C 80002A8C DF5400B8 */ ld $s4, 0xb8($k0)
/* 3690 80002A90 DF5500C0 */ ld $s5, 0xc0($k0)
/* 3694 80002A94 DF5600C8 */ ld $s6, 0xc8($k0)
/* 3698 80002A98 DF5700D0 */ ld $s7, 0xd0($k0)
/* 369C 80002A9C DF5800D8 */ ld $t8, 0xd8($k0)
/* 36A0 80002AA0 DF5900E0 */ ld $t9, 0xe0($k0)
/* 36A4 80002AA4 DF5C00E8 */ ld $gp, 0xe8($k0)
/* 36A8 80002AA8 03600011 */ mthi $k1
/* 36AC 80002AAC DF5D00F0 */ ld $sp, 0xf0($k0)
/* 36B0 80002AB0 DF5E00F8 */ ld $fp, 0xf8($k0)
/* 36B4 80002AB4 DF5F0100 */ ld $ra, 0x100($k0)
/* 36B8 80002AB8 8F5B011C */ lw $k1, 0x11c($k0)
/* 36BC 80002ABC 409B7000 */ mtc0 $k1, $14
/* 36C0 80002AC0 8F5B0018 */ lw $k1, 0x18($k0)
/* 36C4 80002AC4 13600013 */ beqz $k1, .L80002B14
/* 36C8 80002AC8 00000000 */ nop
/* 36CC 80002ACC 8F5B012C */ lw $k1, 0x12c($k0)
/* 36D0 80002AD0 44DBF800 */ ctc1 $k1, $31
/* 36D4 80002AD4 D7400130 */ ldc1 $f0, 0x130($k0)
/* 36D8 80002AD8 D7420138 */ ldc1 $f2, 0x138($k0)
/* 36DC 80002ADC D7440140 */ ldc1 $f4, 0x140($k0)
/* 36E0 80002AE0 D7460148 */ ldc1 $f6, 0x148($k0)
/* 36E4 80002AE4 D7480150 */ ldc1 $f8, 0x150($k0)
/* 36E8 80002AE8 D74A0158 */ ldc1 $f10, 0x158($k0)
/* 36EC 80002AEC D74C0160 */ ldc1 $f12, 0x160($k0)
/* 36F0 80002AF0 D74E0168 */ ldc1 $f14, 0x168($k0)
/* 36F4 80002AF4 D7500170 */ ldc1 $f16, 0x170($k0)
/* 36F8 80002AF8 D7520178 */ ldc1 $f18, 0x178($k0)
/* 36FC 80002AFC D7540180 */ ldc1 $f20, 0x180($k0)
/* 3700 80002B00 D7560188 */ ldc1 $f22, 0x188($k0)
/* 3704 80002B04 D7580190 */ ldc1 $f24, 0x190($k0)
/* 3708 80002B08 D75A0198 */ ldc1 $f26, 0x198($k0)
/* 370C 80002B0C D75C01A0 */ ldc1 $f28, 0x1a0($k0)
/* 3710 80002B10 D75E01A8 */ ldc1 $f30, 0x1a8($k0)
.L80002B14:
/* 3714 80002B14 8F5B0128 */ lw $k1, 0x128($k0)
/* 3718 80002B18 3C1A8000 */ lui $k0, %hi(__OSGlobalIntMask)
/* 371C 80002B1C 275A50F0 */ addiu $k0, $k0, %lo(__OSGlobalIntMask)
/* 3720 80002B20 8F5A0000 */ lw $k0, ($k0)
/* 3724 80002B24 001AD402 */ srl $k0, $k0, 0x10
/* 3728 80002B28 037AD824 */ and $k1, $k1, $k0
/* 372C 80002B2C 001BD840 */ sll $k1, $k1, 1
/* 3730 80002B30 3C1A8000 */ lui $k0, %hi(__osRcpImTable)
/* 3734 80002B34 275A51D0 */ addiu $k0, $k0, %lo(__osRcpImTable)
/* 3738 80002B38 037AD821 */ addu $k1, $k1, $k0
/* 373C 80002B3C 977B0000 */ lhu $k1, ($k1)
/* 3740 80002B40 3C1AA430 */ lui $k0, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
/* 3744 80002B44 275A000C */ addiu $k0, $k0, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))
/* 3748 80002B48 AF5B0000 */ sw $k1, ($k0)
/* 374C 80002B4C 00000000 */ nop
/* 3750 80002B50 00000000 */ nop
/* 3754 80002B54 00000000 */ nop
/* 3758 80002B58 00000000 */ nop
/* 375C 80002B5C 42000018 */ eret
endlabel __osDispatchThread
glabel __osCleanupThread
/* 3760 80002B60 0C000EB4 */ jal osDestroyThread
/* 3764 80002B64 00002025 */ or $a0, $zero, $zero
/* 3768 80002B68 00000000 */ nop
/* 376C 80002B6C 00000000 */ nop
endlabel __osCleanupThread
-17
View File
@@ -1,17 +0,0 @@
#include "PR/R4300.h"
#include "sys/asm.h"
#include "sys/regdef.h"
.text
ABS(leoBootID, 0x800001a0)
ABS(osTvType, 0x80000300)
ABS(osRomType, 0x80000304)
ABS(osRomBase, 0x80000308)
ABS(osResetType, 0x8000030c)
ABS(osCicId, 0x80000310)
ABS(osVersion, 0x80000314)
ABS(osMemSize, 0x80000318)
ABS(osAppNMIBuffer, 0x8000031c)
.space 0x60
/* padded to 0x60 in the object file */
-136
View File
@@ -1,136 +0,0 @@
#include <sys/asm.h>
#include <PR/rcp.h>
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set gp=64 # allow use of 64-bit general purpose registers
.rdata
#define MI_INTR_MASK 0x3f
#define CLR_SP 0x0001
#define SET_SP 0x0002
#define CLR_SI 0x0004
#define SET_SI 0x0008
#define CLR_AI 0x0010
#define SET_AI 0x0020
#define CLR_VI 0x0040
#define SET_VI 0x0080
#define CLR_PI 0x0100
#define SET_PI 0x0200
#define CLR_DP 0x0400
#define SET_DP 0x0800
EXPORT(__osRcpImTable)
/* LUT to convert between MI_INTR and MI_INTR_MASK */
/* MI_INTR is status for each interrupt whereas */
/* MI_INTR_MASK has seperate bits for set/clr */
.half CLR_SP | CLR_SI | CLR_AI | CLR_VI | CLR_PI | CLR_DP
.half SET_SP | CLR_SI | CLR_AI | CLR_VI | CLR_PI | CLR_DP
.half CLR_SP | SET_SI | CLR_AI | CLR_VI | CLR_PI | CLR_DP
.half SET_SP | SET_SI | CLR_AI | CLR_VI | CLR_PI | CLR_DP
.half CLR_SP | CLR_SI | SET_AI | CLR_VI | CLR_PI | CLR_DP
.half SET_SP | CLR_SI | SET_AI | CLR_VI | CLR_PI | CLR_DP
.half CLR_SP | SET_SI | SET_AI | CLR_VI | CLR_PI | CLR_DP
.half SET_SP | SET_SI | SET_AI | CLR_VI | CLR_PI | CLR_DP
.half CLR_SP | CLR_SI | CLR_AI | SET_VI | CLR_PI | CLR_DP
.half SET_SP | CLR_SI | CLR_AI | SET_VI | CLR_PI | CLR_DP
.half CLR_SP | SET_SI | CLR_AI | SET_VI | CLR_PI | CLR_DP
.half SET_SP | SET_SI | CLR_AI | SET_VI | CLR_PI | CLR_DP
.half CLR_SP | CLR_SI | SET_AI | SET_VI | CLR_PI | CLR_DP
.half SET_SP | CLR_SI | SET_AI | SET_VI | CLR_PI | CLR_DP
.half CLR_SP | SET_SI | SET_AI | SET_VI | CLR_PI | CLR_DP
.half SET_SP | SET_SI | SET_AI | SET_VI | CLR_PI | CLR_DP
.half CLR_SP | CLR_SI | CLR_AI | CLR_VI | SET_PI | CLR_DP
.half SET_SP | CLR_SI | CLR_AI | CLR_VI | SET_PI | CLR_DP
.half CLR_SP | SET_SI | CLR_AI | CLR_VI | SET_PI | CLR_DP
.half SET_SP | SET_SI | CLR_AI | CLR_VI | SET_PI | CLR_DP
.half CLR_SP | CLR_SI | SET_AI | CLR_VI | SET_PI | CLR_DP
.half SET_SP | CLR_SI | SET_AI | CLR_VI | SET_PI | CLR_DP
.half CLR_SP | SET_SI | SET_AI | CLR_VI | SET_PI | CLR_DP
.half SET_SP | SET_SI | SET_AI | CLR_VI | SET_PI | CLR_DP
.half CLR_SP | CLR_SI | CLR_AI | SET_VI | SET_PI | CLR_DP
.half SET_SP | CLR_SI | CLR_AI | SET_VI | SET_PI | CLR_DP
.half CLR_SP | SET_SI | CLR_AI | SET_VI | SET_PI | CLR_DP
.half SET_SP | SET_SI | CLR_AI | SET_VI | SET_PI | CLR_DP
.half CLR_SP | CLR_SI | SET_AI | SET_VI | SET_PI | CLR_DP
.half SET_SP | CLR_SI | SET_AI | SET_VI | SET_PI | CLR_DP
.half CLR_SP | SET_SI | SET_AI | SET_VI | SET_PI | CLR_DP
.half SET_SP | SET_SI | SET_AI | SET_VI | SET_PI | CLR_DP
.half CLR_SP | CLR_SI | CLR_AI | CLR_VI | CLR_PI | SET_DP
.half SET_SP | CLR_SI | CLR_AI | CLR_VI | CLR_PI | SET_DP
.half CLR_SP | SET_SI | CLR_AI | CLR_VI | CLR_PI | SET_DP
.half SET_SP | SET_SI | CLR_AI | CLR_VI | CLR_PI | SET_DP
.half CLR_SP | CLR_SI | SET_AI | CLR_VI | CLR_PI | SET_DP
.half SET_SP | CLR_SI | SET_AI | CLR_VI | CLR_PI | SET_DP
.half CLR_SP | SET_SI | SET_AI | CLR_VI | CLR_PI | SET_DP
.half SET_SP | SET_SI | SET_AI | CLR_VI | CLR_PI | SET_DP
.half CLR_SP | CLR_SI | CLR_AI | SET_VI | CLR_PI | SET_DP
.half SET_SP | CLR_SI | CLR_AI | SET_VI | CLR_PI | SET_DP
.half CLR_SP | SET_SI | CLR_AI | SET_VI | CLR_PI | SET_DP
.half SET_SP | SET_SI | CLR_AI | SET_VI | CLR_PI | SET_DP
.half CLR_SP | CLR_SI | SET_AI | SET_VI | CLR_PI | SET_DP
.half SET_SP | CLR_SI | SET_AI | SET_VI | CLR_PI | SET_DP
.half CLR_SP | SET_SI | SET_AI | SET_VI | CLR_PI | SET_DP
.half SET_SP | SET_SI | SET_AI | SET_VI | CLR_PI | SET_DP
.half CLR_SP | CLR_SI | CLR_AI | CLR_VI | SET_PI | SET_DP
.half SET_SP | CLR_SI | CLR_AI | CLR_VI | SET_PI | SET_DP
.half CLR_SP | SET_SI | CLR_AI | CLR_VI | SET_PI | SET_DP
.half SET_SP | SET_SI | CLR_AI | CLR_VI | SET_PI | SET_DP
.half CLR_SP | CLR_SI | SET_AI | CLR_VI | SET_PI | SET_DP
.half SET_SP | CLR_SI | SET_AI | CLR_VI | SET_PI | SET_DP
.half CLR_SP | SET_SI | SET_AI | CLR_VI | SET_PI | SET_DP
.half SET_SP | SET_SI | SET_AI | CLR_VI | SET_PI | SET_DP
.half CLR_SP | CLR_SI | CLR_AI | SET_VI | SET_PI | SET_DP
.half SET_SP | CLR_SI | CLR_AI | SET_VI | SET_PI | SET_DP
.half CLR_SP | SET_SI | CLR_AI | SET_VI | SET_PI | SET_DP
.half SET_SP | SET_SI | CLR_AI | SET_VI | SET_PI | SET_DP
.half CLR_SP | CLR_SI | SET_AI | SET_VI | SET_PI | SET_DP
.half SET_SP | CLR_SI | SET_AI | SET_VI | SET_PI | SET_DP
.half CLR_SP | SET_SI | SET_AI | SET_VI | SET_PI | SET_DP
.half SET_SP | SET_SI | SET_AI | SET_VI | SET_PI | SET_DP
.text
.set noreorder
glabel func_80003A30
/* 4630 80003A30 400C6000 */ mfc0 $t4, $12
/* 4634 80003A34 3182FF01 */ andi $v0, $t4, 0xff01
/* 4638 80003A38 3C088000 */ lui $t0, %hi(__OSGlobalIntMask)
/* 463C 80003A3C 250850F0 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
/* 4640 80003A40 8D0B0000 */ lw $t3, ($t0)
/* 4644 80003A44 2401FFFF */ addiu $at, $zero, -1
/* 4648 80003A48 01614026 */ xor $t0, $t3, $at
/* 464C 80003A4C 3108FF00 */ andi $t0, $t0, 0xff00
/* 4650 80003A50 00481025 */ or $v0, $v0, $t0
/* 4654 80003A54 3C0AA430 */ lui $t2, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
/* 4658 80003A58 8D4A000C */ lw $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t2)
/* 465C 80003A5C 11400005 */ beqz $t2, .L80003A74
/* 4660 80003A60 000B4C02 */ srl $t1, $t3, 0x10
/* 4664 80003A64 2401FFFF */ addiu $at, $zero, -1
/* 4668 80003A68 01214826 */ xor $t1, $t1, $at
/* 466C 80003A6C 3129003F */ andi $t1, $t1, 0x3f
/* 4670 80003A70 01495025 */ or $t2, $t2, $t1
.L80003A74:
/* 4674 80003A74 000A5400 */ sll $t2, $t2, 0x10
/* 4678 80003A78 004A1025 */ or $v0, $v0, $t2
/* 467C 80003A7C 3C01003F */ lui $at, 0x3f
/* 4680 80003A80 00814024 */ and $t0, $a0, $at
/* 4684 80003A84 010B4024 */ and $t0, $t0, $t3
/* 4688 80003A88 000843C2 */ srl $t0, $t0, 0xf
/* 468C 80003A8C 3C0A8000 */ lui $t2, %hi(__osRcpImTable)
/* 4690 80003A90 01485021 */ addu $t2, $t2, $t0
/* 4694 80003A94 954A51D0 */ lhu $t2, %lo(__osRcpImTable)($t2)
/* 4698 80003A98 3C01A430 */ lui $at, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
/* 469C 80003A9C AC2A000C */ sw $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($at)
/* 46A0 80003AA0 3088FF01 */ andi $t0, $a0, 0xff01
/* 46A4 80003AA4 3169FF00 */ andi $t1, $t3, 0xff00
/* 46A8 80003AA8 01094024 */ and $t0, $t0, $t1
/* 46AC 80003AAC 3C01FFFF */ lui $at, 0xffff
/* 46B0 80003AB0 342100FF */ ori $at, $at, 0xff
/* 46B4 80003AB4 01816024 */ and $t4, $t4, $at
/* 46B8 80003AB8 01886025 */ or $t4, $t4, $t0
/* 46BC 80003ABC 408C6000 */ mtc0 $t4, $12
/* 46C0 80003AC0 00000000 */ nop
/* 46C4 80003AC4 00000000 */ nop
/* 46C8 80003AC8 03E00008 */ jr $ra
/* 46CC 80003ACC 00000000 */ nop
endlabel func_80003A30
+301 -299
View File
@@ -16,6 +16,7 @@ options:
target_path: decompressed.pal.z64
asset_path: bin
build_path: build/pal
lib_path: build/pal
libultra_symbols: True
hardware_regs: True
ld_sections_allowlist:
@@ -41,78 +42,79 @@ segments:
subsegments:
- [0x1000, hasm, entry]
- name: boot/bk_boot
dir: boot
type: code
start: 0x1050
vram: 0x80000450
subsegments:
- [0x1050, c, done/bk_boot_1050]
- [0x1150, c, done/rarezip]
- [0x12B0, c, done/inflate]
- [0x27F0, c, done/overlays]
- [0x2970, c, done/initialize]
- [0x2C00, c, done/pirawdma]
- [0x2CE0, c, done/pigetstat]
- [0x2CF0, hasm, bzero]
- [0x2D90, hasm, setsr]
- [0x2DA0, hasm, getsr]
- [0x2DB0, hasm, setfpccsr]
- [0x2DC0, c, done/sirawread]
- [0x2E10, c, done/sirawwrite]
- [0x2E60, hasm, ultra/exceptasm]
- [0x3770, hasm, writebackdcache]
- [0x37F0, hasm, invalicache]
- [0x3870, hasm, maptlbrdb]
- [0x38D0, c, done/pirawread]
- [0x3930, c, done/ll]
- [0x3BF0, hasm, ultra/parameters]
- [0x3C50, c, done/virtualtophysical]
- [0x3CD0, c, done/si]
- [0x3D00, c, done/thread]
- [0x3D40, c, done/leointerrupt]
- [0x45C0, c, done/seteventmesg]
- [0x4630, hasm, ultra/setintmask]
- [0x46D0, c, done/destroythread]
- [0x47D0, hasm, probetlb]
- [0x4890, c, done/leodiskinit]
- [0x4990, c, done/epirawdma]
- [0x4BC0, hasm, interrupt]
- [0x4C00, c, done/pimgr]
- [0x4D90, c, done/cartrominit]
- [0x4E90, c, done/createmesgqueue]
- [0x4EC0, c, done/piacs]
- [0x4F80, c, done/getthreadpri]
- [0x4FA0, c, done/setthreadpri]
- [0x5080, c, done/createthread]
- [0x51D0, c, done/devmgr]
- [0x5660, c, done/startthread]
- [0x57B0, c, done/sendmesg]
- [0x5900, c, done/recvmesg]
- [0x5A40, c, done/resetglobalintmask]
- [0x5AA0, c, done/epirawwrite]
- [0x5AF0, c, done/epirawread]
- [0x5B40, c, done/setglobalintmask]
- [0x5B90, c, done/yieldthread]
- [0x5BE0, c, done/kdebugserver]
- [0x5BE0, .data, done/inflate]
- [0x5CE0, .data, done/initialize]
- [0x5D00, .data, ultra/exceptasm]
- [0x5D20, .data, done/thread]
- [0x5D40, .data, done/pimgr]
- [0x5D70, .data, done/piacs]
- [0x5D80, .rodata, ultra/exceptasm]
- [0x5DD0, .rodata, ultra/setintmask]
- [0x5E50, .rodata, done/devmgr]
- [0x5E70, .bss, done/bk_boot_1050]
- [0x5E70, .bss, done/rarezip]
- [0x5E70, .bss, done/inflate]
- [0x5E70, .bss, done/initialize]
- [0x5E70, .bss, done/kdebugserver]
- [0x5E70, .bss, done/leointerrupt]
- [0x5E70, .bss, done/seteventmesg]
- [0x5E70, .bss, done/leodiskinit]
- [0x5E70, .bss, done/pimgr]
- [0x5E70, .bss, done/cartrominit]
- [0x5E70, .bss, done/piacs]
- [0x1050, c, bk_boot_1050]
- [0x1150, c, rarezip]
- [0x12B0, c, inflate]
- [0x27F0, c, overlays]
- [0x2970, lib, libultra_rom_boot, initialize, .text]
- [0x2C00, lib, libultra_rom_boot, pirawdma, .text]
- [0x2CE0, lib, libultra_rom_boot, pigetstat, .text]
- [0x2CF0, lib, libultra_rom_boot, bzero, .text]
- [0x2D90, lib, libultra_rom_boot, setsr, .text]
- [0x2DA0, lib, libultra_rom_boot, getsr, .text]
- [0x2DB0, lib, libultra_rom_boot, setfpccsr, .text]
- [0x2DC0, lib, libultra_rom_boot, sirawread, .text]
- [0x2E10, lib, libultra_rom_boot, sirawwrite, .text]
- [0x2E60, lib, libultra_rom_boot, exceptasm, .text]
- [0x3770, lib, libultra_rom_boot, writebackdcache, .text]
- [0x37F0, lib, libultra_rom_boot, invalicache, .text]
- [0x3870, lib, libultra_rom_boot, maptlbrdb, .text]
- [0x38D0, lib, libultra_rom_boot, pirawread, .text]
- [0x3930, lib, libultra_rom_boot, ll, .text]
- [0x3BF0, lib, libultra_rom_boot, parameters, .text]
- [0x3C50, lib, libultra_rom_boot, virtualtophysical, .text]
- [0x3CD0, lib, libultra_rom_boot, si, .text]
- [0x3D00, lib, libultra_rom_boot, thread, .text]
- [0x3D40, lib, libultra_rom_boot, leointerrupt, .text]
- [0x45C0, lib, libultra_rom_boot, seteventmesg, .text]
- [0x4630, lib, libultra_rom_boot, setintmask, .text]
- [0x46D0, lib, libultra_rom_boot, destroythread, .text]
- [0x47D0, lib, libultra_rom_boot, probetlb, .text]
- [0x4890, lib, libultra_rom_boot, leodiskinit, .text]
- [0x4990, lib, libultra_rom_boot, epirawdma, .text]
- [0x4BC0, lib, libultra_rom_boot, interrupt, .text]
- [0x4C00, lib, libultra_rom_boot, pimgr, .text]
- [0x4D90, lib, libultra_rom_boot, cartrominit, .text]
- [0x4E90, lib, libultra_rom_boot, createmesgqueue, .text]
- [0x4EC0, lib, libultra_rom_boot, piacs, .text]
- [0x4F80, lib, libultra_rom_boot, getthreadpri, .text]
- [0x4FA0, lib, libultra_rom_boot, setthreadpri, .text]
- [0x5080, lib, libultra_rom_boot, createthread, .text]
- [0x51D0, lib, libultra_rom_boot, devmgr, .text]
- [0x5660, lib, libultra_rom_boot, startthread, .text]
- [0x57B0, lib, libultra_rom_boot, sendmesg, .text]
- [0x5900, lib, libultra_rom_boot, recvmesg, .text]
- [0x5A40, lib, libultra_rom_boot, resetglobalintmask, .text]
- [0x5AA0, lib, libultra_rom_boot, epirawwrite, .text]
- [0x5AF0, lib, libultra_rom_boot, epirawread, .text]
- [0x5B40, lib, libultra_rom_boot, setglobalintmask, .text]
- [0x5B90, lib, libultra_rom_boot, yieldthread, .text]
- [0x5BE0, lib, libultra_rom_boot, kdebugserver, .text]
- [0x5BE0, .data, inflate]
- [0x5CE0, lib, libultra_rom_boot, initialize, .data]
- [0x5D00, lib, libultra_rom_boot, exceptasm, .data]
- [0x5D20, lib, libultra_rom_boot, thread, .data]
- [0x5D40, lib, libultra_rom_boot, pimgr, .data]
- [0x5D70, lib, libultra_rom_boot, piacs, .data]
- [0x5D80, lib, libultra_rom_boot, exceptasm, .rodata]
- [0x5DD0, lib, libultra_rom_boot, setintmask, .rodata]
- [0x5E50, lib, libultra_rom_boot, devmgr, .rodata]
- [0x5E70, .bss, bk_boot_1050]
- [0x5E70, .bss, rarezip]
- [0x5E70, .bss, inflate]
- [0x5E70, lib, libultra_rom_boot, initialize, .bss]
- [0x5E70, lib, libultra_rom_boot, kdebugserver, .bss]
- [0x5E70, lib, libultra_rom_boot, leointerrupt, .bss]
- [0x5E70, lib, libultra_rom_boot, seteventmesg, .bss]
- [0x5E70, lib, libultra_rom_boot, leodiskinit, .bss]
- [0x5E70, lib, libultra_rom_boot, pimgr, .bss]
- [0x5E70, lib, libultra_rom_boot, cartrominit, .bss]
- [0x5E70, lib, libultra_rom_boot, piacs, .bss]
- name: crc
type: bin
start: 0x5E70
@@ -187,175 +189,176 @@ segments:
- [0xF5AD30, c, sns]
- [0xF5B0B0, c, crccalc]
- [0xF5B1F0, hasm, code_1E820]
- [0xF5B290, c, audio/n_sl]
- [0xF5B320, c, audio/n_synthesizer]
- [0xF5BD00, c, audio/event]
- [0xF5BFE0, c, audio/n_synaddplayer]
- [0xF5C1B0, c, audio/n_synallocvoice]
- [0xF5C3B0, c, audio/n_synsetvol]
- [0xF5C450, c, audio/n_synstartvoice]
- [0xF5C4D0, c, audio/n_synsetpan]
- [0xF5C550, c, audio/n_synsetpitch]
- [0xF5C5D0, c, audio/n_synsetfxmix]
- [0xF5C660, c, audio/n_synstopvoice]
- [0xF5C6D0, c, audio/n_synfreevoice]
- [0xF5C770, c, audio/n_csplayer]
- [0xF5DBE0, c, audio/cspsetbank]
- [0xF5DC20, c, audio/cspstop]
- [0xF5DC50, c, audio/n_csq]
- [0xF5E2F0, c, audio/cspsetseq]
- [0xF5E330, c, audio/cspplay]
- [0xF5E360, c, audio/cspsetvol]
- [0xF5E3A0, c, audio/code_219D0]
- [0xF5E3E0, c, audio/cspsettempo]
- [0xF5E450, c, audio/code_21A80]
- [0xF5E480, c, audio/cspgettempo]
- [0xF5E4C0, c, audio/code_21AF0]
- [0xF5E520, c, audio/code_21B50]
- [0xF5E5C0, c, audio/n_syndelete]
- [0xF5E620, c, audio/n_synallocfx]
- [0xF5E680, c, audio/n_reverb]
- [0xF5F110, c, audio/n_auxbus]
- [0xF5F1C0, c, audio/n_drvrNew]
- [0xF5F720, c, audio/n_save]
- [0xF5F770, c, audio/n_envresample]
- [0xF5F810, c, audio/n_env]
- [0xF601C0, c, audio/n_seqplayer]
- [0xF61D30, c, audio/n_synstartvoiceparam]
- [0xF61E10, c, audio/n_mainbus]
- [0xF61E90, c, audio/n_load]
- [0xF62050, c, audio/n_adpcm]
- [0xF62610, c, audio/n_resample]
- [0xF627F0, c, audio/n_seq]
- [0xF62AE0, c, audio/n_synsetpriority]
- [0xF62AF0, asm, os/invaldcache]
- [0xF62B90, asm, os/writebackdcacheall]
- [0xF62BC0, c, os/initialize]
- [0xF62E50, hasm, ultra/parameters]
- [0xF62EB0, c, os/createthread]
- [0xF63000, c, gu/sinf]
- [0xF631C0, c, audio/cents2ratio]
- [0xF63210, c, audio/heapinit]
- [0xF63250, c, os/createmesgqueue]
- [0xF63280, c, io/aisetfreq]
- [0xF633E0, c, audio/sl]
- [0xF634A0, c, audio/heapalloc]
- [0xF63500, c, os/recvmesg]
- [0xF63640, c, io/aigetlen]
- [0xF63650, c, os/virtualtophysical]
- [0xF636D0, c, io/aisetnextbuf]
- [0xF63780, c, os/pidma]
- [0xF63890, c, os/stopthread]
- [0xF63950, c, os/startthread]
- [0xF63AA0, hasm, os/writebackdcache]
- [0xF63B20, hasm, invaldcache]
- [0xF63BD0, c, io/pimgr]
- [0xF63D60, c, os/destroythread]
- [0xF63E60, c, os/sendmesg]
- [0xF63FB0, c, os/settreadpri]
- [0xF64090, c, gu/mtxutil]
- [0xF64300, c, gu/sqrtf]
- [0xF64310, c, gu/cosf]
- [0xF64480, hasm, ultra/setintmask]
- [0xF64520, c, io/dpsetstat]
- [0xF64530, c, io/sptask]
- [0xF64820, c, io/dpgetstat]
- [0xF64830, c, io/vigetcurrframebuf]
- [0xF64870, c, os/stoptimer]
- [0xF64960, c, os/settimer]
- [0xF64A40, c, ll_cvt]
- [0xF64C50, c, io/sptaskyielded]
- [0xF64CD0, c, io/sptaskyield]
- [0xF64CF0, c, io/visetmode]
- [0xF64D60, c, os/seteventmesg]
- [0xF64DD0, c, io/vimgr]
- [0xF65130, c, io/visetspecial]
- [0xF652F0, c, io/viswapbuf]
- [0xF65340, c, io/visetevent]
- [0xF653B0, c, io/vigetnextframebuf]
- [0xF653F0, c, io/viblack]
- [0xF65460, c, gu/ortho]
- [0xF65620, c, gu/translate]
- [0xF656C0, c, gu/rotate]
- [0xF658B0, c, io/contreaddata]
- [0xF65B10, c, io/controller]
- [0xF65ED0, c, io/contsetch]
- [0xF65F40, c, audio/bnkf]
- [0xF66190, c, os/gettime]
- [0xF66220, c, audio/cseq]
- [0xF66CE0, c, io/motor]
- [0xF67300, c, io/pfsinit]
- [0xF673C0, hasm, invalicache]
- [0xF67440, c, io/conteeplongwrite]
- [0xF67570, c, io/conteeplongread]
- [0xF67600, c, io/piread]
- [0xF67640, c, audio/copy]
- [0xF676C0, c, audio/drvrNew]
- [0xF67AB0, c, audio/reverb]
- [0xF67E60, c, syncprintf]
- [0xF67EA0, c, audio/seq]
- [0xF69110, hasm, setsr]
- [0xF69120, hasm, getsr]
- [0xF69130, hasm, setfpccsr]
- [0xF69140, c, io/sirawread]
- [0xF69190, c, io/sirawwrite]
- [0xF691E0, hasm, ultra/exceptasm]
- [0xF69B50, c, io/pirawread]
- [0xF69BB0, c, ll]
- [0xF69E70, hasm, interrupt]
- [0xF69EB0, c, os/thread]
- [0xF69EF0, c, audio/synthesizer]
- [0xF6A5D0, c, audio/syndelete]
- [0xF6A5E0, hasm, probetlb]
- [0xF6A6A0, c, io/ai]
- [0xF6A6D0, c, os/jammesg]
- [0xF6A720, c, io/pigetcmdq]
- [0xF6A750, c, io/cartrominit]
- [0xF6A950, c, io/leodiskinit]
- [0xF6AA50, c, io/piacs]
- [0xF6AB10, c, os/getthreadpri]
- [0xF6AB30, c, io/pirawdma]
- [0xF6AC10, c, io/epirawdma]
- [0xF6AE40, c, io/devmgr]
- [0xF6B2D0, hasm, bcopy]
- [0xF6B5E0, c, io/spsetstat]
- [0xF6B5F0, c, io/spsetpc]
- [0xF6B630, c, io/sprawdma]
- [0xF6B6C0, c, io/sp]
- [0xF6B6F0, c, io/vi]
- [0xF6B830, c, os/timerintr]
- [0xF6BC30, hasm, setcompare]
- [0xF6BC40, c, io/spgetstat]
- [0xF6BC50, c, io/vigetcurrcontext]
- [0xF6BC60, c, io/viswapcontext]
- [0xF6BFC0, hasm, getcount]
- [0xF6BFD0, c, gu/normalize]
- [0xF6C060, c, io/siacs]
- [0xF6C120, c, io/sirawdma]
- [0xF6C1D0, c, io/pfsisplug]
- [0xF6C540, c, io/crc]
- [0xF6C6C0, c, io/contramwrite]
- [0xF6CA40, c, io/contramread]
- [0xF6CE80, c, io/pfsgetstatus]
- [0xF6CEE0, c, io/contpfs]
- [0xF6DC40, c, io/pfschecker]
- [0xF6E6A0, c, io/conteepwrite]
- [0xF6EBF0, c, io/conteepread]
- [0xF6EF50, c, audio/filter]
- [0xF6EF70, c, audio/env]
- [0xF6FAF0, c, audio/load]
- [0xF70640, c, audio/resample]
- [0xF70840, c, audio/auxbus]
- [0xF70940, c, audio/mainbus]
- [0xF70A90, c, audio/save]
- [0xF70B50, c, io/si]
- [0xF70B80, c, io/leointerrupt]
- [0xF71400, c, audio/synallocfx]
- [0xF715B0, c, os/resetglobalintmask]
- [0xF71610, c, io/epirawwrite]
- [0xF71660, c, io/epirawread]
- [0xF716B0, c, os/setglobalintmask]
- [0xF71700, c, os/yieldthread]
- [0xF5B290, c, n_audio/n_sl]
- [0xF5B320, c, n_audio/n_synthesizer]
- [0xF5BD00, lib, libultra_rom, event, .text]
- [0xF5BFE0, c, n_audio/n_synaddplayer]
- [0xF5C1B0, c, n_audio/n_synallocvoice]
- [0xF5C3B0, c, n_audio/n_synsetvol]
- [0xF5C450, c, n_audio/n_synstartvoice]
- [0xF5C4D0, c, n_audio/n_synsetpan]
- [0xF5C550, c, n_audio/n_synsetpitch]
- [0xF5C5D0, c, n_audio/n_synsetfxmix]
- [0xF5C660, c, n_audio/n_synstopvoice]
- [0xF5C6D0, c, n_audio/n_synfreevoice]
- [0xF5C770, c, n_audio/n_csplayer]
- [0xF5DBE0, lib, libultra_rom, cspsetbank, .text]
- [0xF5DC20, lib, libultra_rom, cspstop, .text]
- [0xF5DC50, c, n_audio/n_csq]
- [0xF5E2F0, lib, libultra_rom, cspsetseq, .text]
- [0xF5E330, lib, libultra_rom, cspplay, .text]
- [0xF5E360, lib, libultra_rom, cspsetvol, .text]
- [0xF5E3A0, c, ultra/audio/code_219D0]
- [0xF5E3E0, lib, libultra_rom, cspsettempo, .text]
- [0xF5E450, c, n_audio/code_21A80]
- [0xF5E480, lib, libultra_rom, cspgettempo, .text]
- [0xF5E4C0, c, ultra/audio/code_21AF0]
- [0xF5E520, c, n_audio/code_21B50]
- [0xF5E5C0, c, n_audio/n_syndelete]
- [0xF5E620, c, n_audio/n_synallocfx]
- [0xF5E680, c, n_audio/n_reverb]
- [0xF5F110, c, n_audio/n_auxbus]
- [0xF5F1C0, c, n_audio/n_drvrNew]
- [0xF5F720, c, n_audio/n_save]
- [0xF5F770, c, n_audio/n_envresample]
- [0xF5F810, c, n_audio/n_env]
- [0xF601C0, c, n_audio/n_seqplayer]
- [0xF61D30, c, n_audio/n_synstartvoiceparam]
- [0xF61E10, c, n_audio/n_mainbus]
- [0xF61E90, c, n_audio/n_load]
- [0xF62050, c, n_audio/n_adpcm]
- [0xF62610, c, n_audio/n_resample]
- [0xF627F0, c, n_audio/n_seq]
- [0xF62AE0, c, n_audio/n_synsetpriority]
- [0xF62AF0, lib, libultra_rom, bzero, .text]
- [0xF62B90, lib, libultra_rom, writebackdcacheall, .text]
- [0xF62BC0, lib, libultra_rom, initialize, .text]
- [0xF62E50, lib, libultra_rom, parameters, .text]
- [0xF62EB0, lib, libultra_rom, createthread, .text]
- [0xF63000, lib, libultra_rom, sinf, .text]
- [0xF631C0, lib, libultra_rom, cents2ratio, .text]
- [0xF63210, lib, libultra_rom, heapinit, .text]
- [0xF63250, lib, libultra_rom, createmesgqueue, .text]
- [0xF63280, lib, libultra_rom, aisetfreq, .text]
- [0xF633E0, lib, libultra_rom, sl, .text]
- [0xF634A0, lib, libultra_rom, heapalloc, .text]
- [0xF63500, lib, libultra_rom, recvmesg, .text]
- [0xF63640, lib, libultra_rom, aigetlen, .text]
- [0xF63650, lib, libultra_rom, virtualtophysical, .text]
- [0xF636D0, lib, libultra_rom, aisetnextbuf, .text]
- [0xF63780, lib, libultra_rom, pidma, .text]
- [0xF63890, lib, libultra_rom, stopthread, .text]
- [0xF63950, lib, libultra_rom, startthread, .text]
- [0xF63AA0, lib, libultra_rom, writebackdcache, .text]
- [0xF63B20, lib, libultra_rom, invaldcache, .text]
- [0xF63BD0, lib, libultra_rom, pimgr, .text]
- [0xF63D60, lib, libultra_rom, destroythread, .text]
- [0xF63E60, lib, libultra_rom, sendmesg, .text]
- [0xF63FB0, lib, libultra_rom, setthreadpri, .text]
- [0xF64090, lib, libultra_rom, mtxutil, .text]
- [0xF64300, lib, libultra_rom, sqrtf, .text]
- [0xF64310, lib, libultra_rom, cosf, .text]
- [0xF64480, lib, libultra_rom, setintmask, .text]
- [0xF64520, lib, libultra_rom, dpsetstat, .text]
- [0xF64530, lib, libultra_rom, sptask, .text]
- [0xF64820, lib, libultra_rom, dpgetstat, .text]
- [0xF64830, lib, libultra_rom, vigetcurrframebuf, .text]
- [0xF64870, lib, libultra_rom, stoptimer, .text]
- [0xF64960, lib, libultra_rom, settimer, .text]
- [0xF64A40, lib, libultra_rom, llcvt, .text]
- [0xF64C50, lib, libultra_rom, sptaskyielded, .text]
- [0xF64CD0, lib, libultra_rom, sptaskyield, .text]
- [0xF64CF0, lib, libultra_rom, visetmode, .text]
- [0xF64D60, lib, libultra_rom, seteventmesg, .text]
- [0xF64DD0, lib, libultra_rom, vimgr, .text]
- [0xF65130, lib, libultra_rom, visetspecial, .text]
- [0xF652F0, lib, libultra_rom, viswapbuf, .text]
- [0xF65340, lib, libultra_rom, visetevent, .text]
- [0xF653B0, lib, libultra_rom, vigetnextframebuf, .text]
- [0xF653F0, lib, libultra_rom, viblack, .text]
- [0xF65460, lib, libultra_rom, ortho, .text]
- [0xF65620, lib, libultra_rom, translate, .text]
- [0xF656C0, lib, libultra_rom, rotate, .text]
- [0xF658B0, lib, libultra_rom, contreaddata, .text]
- [0xF65B10, lib, libultra_rom, controller, .text]
- [0xF65ED0, lib, libultra_rom, contsetch, .text]
- [0xF65F40, lib, libultra_rom, bnkf, .text]
- [0xF66190, lib, libultra_rom, gettime, .text]
- [0xF66220, lib, libultra_rom, cseq, .text]
- [0xF66CE0, lib, libultra_rom, motor, .text]
- [0xF67300, lib, libultra_rom, pfsinit, .text]
- [0xF673C0, lib, libultra_rom, invalicache, .text]
- [0xF67440, lib, libultra_rom, conteeplongwrite, .text]
- [0xF67570, lib, libultra_rom, conteeplongread, .text]
- [0xF67600, lib, libultra_rom, piread, .text]
- [0xF67640, lib, libultra_rom, copy, .text]
- [0xF676C0, lib, libultra_rom, drvrnew, .text]
- [0xF67AB0, lib, libultra_rom, reverb, .text]
- [0xF67E60, lib, libultra_rom, syncprintf, .text]
- [0xF67EA0, lib, libultra_rom, seq, .text]
- [0xF69110, lib, libultra_rom, setsr, .text]
- [0xF69120, lib, libultra_rom, getsr, .text]
- [0xF69130, lib, libultra_rom, setfpccsr, .text]
- [0xF69140, lib, libultra_rom, sirawread, .text]
- [0xF69190, lib, libultra_rom, sirawwrite, .text]
- [0xF691E0, lib, libultra_rom, exceptasm, .text]
- [0xF69AF0, lib, libultra_rom, maptlbrdb, .text]
- [0xF69B50, lib, libultra_rom, pirawread, .text]
- [0xF69BB0, lib, libultra_rom, ll, .text]
- [0xF69E70, lib, libultra_rom, interrupt, .text]
- [0xF69EB0, lib, libultra_rom, thread, .text]
- [0xF69EF0, lib, libultra_rom, synthesizer, .text]
- [0xF6A5D0, lib, libultra_rom, syndelete, .text]
- [0xF6A5E0, lib, libultra_rom, probetlb, .text]
- [0xF6A6A0, lib, libultra_rom, ai, .text]
- [0xF6A6D0, lib, libultra_rom, jammesg, .text]
- [0xF6A720, lib, libultra_rom, pigetcmdq, .text]
- [0xF6A750, lib, libultra_rom, cartrominit, .text]
- [0xF6A950, lib, libultra_rom, leodiskinit, .text]
- [0xF6AA50, lib, libultra_rom, piacs, .text]
- [0xF6AB10, lib, libultra_rom, getthreadpri, .text]
- [0xF6AB30, lib, libultra_rom, pirawdma, .text]
- [0xF6AC10, lib, libultra_rom, epirawdma, .text]
- [0xF6AE40, lib, libultra_rom, devmgr, .text]
- [0xF6B2D0, lib, libultra_rom, bcopy, .text]
- [0xF6B5E0, lib, libultra_rom, spsetstat, .text]
- [0xF6B5F0, lib, libultra_rom, spsetpc, .text]
- [0xF6B630, lib, libultra_rom, sprawdma, .text]
- [0xF6B6C0, lib, libultra_rom, sp, .text]
- [0xF6B6F0, lib, libultra_rom, vi, .text]
- [0xF6B830, lib, libultra_rom, timerintr, .text]
- [0xF6BC30, lib, libultra_rom, setcompare, .text]
- [0xF6BC40, lib, libultra_rom, spgetstat, .text]
- [0xF6BC50, lib, libultra_rom, vigetcurrcontext, .text]
- [0xF6BC60, lib, libultra_rom, viswapcontext, .text]
- [0xF6BFC0, lib, libultra_rom, getcount, .text]
- [0xF6BFD0, lib, libultra_rom, normalize, .text]
- [0xF6C060, lib, libultra_rom, siacs, .text]
- [0xF6C120, lib, libultra_rom, sirawdma, .text]
- [0xF6C1D0, lib, libultra_rom, pfsisplug, .text]
- [0xF6C540, lib, libultra_rom, crc, .text]
- [0xF6C6C0, lib, libultra_rom, contramwrite, .text]
- [0xF6CA40, lib, libultra_rom, contramread, .text]
- [0xF6CE80, lib, libultra_rom, pfsgetstatus, .text]
- [0xF6CEE0, lib, libultra_rom, contpfs, .text]
- [0xF6DC40, lib, libultra_rom, pfschecker, .text]
- [0xF6E6A0, lib, libultra_rom, conteepwrite, .text]
- [0xF6EBF0, lib, libultra_rom, conteepread, .text]
- [0xF6EF50, lib, libultra_rom, filter, .text]
- [0xF6EF70, lib, libultra_rom, env, .text]
- [0xF6FAF0, lib, libultra_rom, load, .text]
- [0xF70640, lib, libultra_rom, resample, .text]
- [0xF70840, lib, libultra_rom, auxbus, .text]
- [0xF70940, lib, libultra_rom, mainbus, .text]
- [0xF70A90, lib, libultra_rom, save, .text]
- [0xF70B50, lib, libultra_rom, si, .text]
- [0xF70B80, lib, libultra_rom, leointerrupt, .text]
- [0xF71400, lib, libultra_rom, synallocfx, .text]
- [0xF715B0, lib, libultra_rom, resetglobalintmask, .text]
- [0xF71610, lib, libultra_rom, epirawwrite, .text]
- [0xF71660, lib, libultra_rom, epirawread, .text]
- [0xF716B0, lib, libultra_rom, setglobalintmask, .text]
- [0xF71700, lib, libultra_rom, yieldthread, .text]
- [0xF71750, textbin, pal/n_aspMain]
- [0xF723B0, textbin, pal/gSPF3DEX_fifo]
- [0xF737E0, textbin, pal/gSPL3DEX_fifo]
@@ -388,26 +391,26 @@ segments:
- [0xF75EF0, .data, code_1D5D0]
- [0xF75F10, .data, sns]
- [0xF75F20, .data, data_1E820]
- [0xF75F30, .data, audio/n_sl]
- [0xF75F40, .data, audio/n_drvrNew]
- [0xF760D0, .data, audio/n_env]
- [0xF761D0, .data, os/initialize]
- [0xF761F0, .data, audio/sl]
- [0xF76200, .data, io/aisetnextbuf]
- [0xF76210, .data, io/pimgr]
- [0xF76240, .data, io/vimgr]
- [0xF76260, .data, io/controller]
- [0xF76270, .data, audio/drvrNew]
- [0xF76400, .data, ultra/exceptasm]
- [0xF76420, .data, os/thread]
- [0xF76440, .data, io/piacs]
- [0xF76450, .data, io/vi]
- [0xF764C0, .data, os/timerintr]
- [0xF764D0, .data, io/siacs]
- [0xF764E0, .data, audio/env]
- [0xF765E0, .data, io/vimodepallan1]
- [0xF76630, .data, io/vimodempallan1]
- [0xF76680, .data, io/vimodentsclan1]
- [0xF75F30, .data, n_audio/n_sl]
- [0xF75F40, .data, n_audio/n_drvrNew]
- [0xF760D0, .data, n_audio/n_env]
- [0xF761D0, lib, libultra_rom, initialize, .data]
- [0xF761F0, lib, libultra_rom, sl, .data]
- [0xF76200, lib, libultra_rom, aisetnextbuf, .data]
- [0xF76210, lib, libultra_rom, pimgr, .data]
- [0xF76240, lib, libultra_rom, vimgr, .data]
- [0xF76260, lib, libultra_rom, controller, .data]
- [0xF76270, lib, libultra_rom, drvrnew, .data]
- [0xF76400, lib, libultra_rom, exceptasm, .data]
- [0xF76420, lib, libultra_rom, thread, .data]
- [0xF76440, lib, libultra_rom, piacs, .data]
- [0xF76450, lib, libultra_rom, vi, .data]
- [0xF764C0, lib, libultra_rom, timerintr, .data]
- [0xF764D0, lib, libultra_rom, siacs, .data]
- [0xF764E0, lib, libultra_rom, env, .data]
- [0xF765E0, lib, libultra_rom, vimodepallan1, .data]
- [0xF76630, lib, libultra_rom, vimodempallan1, .data]
- [0xF76680, lib, libultra_rom, vimodentsclan1, .data]
- [0xF766D0, .rodata, code_1D00]
- [0xF766F0, .rodata, code_3250]
- [0xF76700, .rodata, stub_3A70]
@@ -424,30 +427,29 @@ segments:
- [0xF772D0, .rodata, ml]
- [0xF773D0, .rodata, musicplayer]
- [0xF77400, .rodata, code_1D5D0]
- [0xF77460, .rodata, audio/n_synthesizer]
- [0xF77470, .rodata, audio/n_csplayer]
- [0xF777E0, .rodata, audio/n_reverb]
- [0xF77810, .rodata, audio/n_drvrNew]
- [0xF77830, .rodata, audio/n_env]
- [0xF77880, .rodata, audio/n_seqplayer]
- [0xF77C30, .rodata, audio/n_resample]
- [0xF77C40, .rodata, gu/sinf]
- [0xF77C90, .rodata, audio/cents2ratio]
- [0xF77CA0, .rodata, gu/cosf]
- [0xF77CF0, .rodata, ultra/setintmask]
- [0xF77D70, .rodata, ll_cvt]
- [0xF77D80, .rodata, gu/rotate]
- [0xF77D90, .rodata, audio/cseq]
- [0xF77DA0, .rodata, audio/drvrNew]
- [0xF77DC0, .rodata, audio/reverb]
- [0xF77DF0, .rodata, audio/seq]
- [0xF77E00, .rodata, ultra/exceptasm]
- [0xF77E50, hasm, ultra/libm_vals] # Nothing in this file, just here so splat sees it's ASM
- [0xF77E50, .rodata, ultra/libm_vals]
- [0xF77E60, .rodata, audio/synthesizer]
- [0xF77E70, .rodata, io/devmgr]
- [0xF77E90, .rodata, audio/env]
- [0xF77EE0, .rodata, audio/resample]
- [0xF77460, .rodata, n_audio/n_synthesizer]
- [0xF77470, .rodata, n_audio/n_csplayer]
- [0xF777E0, .rodata, n_audio/n_reverb]
- [0xF77810, .rodata, n_audio/n_drvrNew]
- [0xF77830, .rodata, n_audio/n_env]
- [0xF77880, .rodata, n_audio/n_seqplayer]
- [0xF77C30, .rodata, n_audio/n_resample]
- [0xF77C40, lib, libultra_rom, sinf, .rodata]
- [0xF77C90, lib, libultra_rom, cents2ratio, .rodata]
- [0xF77CA0, lib, libultra_rom, cosf, .rodata]
- [0xF77CF0, lib, libultra_rom, setintmask, .rodata]
- [0xF77D70, lib, libultra_rom, llcvt, .rodata]
- [0xF77D80, lib, libultra_rom, rotate, .rodata]
- [0xF77D90, lib, libultra_rom, cseq, .rodata]
- [0xF77DA0, lib, libultra_rom, drvrnew, .rodata]
- [0xF77DC0, lib, libultra_rom, reverb, .rodata]
- [0xF77DF0, lib, libultra_rom, seq, .rodata]
- [0xF77E00, lib, libultra_rom, exceptasm, .rodata]
- [0xF77E50, lib, libultra_rom, libm_vals, .rodata]
- [0xF77E60, lib, libultra_rom, synthesizer, .rodata]
- [0xF77E70, lib, libultra_rom, devmgr, .rodata]
- [0xF77E90, lib, libultra_rom, env, .rodata]
- [0xF77EE0, lib, libultra_rom, resample, .rodata]
- [0xF77F20, rodatabin, pal/n_aspMain]
- [0xF781D0, rodatabin, pal/gSPF3DEX_fifo]
- [0xF789D0, rodatabin, pal/gSPL3DEX_fifo]
@@ -478,23 +480,23 @@ segments:
- [0xF791D0, .bss, ucode]
- [0xF791D0, .bss, code_1D5D0]
- [0xF791D0, .bss, sns]
- [0xF791D0, .bss, os/initialize]
- [0xF791D0, .bss, io/pimgr]
- [0xF791D0, .bss, io/sptask]
- [0xF791D0, .bss, os/seteventmesg]
- [0xF791D0, .bss, io/vimgr]
- [0xF791D0, .bss, gu/rotate]
- [0xF791D0, .bss, io/controller]
- [0xF791D0, .bss, io/motor]
- [0xF791D0, .bss, io/cartrominit]
- [0xF791D0, .bss, io/leodiskinit]
- [0xF791D0, .bss, io/piacs]
- [0xF791D0, .bss, os/timerintr]
- [0xF791D0, .bss, io/siacs]
- [0xF791D0, .bss, io/pfsisplug]
- [0xF791D0, .bss, io/conteepread]
- [0xF791D0, .bss, os/kdebugserver]
- [0xF791D0, .bss, io/leointerrupt]
- [0xF791D0, lib, libultra_rom, initialize, .bss]
- [0xF791D0, lib, libultra_rom, pimgr, .bss]
- [0xF791D0, lib, libultra_rom, sptask, .bss]
- [0xF791D0, lib, libultra_rom, seteventmesg, .bss]
- [0xF791D0, lib, libultra_rom, vimgr, .bss]
- [0xF791D0, lib, libultra_rom, rotate, .bss]
- [0xF791D0, lib, libultra_rom, controller, .bss]
- [0xF791D0, lib, libultra_rom, motor, .bss]
- [0xF791D0, lib, libultra_rom, cartrominit, .bss]
- [0xF791D0, lib, libultra_rom, leodiskinit, .bss]
- [0xF791D0, lib, libultra_rom, piacs, .bss]
- [0xF791D0, lib, libultra_rom, timerintr, .bss]
- [0xF791D0, lib, libultra_rom, siacs, .bss]
- [0xF791D0, lib, libultra_rom, pfsisplug, .bss]
- [0xF791D0, lib, libultra_rom, conteepread, .bss]
- [0xF791D0, lib, libultra_rom, kdebugserver, .bss]
- [0xF791D0, lib, libultra_rom, leointerrupt, .bss]
- name: core2
dir: core2
type: code
@@ -826,7 +828,7 @@ segments:
# - [0x100D480, c, coords] #DONE
# - [0x100D8A0, c, code_B7F40] #DONE
# - [0x100D980, c, code_B8020] #DONE
# - [0x100D9D0, c, code_B8070] #DONE
# - [0x100D9D0, c, ultra/debug/assert] #DONE
# - [0x100D9E0, c, code_B8080] #DONE
# - [0x100E1C0, c, code_B8860] #DONE
# - [0x100E9F0, c, code_B9090] #DONE
+299 -297
View File
@@ -16,6 +16,7 @@ options:
target_path: decompressed.us.v10.z64
asset_path: bin
build_path: build/us.v10
lib_path: build/us.v10
libultra_symbols: True
hardware_regs: True
ld_sections_allowlist:
@@ -41,78 +42,79 @@ segments:
subsegments:
- [0x1000, hasm, entry]
- name: boot/bk_boot
dir: boot
type: code
start: 0x1050
vram: 0x80000450
subsegments:
- [0x1050, c, done/bk_boot_1050]
- [0x1150, c, done/rarezip]
- [0x12B0, c, done/inflate]
- [0x27F0, c, done/overlays]
- [0x2970, c, done/initialize]
- [0x2C00, c, done/pirawdma]
- [0x2CE0, c, done/pigetstat]
- [0x2CF0, hasm, bzero]
- [0x2D90, hasm, setsr]
- [0x2DA0, hasm, getsr]
- [0x2DB0, hasm, setfpccsr]
- [0x2DC0, c, done/sirawread]
- [0x2E10, c, done/sirawwrite]
- [0x2E60, hasm, ultra/exceptasm]
- [0x3770, hasm, writebackdcache]
- [0x37F0, hasm, invalicache]
- [0x3870, hasm, maptlbrdb]
- [0x38D0, c, done/pirawread]
- [0x3930, c, done/ll]
- [0x3BF0, hasm, ultra/parameters]
- [0x3C50, c, done/virtualtophysical]
- [0x3CD0, c, done/si]
- [0x3D00, c, done/thread]
- [0x3D40, c, done/leointerrupt]
- [0x45C0, c, done/seteventmesg]
- [0x4630, hasm, ultra/setintmask]
- [0x46D0, c, done/destroythread]
- [0x47D0, hasm, probetlb]
- [0x4890, c, done/leodiskinit]
- [0x4990, c, done/epirawdma]
- [0x4BC0, hasm, interrupt]
- [0x4C00, c, done/pimgr]
- [0x4D90, c, done/cartrominit]
- [0x4E90, c, done/createmesgqueue]
- [0x4EC0, c, done/piacs]
- [0x4F80, c, done/getthreadpri]
- [0x4FA0, c, done/setthreadpri]
- [0x5080, c, done/createthread]
- [0x51D0, c, done/devmgr]
- [0x5660, c, done/startthread]
- [0x57B0, c, done/sendmesg]
- [0x5900, c, done/recvmesg]
- [0x5A40, c, done/resetglobalintmask]
- [0x5AA0, c, done/epirawwrite]
- [0x5AF0, c, done/epirawread]
- [0x5B40, c, done/setglobalintmask]
- [0x5B90, c, done/yieldthread]
- [0x5BE0, c, done/kdebugserver]
- [0x5BE0, .data, done/inflate]
- [0x5CE0, .data, done/initialize]
- [0x5D00, .data, ultra/exceptasm]
- [0x5D20, .data, done/thread]
- [0x5D40, .data, done/pimgr]
- [0x5D70, .data, done/piacs]
- [0x5D80, .rodata, ultra/exceptasm]
- [0x5DD0, .rodata, ultra/setintmask]
- [0x5E50, .rodata, done/devmgr]
- [0x5E70, .bss, done/bk_boot_1050]
- [0x5E70, .bss, done/rarezip]
- [0x5E70, .bss, done/inflate]
- [0x5E70, .bss, done/initialize]
- [0x5E70, .bss, done/kdebugserver]
- [0x5E70, .bss, done/leointerrupt]
- [0x5E70, .bss, done/seteventmesg]
- [0x5E70, .bss, done/leodiskinit]
- [0x5E70, .bss, done/pimgr]
- [0x5E70, .bss, done/cartrominit]
- [0x5E70, .bss, done/piacs]
- [0x1050, c, bk_boot_1050]
- [0x1150, c, rarezip]
- [0x12B0, c, inflate]
- [0x27F0, c, overlays]
- [0x2970, lib, libultra_rom_boot, initialize, .text]
- [0x2C00, lib, libultra_rom_boot, pirawdma, .text]
- [0x2CE0, lib, libultra_rom_boot, pigetstat, .text]
- [0x2CF0, lib, libultra_rom_boot, bzero, .text]
- [0x2D90, lib, libultra_rom_boot, setsr, .text]
- [0x2DA0, lib, libultra_rom_boot, getsr, .text]
- [0x2DB0, lib, libultra_rom_boot, setfpccsr, .text]
- [0x2DC0, lib, libultra_rom_boot, sirawread, .text]
- [0x2E10, lib, libultra_rom_boot, sirawwrite, .text]
- [0x2E60, lib, libultra_rom_boot, exceptasm, .text]
- [0x3770, lib, libultra_rom_boot, writebackdcache, .text]
- [0x37F0, lib, libultra_rom_boot, invalicache, .text]
- [0x3870, lib, libultra_rom_boot, maptlbrdb, .text]
- [0x38D0, lib, libultra_rom_boot, pirawread, .text]
- [0x3930, lib, libultra_rom_boot, ll, .text]
- [0x3BF0, lib, libultra_rom_boot, parameters, .text]
- [0x3C50, lib, libultra_rom_boot, virtualtophysical, .text]
- [0x3CD0, lib, libultra_rom_boot, si, .text]
- [0x3D00, lib, libultra_rom_boot, thread, .text]
- [0x3D40, lib, libultra_rom_boot, leointerrupt, .text]
- [0x45C0, lib, libultra_rom_boot, seteventmesg, .text]
- [0x4630, lib, libultra_rom_boot, setintmask, .text]
- [0x46D0, lib, libultra_rom_boot, destroythread, .text]
- [0x47D0, lib, libultra_rom_boot, probetlb, .text]
- [0x4890, lib, libultra_rom_boot, leodiskinit, .text]
- [0x4990, lib, libultra_rom_boot, epirawdma, .text]
- [0x4BC0, lib, libultra_rom_boot, interrupt, .text]
- [0x4C00, lib, libultra_rom_boot, pimgr, .text]
- [0x4D90, lib, libultra_rom_boot, cartrominit, .text]
- [0x4E90, lib, libultra_rom_boot, createmesgqueue, .text]
- [0x4EC0, lib, libultra_rom_boot, piacs, .text]
- [0x4F80, lib, libultra_rom_boot, getthreadpri, .text]
- [0x4FA0, lib, libultra_rom_boot, setthreadpri, .text]
- [0x5080, lib, libultra_rom_boot, createthread, .text]
- [0x51D0, lib, libultra_rom_boot, devmgr, .text]
- [0x5660, lib, libultra_rom_boot, startthread, .text]
- [0x57B0, lib, libultra_rom_boot, sendmesg, .text]
- [0x5900, lib, libultra_rom_boot, recvmesg, .text]
- [0x5A40, lib, libultra_rom_boot, resetglobalintmask, .text]
- [0x5AA0, lib, libultra_rom_boot, epirawwrite, .text]
- [0x5AF0, lib, libultra_rom_boot, epirawread, .text]
- [0x5B40, lib, libultra_rom_boot, setglobalintmask, .text]
- [0x5B90, lib, libultra_rom_boot, yieldthread, .text]
- [0x5BE0, lib, libultra_rom_boot, kdebugserver, .text]
- [0x5BE0, .data, inflate]
- [0x5CE0, lib, libultra_rom_boot, initialize, .data]
- [0x5D00, lib, libultra_rom_boot, exceptasm, .data]
- [0x5D20, lib, libultra_rom_boot, thread, .data]
- [0x5D40, lib, libultra_rom_boot, pimgr, .data]
- [0x5D70, lib, libultra_rom_boot, piacs, .data]
- [0x5D80, lib, libultra_rom_boot, exceptasm, .rodata]
- [0x5DD0, lib, libultra_rom_boot, setintmask, .rodata]
- [0x5E50, lib, libultra_rom_boot, devmgr, .rodata]
- [0x5E70, .bss, bk_boot_1050]
- [0x5E70, .bss, rarezip]
- [0x5E70, .bss, inflate]
- [0x5E70, lib, libultra_rom_boot, initialize, .bss]
- [0x5E70, lib, libultra_rom_boot, kdebugserver, .bss]
- [0x5E70, lib, libultra_rom_boot, leointerrupt, .bss]
- [0x5E70, lib, libultra_rom_boot, seteventmesg, .bss]
- [0x5E70, lib, libultra_rom_boot, leodiskinit, .bss]
- [0x5E70, lib, libultra_rom_boot, pimgr, .bss]
- [0x5E70, lib, libultra_rom_boot, cartrominit, .bss]
- [0x5E70, lib, libultra_rom_boot, piacs, .bss]
- name: crc
type: bin
start: 0x5E70
@@ -188,174 +190,175 @@ segments:
- [0xF375B0, c, sns]
- [0xF37930, c, crccalc]
- [0xF37A70, hasm, code_1E820]
- [0xF37B10, c, audio/n_sl]
- [0xF37BA0, c, audio/n_synthesizer]
- [0xF38580, c, audio/event]
- [0xF38860, c, audio/n_synaddplayer]
- [0xF38A30, c, audio/n_synallocvoice]
- [0xF38C30, c, audio/n_synsetvol]
- [0xF38CD0, c, audio/n_synstartvoice]
- [0xF38D50, c, audio/n_synsetpan]
- [0xF38DD0, c, audio/n_synsetpitch]
- [0xF38E50, c, audio/n_synsetfxmix]
- [0xF38EE0, c, audio/n_synstopvoice]
- [0xF38F50, c, audio/n_synfreevoice]
- [0xF38FF0, c, audio/n_csplayer]
- [0xF3A460, c, audio/cspsetbank]
- [0xF3A4A0, c, audio/cspstop]
- [0xF3A4D0, c, audio/n_csq]
- [0xF3AB70, c, audio/cspsetseq]
- [0xF3ABB0, c, audio/cspplay]
- [0xF3ABE0, c, audio/cspsetvol]
- [0xF3AC20, c, audio/code_219D0]
- [0xF3AC60, c, audio/cspsettempo]
- [0xF3ACD0, c, audio/code_21A80]
- [0xF3AD00, c, audio/cspgettempo]
- [0xF3AD40, c, audio/code_21AF0]
- [0xF3ADA0, c, audio/code_21B50]
- [0xF3AE40, c, audio/n_syndelete]
- [0xF3AEA0, c, audio/n_synallocfx]
- [0xF3AF00, c, audio/n_reverb]
- [0xF3B990, c, audio/n_auxbus]
- [0xF3BA40, c, audio/n_drvrNew]
- [0xF3BFA0, c, audio/n_save]
- [0xF3BFF0, c, audio/n_envresample]
- [0xF3C090, c, audio/n_env]
- [0xF3CA40, c, audio/n_seqplayer]
- [0xF3E5B0, c, audio/n_synstartvoiceparam]
- [0xF3E690, c, audio/n_mainbus]
- [0xF3E710, c, audio/n_load]
- [0xF3E8D0, c, audio/n_adpcm]
- [0xF3EE90, c, audio/n_resample]
- [0xF3F070, c, audio/n_seq]
- [0xF3F360, c, audio/n_synsetpriority]
- [0xF3F370, asm, os/invaldcache]
- [0xF3F410, asm, os/writebackdcacheall]
- [0xF3F440, c, os/initialize]
- [0xF3F6D0, c, os/createthread]
- [0xF3F820, c, gu/sinf]
- [0xF3F9E0, c, audio/cents2ratio]
- [0xF3FA30, c, audio/heapinit]
- [0xF3FA70, hasm, ultra/parameters]
- [0xF3FAD0, c, os/createmesgqueue]
- [0xF3FB00, c, io/aisetfreq]
- [0xF3FC60, c, audio/sl]
- [0xF3FD20, c, audio/heapalloc]
- [0xF3FD80, c, os/recvmesg]
- [0xF3FEC0, c, io/aigetlen]
- [0xF3FED0, c, os/virtualtophysical]
- [0xF3FF50, c, io/aisetnextbuf]
- [0xF40000, c, os/pidma]
- [0xF40110, c, os/stopthread]
- [0xF401D0, c, os/startthread]
- [0xF40320, hasm, os/writebackdcache]
- [0xF403A0, hasm, invaldcache]
- [0xF40450, c, io/pimgr]
- [0xF405E0, c, os/destroythread]
- [0xF406E0, c, os/sendmesg]
- [0xF40830, c, os/settreadpri]
- [0xF40910, c, gu/mtxutil]
- [0xF40B80, c, gu/sqrtf]
- [0xF40B90, c, gu/cosf]
- [0xF40D00, hasm, ultra/setintmask]
- [0xF40DA0, c, io/dpsetstat]
- [0xF40DB0, c, io/sptask]
- [0xF410A0, c, io/dpgetstat]
- [0xF410A0, c, io/vigetcurrframebuf]
- [0xF410F0, c, os/stoptimer]
- [0xF411E0, c, os/settimer]
- [0xF412C0, c, ll]
- [0xF41580, c, io/sptaskyielded]
- [0xF41600, c, io/sptaskyield]
- [0xF41620, c, io/visetmode]
- [0xF41690, c, os/seteventmesg]
- [0xF41700, c, io/vimgr]
- [0xF41A60, c, io/visetspecial]
- [0xF41C20, c, io/viswapbuf]
- [0xF41C70, c, io/visetevent]
- [0xF41CE0, c, io/vigetnextframebuf]
- [0xF41D20, c, io/viblack]
- [0xF41D90, c, gu/ortho]
- [0xF41F50, c, gu/translate]
- [0xF41FF0, c, gu/rotate]
- [0xF421E0, c, io/contreaddata]
- [0xF42440, c, io/controller]
- [0xF42800, c, io/contsetch]
- [0xF42870, c, audio/bnkf]
- [0xF42AC0, c, os/gettime]
- [0xF42B50, c, audio/cseq]
- [0xF43610, c, io/motor]
- [0xF43C30, c, io/pfsinit]
- [0xF43CF0, hasm, invalicache]
- [0xF43D70, c, io/conteeplongwrite]
- [0xF43EA0, c, io/conteeplongread]
- [0xF43F30, c, io/piread]
- [0xF43F70, c, audio/copy]
- [0xF43FF0, c, audio/drvrNew]
- [0xF44790, c, audio/reverb]
- [0xF453E0, c, syncprintf]
- [0xF45420, c, audio/seq]
- [0xF45A40, hasm, setsr]
- [0xF45A50, hasm, getsr]
- [0xF45A60, hasm, setfpccsr]
- [0xF45A70, c, io/sirawread]
- [0xF45AC0, c, io/sirawwrite]
- [0xF45B10, hasm, ultra/exceptasm]
- [0xF46480, c, io/pirawread]
- [0xF464E0, hasm, interrupt]
- [0xF46520, c, os/thread]
- [0xF46560, c, audio/synthesizer]
- [0xF46C40, c, audio/syndelete]
- [0xF46C50, hasm, probetlb]
- [0xF46D10, c, io/ai]
- [0xF46D40, c, os/jammesg]
- [0xF46E90, c, io/pigetcmdq]
- [0xF46EC0, c, io/cartrominit]
- [0xF46FC0, c, io/leodiskinit]
- [0xF470C0, c, io/piacs]
- [0xF47180, c, os/getthreadpri]
- [0xF471A0, c, io/pirawdma]
- [0xF47280, c, io/epirawdma]
- [0xF474B0, c, io/devmgr]
- [0xF47940, hasm, bcopy]
- [0xF47C50, c, io/spsetstat]
- [0xF47C60, c, io/spsetpc]
- [0xF47CA0, c, io/sprawdma]
- [0xF47D30, c, io/sp]
- [0xF47D60, c, io/vi]
- [0xF47EA0, c, os/timerintr]
- [0xF482A0, hasm, setcompare]
- [0xF482B0, c, io/spgetstat]
- [0xF482C0, c, io/vigetcurrcontext]
- [0xF482D0, c, io/viswapcontext]
- [0xF48630, hasm, getcount]
- [0xF48640, c, gu/normalize]
- [0xF486D0, c, io/siacs]
- [0xF48790, c, io/sirawdma]
- [0xF48840, c, io/pfsisplug]
- [0xF48BB0, c, io/crc]
- [0xF48D30, c, io/contramwrite]
- [0xF490B0, c, io/contramread]
- [0xF49440, c, io/pfsgetstatus]
- [0xF49550, c, io/contpfs]
- [0xF4A2B0, c, io/pfschecker]
- [0xF4AD10, c, io/conteepwrite]
- [0xF4B260, c, io/conteepread]
- [0xF4B5C0, c, audio/filter]
- [0xF4B5E0, c, audio/env]
- [0xF4C160, c, audio/load]
- [0xF4CCB0, c, audio/resample]
- [0xF4CFB0, c, audio/auxbus]
- [0xF4D0C0, c, audio/mainbus]
- [0xF4D210, c, audio/save]
- [0xF4D2D0, c, io/si]
- [0xF4D300, c, io/leointerrupt]
- [0xF4DB80, c, audio/synallocfx]
- [0xF4DC20, c, os/resetglobalintmask]
- [0xF4DC80, c, io/epirawwrite]
- [0xF4DCD0, c, io/epirawread]
- [0xF4DD20, c, os/setglobalintmask]
- [0xF4DD70, c, os/yieldthread]
- [0xF37B10, c, n_audio/n_sl]
- [0xF37BA0, c, n_audio/n_synthesizer]
- [0xF38580, lib, libultra_rom, event, .text]
- [0xF38860, c, n_audio/n_synaddplayer]
- [0xF38A30, c, n_audio/n_synallocvoice]
- [0xF38C30, c, n_audio/n_synsetvol]
- [0xF38CD0, c, n_audio/n_synstartvoice]
- [0xF38D50, c, n_audio/n_synsetpan]
- [0xF38DD0, c, n_audio/n_synsetpitch]
- [0xF38E50, c, n_audio/n_synsetfxmix]
- [0xF38EE0, c, n_audio/n_synstopvoice]
- [0xF38F50, c, n_audio/n_synfreevoice]
- [0xF38FF0, c, n_audio/n_csplayer]
- [0xF3A460, lib, libultra_rom, cspsetbank, .text]
- [0xF3A4A0, lib, libultra_rom, cspstop, .text]
- [0xF3A4D0, c, n_audio/n_csq]
- [0xF3AB70, lib, libultra_rom, cspsetseq, .text]
- [0xF3ABB0, lib, libultra_rom, cspplay, .text]
- [0xF3ABE0, lib, libultra_rom, cspsetvol, .text]
- [0xF3AC20, c, ultra/audio/code_219D0]
- [0xF3AC60, lib, libultra_rom, cspsettempo, .text]
- [0xF3ACD0, c, n_audio/code_21A80]
- [0xF3AD00, lib, libultra_rom, cspgettempo, .text]
- [0xF3AD40, c, ultra/audio/code_21AF0]
- [0xF3ADA0, c, n_audio/code_21B50]
- [0xF3AE40, c, n_audio/n_syndelete]
- [0xF3AEA0, c, n_audio/n_synallocfx]
- [0xF3AF00, c, n_audio/n_reverb]
- [0xF3B990, c, n_audio/n_auxbus]
- [0xF3BA40, c, n_audio/n_drvrNew]
- [0xF3BFA0, c, n_audio/n_save]
- [0xF3BFF0, c, n_audio/n_envresample]
- [0xF3C090, c, n_audio/n_env]
- [0xF3CA40, c, n_audio/n_seqplayer]
- [0xF3E5B0, c, n_audio/n_synstartvoiceparam]
- [0xF3E690, c, n_audio/n_mainbus]
- [0xF3E710, c, n_audio/n_load]
- [0xF3E8D0, c, n_audio/n_adpcm]
- [0xF3EE90, c, n_audio/n_resample]
- [0xF3F070, c, n_audio/n_seq]
- [0xF3F360, c, n_audio/n_synsetpriority]
- [0xF3F370, lib, libultra_rom, bzero, .text]
- [0xF3F410, lib, libultra_rom, writebackdcacheall, .text]
- [0xF3F440, lib, libultra_rom, initialize, .text]
- [0xF3F6D0, lib, libultra_rom, createthread, .text]
- [0xF3F820, lib, libultra_rom, sinf, .text]
- [0xF3F9E0, lib, libultra_rom, cents2ratio, .text]
- [0xF3FA30, lib, libultra_rom, heapinit, .text]
- [0xF3FA70, lib, libultra_rom, parameters, .text]
- [0xF3FAD0, lib, libultra_rom, createmesgqueue, .text]
- [0xF3FB00, lib, libultra_rom, aisetfreq, .text]
- [0xF3FC60, lib, libultra_rom, sl, .text]
- [0xF3FD20, lib, libultra_rom, heapalloc, .text]
- [0xF3FD80, lib, libultra_rom, recvmesg, .text]
- [0xF3FEC0, lib, libultra_rom, aigetlen, .text]
- [0xF3FED0, lib, libultra_rom, virtualtophysical, .text]
- [0xF3FF50, lib, libultra_rom, aisetnextbuf, .text]
- [0xF40000, lib, libultra_rom, pidma, .text]
- [0xF40110, lib, libultra_rom, stopthread, .text]
- [0xF401D0, lib, libultra_rom, startthread, .text]
- [0xF40320, lib, libultra_rom, writebackdcache, .text]
- [0xF403A0, lib, libultra_rom, invaldcache, .text]
- [0xF40450, lib, libultra_rom, pimgr, .text]
- [0xF405E0, lib, libultra_rom, destroythread, .text]
- [0xF406E0, lib, libultra_rom, sendmesg, .text]
- [0xF40830, lib, libultra_rom, setthreadpri, .text]
- [0xF40910, lib, libultra_rom, mtxutil, .text]
- [0xF40B80, lib, libultra_rom, sqrtf, .text]
- [0xF40B90, lib, libultra_rom, cosf, .text]
- [0xF40D00, lib, libultra_rom, setintmask, .text]
- [0xF40DA0, lib, libultra_rom, dpsetstat, .text]
- [0xF40DB0, lib, libultra_rom, sptask, .text]
- [0xF410A0, lib, libultra_rom, dpgetstat, .text]
- [0xF410A0, lib, libultra_rom, vigetcurrframebuf, .text]
- [0xF410F0, lib, libultra_rom, stoptimer, .text]
- [0xF411E0, lib, libultra_rom, settimer, .text]
- [0xF412C0, lib, libultra_rom, ll, .text]
- [0xF41580, lib, libultra_rom, sptaskyielded, .text]
- [0xF41600, lib, libultra_rom, sptaskyield, .text]
- [0xF41620, lib, libultra_rom, visetmode, .text]
- [0xF41690, lib, libultra_rom, seteventmesg, .text]
- [0xF41700, lib, libultra_rom, vimgr, .text]
- [0xF41A60, lib, libultra_rom, visetspecial, .text]
- [0xF41C20, lib, libultra_rom, viswapbuf, .text]
- [0xF41C70, lib, libultra_rom, visetevent, .text]
- [0xF41CE0, lib, libultra_rom, vigetnextframebuf, .text]
- [0xF41D20, lib, libultra_rom, viblack, .text]
- [0xF41D90, lib, libultra_rom, ortho, .text]
- [0xF41F50, lib, libultra_rom, translate, .text]
- [0xF41FF0, lib, libultra_rom, rotate, .text]
- [0xF421E0, lib, libultra_rom, contreaddata, .text]
- [0xF42440, lib, libultra_rom, controller, .text]
- [0xF42800, lib, libultra_rom, contsetch, .text]
- [0xF42870, lib, libultra_rom, bnkf, .text]
- [0xF42AC0, lib, libultra_rom, gettime, .text]
- [0xF42B50, lib, libultra_rom, cseq, .text]
- [0xF43610, lib, libultra_rom, motor, .text]
- [0xF43C30, lib, libultra_rom, pfsinit, .text]
- [0xF43CF0, lib, libultra_rom, invalicache, .text]
- [0xF43D70, lib, libultra_rom, conteeplongwrite, .text]
- [0xF43EA0, lib, libultra_rom, conteeplongread, .text]
- [0xF43F30, lib, libultra_rom, piread, .text]
- [0xF43F70, lib, libultra_rom, copy, .text]
- [0xF43FF0, lib, libultra_rom, drvrnew, .text]
- [0xF44790, lib, libultra_rom, reverb, .text]
- [0xF453E0, lib, libultra_rom, syncprintf, .text]
- [0xF45420, lib, libultra_rom, seq, .text]
- [0xF45A40, lib, libultra_rom, setsr, .text]
- [0xF45A50, lib, libultra_rom, getsr, .text]
- [0xF45A60, lib, libultra_rom, setfpccsr, .text]
- [0xF45A70, lib, libultra_rom, sirawread, .text]
- [0xF45AC0, lib, libultra_rom, sirawwrite, .text]
- [0xF45B10, lib, libultra_rom, exceptasm, .text]
- [0xF46420, lib, libultra_rom, maptlbrdb, .text]
- [0xF46480, lib, libultra_rom, pirawread, .text]
- [0xF464E0, lib, libultra_rom, interrupt, .text]
- [0xF46520, lib, libultra_rom, thread, .text]
- [0xF46560, lib, libultra_rom, synthesizer, .text]
- [0xF46C40, lib, libultra_rom, syndelete, .text]
- [0xF46C50, lib, libultra_rom, probetlb, .text]
- [0xF46D10, lib, libultra_rom, ai, .text]
- [0xF46D40, lib, libultra_rom, jammesg, .text]
- [0xF46E90, lib, libultra_rom, pigetcmdq, .text]
- [0xF46EC0, lib, libultra_rom, cartrominit, .text]
- [0xF46FC0, lib, libultra_rom, leodiskinit, .text]
- [0xF470C0, lib, libultra_rom, piacs, .text]
- [0xF47180, lib, libultra_rom, getthreadpri, .text]
- [0xF471A0, lib, libultra_rom, pirawdma, .text]
- [0xF47280, lib, libultra_rom, epirawdma, .text]
- [0xF474B0, lib, libultra_rom, devmgr, .text]
- [0xF47940, lib, libultra_rom, bcopy, .text]
- [0xF47C50, lib, libultra_rom, spsetstat, .text]
- [0xF47C60, lib, libultra_rom, spsetpc, .text]
- [0xF47CA0, lib, libultra_rom, sprawdma, .text]
- [0xF47D30, lib, libultra_rom, sp, .text]
- [0xF47D60, lib, libultra_rom, vi, .text]
- [0xF47EA0, lib, libultra_rom, timerintr, .text]
- [0xF482A0, lib, libultra_rom, setcompare, .text]
- [0xF482B0, lib, libultra_rom, spgetstat, .text]
- [0xF482C0, lib, libultra_rom, vigetcurrcontext, .text]
- [0xF482D0, lib, libultra_rom, viswapcontext, .text]
- [0xF48630, lib, libultra_rom, getcount, .text]
- [0xF48640, lib, libultra_rom, normalize, .text]
- [0xF486D0, lib, libultra_rom, siacs, .text]
- [0xF48790, lib, libultra_rom, sirawdma, .text]
- [0xF48840, lib, libultra_rom, pfsisplug, .text]
- [0xF48BB0, lib, libultra_rom, crc, .text]
- [0xF48D30, lib, libultra_rom, contramwrite, .text]
- [0xF490B0, lib, libultra_rom, contramread, .text]
- [0xF49440, lib, libultra_rom, pfsgetstatus, .text]
- [0xF49550, lib, libultra_rom, contpfs, .text]
- [0xF4A2B0, lib, libultra_rom, pfschecker, .text]
- [0xF4AD10, lib, libultra_rom, conteepwrite, .text]
- [0xF4B260, lib, libultra_rom, conteepread, .text]
- [0xF4B5C0, lib, libultra_rom, filter, .text]
- [0xF4B5E0, lib, libultra_rom, env, .text]
- [0xF4C160, lib, libultra_rom, load, .text]
- [0xF4CCB0, lib, libultra_rom, resample, .text]
- [0xF4CFB0, lib, libultra_rom, auxbus, .text]
- [0xF4D0C0, lib, libultra_rom, mainbus, .text]
- [0xF4D210, lib, libultra_rom, save, .text]
- [0xF4D2D0, lib, libultra_rom, si, .text]
- [0xF4D300, lib, libultra_rom, leointerrupt, .text]
- [0xF4DB80, lib, libultra_rom, synallocfx, .text]
- [0xF4DC20, lib, libultra_rom, resetglobalintmask, .text]
- [0xF4DC80, lib, libultra_rom, epirawwrite, .text]
- [0xF4DCD0, lib, libultra_rom, epirawread, .text]
- [0xF4DD20, lib, libultra_rom, setglobalintmask, .text]
- [0xF4DD70, lib, libultra_rom, yieldthread, .text]
- [0xF4DDC0, textbin, us.v10/n_aspMain]
- [0xF4EA20, textbin, us.v10/gSPF3DEX_fifo]
- [0xF4FE50, textbin, us.v10/gSPL3DEX_fifo]
@@ -389,26 +392,26 @@ segments:
- [0xF52670, .data, code_1D5D0]
- [0xF52690, .data, sns]
- [0xF526A0, .data, data_1E820]
- [0xF526B0, .data, audio/n_sl]
- [0xF526C0, .data, audio/n_drvrNew]
- [0xF52850, .data, audio/n_env]
- [0xF52950, .data, os/initialize]
- [0xF52970, .data, audio/sl]
- [0xF52980, .data, io/aisetnextbuf]
- [0xF52990, .data, io/pimgr]
- [0xF529C0, .data, io/vimgr]
- [0xF529E0, .data, io/controller]
- [0xF529F0, .data, audio/drvrNew]
- [0xF52B80, .data, ultra/exceptasm]
- [0xF52BA0, .data, os/thread]
- [0xF52BC0, .data, io/piacs]
- [0xF52BD0, .data, io/vi]
- [0xF52C40, .data, os/timerintr]
- [0xF52C50, .data, io/siacs]
- [0xF52C60, .data, audio/env]
- [0xF52D60, .data, io/vimodepallan1]
- [0xF52DB0, .data, io/vimodempallan1]
- [0xF52DB0, .data, io/vimodentsclan1]
- [0xF526B0, .data, n_audio/n_sl]
- [0xF526C0, .data, n_audio/n_drvrNew]
- [0xF52850, .data, n_audio/n_env]
- [0xF52950, lib, libultra_rom, initialize, .data]
- [0xF52970, lib, libultra_rom, sl, .data]
- [0xF52980, lib, libultra_rom, aisetnextbuf, .data]
- [0xF52990, lib, libultra_rom, pimgr, .data]
- [0xF529C0, lib, libultra_rom, vimgr, .data]
- [0xF529E0, lib, libultra_rom, controller, .data]
- [0xF529F0, lib, libultra_rom, drvrnew, .data]
- [0xF52B80, lib, libultra_rom, exceptasm, .data]
- [0xF52BA0, lib, libultra_rom, thread, .data]
- [0xF52BC0, lib, libultra_rom, piacs, .data]
- [0xF52BD0, lib, libultra_rom, vi, .data]
- [0xF52C40, lib, libultra_rom, timerintr, .data]
- [0xF52C50, lib, libultra_rom, siacs, .data]
- [0xF52C60, lib, libultra_rom, env, .data]
- [0xF52D60, lib, libultra_rom, vimodepallan1, .data]
- [0xF52DB0, lib, libultra_rom, vimodempallan1, .data]
- [0xF52DB0, lib, libultra_rom, vimodentsclan1, .data]
- [0xF52E50, .rodata, code_1D00]
- [0xF52E70, .rodata, code_3250]
- [0xF52E80, .rodata, stub_3A70]
@@ -426,29 +429,28 @@ segments:
- [0xF53A70, .rodata, ml]
- [0xF53B70, .rodata, musicplayer]
- [0xF53BA0, .rodata, code_1D5D0]
- [0xF53C00, .rodata, audio/n_synthesizer]
- [0xF53C10, .rodata, audio/n_csplayer]
- [0xF53F80, .rodata, audio/n_reverb]
- [0xF53FB0, .rodata, audio/n_drvrNew]
- [0xF53FD0, .rodata, audio/n_env]
- [0xF54020, .rodata, audio/n_seqplayer]
- [0xF543D0, .rodata, audio/n_resample]
- [0xF543E0, .rodata, gu/sinf]
- [0xF54430, .rodata, audio/cents2ratio]
- [0xF54440, .rodata, gu/cosf]
- [0xF54490, .rodata, ultra/setintmask]
- [0xF54510, .rodata, gu/rotate]
- [0xF54520, .rodata, audio/cseq]
- [0xF54530, .rodata, audio/drvrNew]
- [0xF54550, .rodata, audio/reverb]
- [0xF54580, .rodata, audio/seq]
- [0xF54590, .rodata, ultra/exceptasm]
- [0xF545E0, hasm, ultra/libm_vals] # Nothing in this file, just here so splat sees it's ASM
- [0xF545E0, .rodata, ultra/libm_vals]
- [0xF545F0, .rodata, audio/synthesizer]
- [0xF54600, .rodata, io/devmgr]
- [0xF54620, .rodata, audio/env]
- [0xF54670, .rodata, audio/resample]
- [0xF53C00, .rodata, n_audio/n_synthesizer]
- [0xF53C10, .rodata, n_audio/n_csplayer]
- [0xF53F80, .rodata, n_audio/n_reverb]
- [0xF53FB0, .rodata, n_audio/n_drvrNew]
- [0xF53FD0, .rodata, n_audio/n_env]
- [0xF54020, .rodata, n_audio/n_seqplayer]
- [0xF543D0, .rodata, n_audio/n_resample]
- [0xF543E0, lib, libultra_rom, sinf, .rodata]
- [0xF54430, lib, libultra_rom, cents2ratio, .rodata]
- [0xF54440, lib, libultra_rom, cosf, .rodata]
- [0xF54490, lib, libultra_rom, setintmask, .rodata]
- [0xF54510, lib, libultra_rom, rotate, .rodata]
- [0xF54520, lib, libultra_rom, cseq, .rodata]
- [0xF54530, lib, libultra_rom, drvrnew, .rodata]
- [0xF54550, lib, libultra_rom, reverb, .rodata]
- [0xF54580, lib, libultra_rom, seq, .rodata]
- [0xF54590, lib, libultra_rom, exceptasm, .rodata]
- [0xF545E0, lib, libultra_rom, libm_vals, .rodata]
- [0xF545F0, lib, libultra_rom, synthesizer, .rodata]
- [0xF54600, lib, libultra_rom, devmgr, .rodata]
- [0xF54620, lib, libultra_rom, env, .rodata]
- [0xF54670, lib, libultra_rom, resample, .rodata]
- [0xF546B0, rodatabin, us.v10/n_aspMain]
- [0xF54960, rodatabin, us.v10/gSPF3DEX_fifo]
- [0xF55160, rodatabin, us.v10/gSPL3DEX_fifo]
@@ -479,23 +481,23 @@ segments:
- [0xF55960, .bss, ucode]
- [0xF55960, .bss, code_1D5D0]
- [0xF55960, .bss, sns]
- [0xF55960, .bss, os/initialize]
- [0xF55960, .bss, io/pimgr]
- [0xF55960, .bss, io/sptask]
- [0xF55960, .bss, os/seteventmesg]
- [0xF55960, .bss, io/vimgr]
- [0xF55960, .bss, gu/rotate]
- [0xF55960, .bss, io/controller]
- [0xF55960, .bss, io/motor]
- [0xF55960, .bss, io/cartrominit]
- [0xF55960, .bss, io/leodiskinit]
- [0xF55960, .bss, io/piacs]
- [0xF55960, .bss, os/timerintr]
- [0xF55960, .bss, io/siacs]
- [0xF55960, .bss, io/pfsisplug]
- [0xF55960, .bss, io/conteepread]
- [0xF55960, .bss, os/kdebugserver]
- [0xF55960, .bss, io/leointerrupt]
- [0xF55960, lib, libultra_rom, initialize, .bss]
- [0xF55960, lib, libultra_rom, pimgr, .bss]
- [0xF55960, lib, libultra_rom, sptask, .bss]
- [0xF55960, lib, libultra_rom, seteventmesg, .bss]
- [0xF55960, lib, libultra_rom, vimgr, .bss]
- [0xF55960, lib, libultra_rom, rotate, .bss]
- [0xF55960, lib, libultra_rom, controller, .bss]
- [0xF55960, lib, libultra_rom, motor, .bss]
- [0xF55960, lib, libultra_rom, cartrominit, .bss]
- [0xF55960, lib, libultra_rom, leodiskinit, .bss]
- [0xF55960, lib, libultra_rom, piacs, .bss]
- [0xF55960, lib, libultra_rom, timerintr, .bss]
- [0xF55960, lib, libultra_rom, siacs, .bss]
- [0xF55960, lib, libultra_rom, pfsisplug, .bss]
- [0xF55960, lib, libultra_rom, conteepread, .bss]
- [0xF55960, lib, libultra_rom, kdebugserver, .bss]
- [0xF55960, lib, libultra_rom, leointerrupt, .bss]
- name: core2
dir: core2
type: code
@@ -826,7 +828,7 @@ segments:
- [0x100D480, c, coords]
- [0x100D8A0, c, code_B7F40]
- [0x100D980, c, code_B8020]
- [0x100D9D0, c, code_B8070]
- [0x100D9D0, c, ultra/debug/assert]
- [0x100D9E0, c, code_B8080]
- [0x100E1C0, c, code_B8860]
- [0x100E9F0, c, code_B9090]
-126
View File
@@ -1,126 +0,0 @@
/**************************************************************************
*
* $Revision: 1.4 $
* $Date: 1997/11/26 00:30:50 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/PRimage.h,v $
*
**************************************************************************/
#ifndef __GL_IMAGE_H__
#define __GL_IMAGE_H__
#ifdef __cplusplus
extern "C" {
#endif
/*
* Defines for image files . . . .
*
* Paul Haeberli - 1984
* Look in /usr/people/4Dgifts/iristools/imgtools for example code!
*
*/
#include <stdio.h>
#define IMAGIC 0732
/* colormap of images */
#define CM_NORMAL 0 /* file contains rows of values which
* are either RGB values (zsize == 3)
* or greyramp values (zsize == 1) */
#define CM_DITHERED 1
#define CM_SCREEN 2 /* file contains data which is a screen
* image; getrow returns buffer which
* can be displayed directly with
* writepixels */
#define CM_COLORMAP 3 /* a colormap file */
#define TYPEMASK 0xff00
#define BPPMASK 0x00ff
#define ITYPE_VERBATIM 0x0000
#define ITYPE_RLE 0x0100
#define ISRLE(type) (((type) & 0xff00) == ITYPE_RLE)
#define ISVERBATIM(type) (((type) & 0xff00) == ITYPE_VERBATIM)
#define BPP(type) ((type) & BPPMASK)
#define RLE(bpp) (ITYPE_RLE | (bpp))
#define VERBATIM(bpp) (ITYPE_VERBATIM | (bpp))
#define IBUFSIZE(pixels) (((pixels)+((pixels)>>6))<<2)
#define RLE_NOP 0x00
#define ierror(p) (((p)->flags&_IOERR)!=0)
#define ifileno(p) ((p)->file)
#define getpix(p) (--(p)->cnt>=0 ? *(p)->ptr++ : ifilbuf(p))
#define putpix(p,x) (--(p)->cnt>=0 \
? ((int)(*(p)->ptr++=(unsigned)(x))) \
: iflsbuf(p,(unsigned)(x)))
typedef struct {
unsigned short imagic; /* stuff saved on disk . . */
unsigned short type;
unsigned short dim;
unsigned short xsize;
unsigned short ysize;
unsigned short zsize;
unsigned long min;
unsigned long max;
unsigned long wastebytes;
char name[80];
unsigned long colormap;
long file; /* stuff used in core only */
unsigned short flags;
short dorev;
short x;
short y;
short z;
short cnt;
unsigned short *ptr;
unsigned short *base;
unsigned short *tmpbuf;
unsigned long offset;
unsigned long rleend; /* for rle images */
unsigned long *rowstart; /* for rle images */
long *rowsize; /* for rle images */
} IMAGE;
IMAGE *icreate();
/*
* IMAGE *iopen(char *file, char *mode, unsigned int type, unsigned int dim,
* unsigned int xsize, unsigned int ysize, unsigned int zsize);
* IMAGE *fiopen(int f, char *mode, unsigned int type, unsigned int dim,
* unsigned int xsize, unsigned int ysize, unsigned int zsize);
*
* ...while iopen and fiopen can take an extended set of parameters, the
* last five are optional, so a more correct prototype would be:
*
*/
IMAGE *iopen(char *file, char *mode, ...);
IMAGE *fiopen(int f, char *mode, ...);
/*
*
* unsigned short *ibufalloc(IMAGE *image);
* int ifilbuf(IMAGE *image);
* int iflush(IMAGE *image);
* unsigned int iflsbuf(IMAGE *image, unsigned int c);
* void isetname(IMAGE *image, char *name);
* void isetcolormap(IMAGE *image, int colormap);
*/
int iclose(IMAGE *image);
int putrow(IMAGE *image, unsigned short *buffer, unsigned int y, unsigned int z);
int getrow(IMAGE *image, unsigned short *buffer, unsigned int y, unsigned int z);
/*
IMAGE *iopen();
IMAGE *icreate();
*/
unsigned short *ibufalloc();
#define IMAGEDEF /* for backwards compatibility */
#ifdef __cplusplus
}
#endif
#endif /* !__GL_IMAGE_H__ */
-453
View File
@@ -1,453 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.13 $
* $Date: 1997/02/11 08:15:34 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/R4300.h,v $
*
**************************************************************************/
#ifndef __R4300_H__
#define __R4300_H__
#include <PR/ultratypes.h>
/*
* Segment base addresses and sizes
*/
#define KUBASE 0
#define KUSIZE 0x80000000
#define K0BASE 0x80000000
#define K0SIZE 0x20000000
#define K1BASE 0xA0000000
#define K1SIZE 0x20000000
#define K2BASE 0xC0000000
#define K2SIZE 0x20000000
/*
* Exception vectors
*/
#define SIZE_EXCVEC 0x80 /* Size of an exc. vec */
#define UT_VEC K0BASE /* utlbmiss vector */
#define R_VEC (K1BASE+0x1fc00000) /* reset vector */
#define XUT_VEC (K0BASE+0x80) /* extended address tlbmiss */
#define ECC_VEC (K0BASE+0x100) /* Ecc exception vector */
#define E_VEC (K0BASE+0x180) /* Gen. exception vector */
/*
* Address conversion macros
*/
#ifdef _LANGUAGE_ASSEMBLY
#define K0_TO_K1(x) ((x)|0xA0000000) /* kseg0 to kseg1 */
#define K1_TO_K0(x) ((x)&0x9FFFFFFF) /* kseg1 to kseg0 */
#define K0_TO_PHYS(x) ((x)&0x1FFFFFFF) /* kseg0 to physical */
#define K1_TO_PHYS(x) ((x)&0x1FFFFFFF) /* kseg1 to physical */
#define KDM_TO_PHYS(x) ((x)&0x1FFFFFFF) /* direct mapped to physical */
#define PHYS_TO_K0(x) ((x)|0x80000000) /* physical to kseg0 */
#define PHYS_TO_K1(x) ((x)|0xA0000000) /* physical to kseg1 */
#else /* _LANGUAGE_C */
#define K0_TO_K1(x) ((u32)(x)|0xA0000000) /* kseg0 to kseg1 */
#define K1_TO_K0(x) ((u32)(x)&0x9FFFFFFF) /* kseg1 to kseg0 */
#define K0_TO_PHYS(x) ((u32)(x)&0x1FFFFFFF) /* kseg0 to physical */
#define K1_TO_PHYS(x) ((u32)(x)&0x1FFFFFFF) /* kseg1 to physical */
#define KDM_TO_PHYS(x) ((u32)(x)&0x1FFFFFFF) /* direct mapped to physical */
#define PHYS_TO_K0(x) ((u32)(x)|0x80000000) /* physical to kseg0 */
#define PHYS_TO_K1(x) ((u32)(x)|0xA0000000) /* physical to kseg1 */
#endif /* _LANGUAGE_ASSEMBLY */
/*
* Address predicates
*/
#define IS_KSEG0(x) ((u32)(x) >= K0BASE && (u32)(x) < K1BASE)
#define IS_KSEG1(x) ((u32)(x) >= K1BASE && (u32)(x) < K2BASE)
#define IS_KSEGDM(x) ((u32)(x) >= K0BASE && (u32)(x) < K2BASE)
#define IS_KSEG2(x) ((u32)(x) >= K2BASE && (u32)(x) < KPTE_SHDUBASE)
#define IS_KPTESEG(x) ((u32)(x) >= KPTE_SHDUBASE)
#define IS_KUSEG(x) ((u32)(x) < K0BASE)
/*
* TLB size constants
*/
#define NTLBENTRIES 31 /* entry 31 is reserved by rdb */
#define TLBHI_VPN2MASK 0xffffe000
#define TLBHI_VPN2SHIFT 13
#define TLBHI_PIDMASK 0xff
#define TLBHI_PIDSHIFT 0
#define TLBHI_NPID 255 /* 255 to fit in 8 bits */
#define TLBLO_PFNMASK 0x3fffffc0
#define TLBLO_PFNSHIFT 6
#define TLBLO_CACHMASK 0x38 /* cache coherency algorithm */
#define TLBLO_CACHSHIFT 3
#define TLBLO_UNCACHED 0x10 /* not cached */
#define TLBLO_NONCOHRNT 0x18 /* Cacheable non-coherent */
#define TLBLO_EXLWR 0x28 /* Exclusive write */
#define TLBLO_D 0x4 /* writeable */
#define TLBLO_V 0x2 /* valid bit */
#define TLBLO_G 0x1 /* global access bit */
#define TLBINX_PROBE 0x80000000
#define TLBINX_INXMASK 0x3f
#define TLBINX_INXSHIFT 0
#define TLBRAND_RANDMASK 0x3f
#define TLBRAND_RANDSHIFT 0
#define TLBWIRED_WIREDMASK 0x3f
#define TLBCTXT_BASEMASK 0xff800000
#define TLBCTXT_BASESHIFT 23
#define TLBCTXT_BASEBITS 9
#define TLBCTXT_VPNMASK 0x7ffff0
#define TLBCTXT_VPNSHIFT 4
#define TLBPGMASK_4K 0x0
#define TLBPGMASK_16K 0x6000
#define TLBPGMASK_64K 0x1e000
/*
* Status register
*/
#define SR_CUMASK 0xf0000000 /* coproc usable bits */
#define SR_CU3 0x80000000 /* Coprocessor 3 usable */
#define SR_CU2 0x40000000 /* Coprocessor 2 usable */
#define SR_CU1 0x20000000 /* Coprocessor 1 usable */
#define SR_CU0 0x10000000 /* Coprocessor 0 usable */
#define SR_RP 0x08000000 /* Reduced power (quarter speed) */
#define SR_FR 0x04000000 /* MIPS III FP register mode */
#define SR_RE 0x02000000 /* Reverse endian */
#define SR_ITS 0x01000000 /* Instruction trace support */
#define SR_BEV 0x00400000 /* Use boot exception vectors */
#define SR_TS 0x00200000 /* TLB shutdown */
#define SR_SR 0x00100000 /* Soft reset occured */
#define SR_CH 0x00040000 /* Cache hit for last 'cache' op */
#define SR_CE 0x00020000 /* Create ECC */
#define SR_DE 0x00010000 /* ECC of parity does not cause error */
/*
* Interrupt enable bits
* (NOTE: bits set to 1 enable the corresponding level interrupt)
*/
#define SR_IMASK 0x0000ff00 /* Interrupt mask */
#define SR_IMASK8 0x00000000 /* mask level 8 */
#define SR_IMASK7 0x00008000 /* mask level 7 */
#define SR_IMASK6 0x0000c000 /* mask level 6 */
#define SR_IMASK5 0x0000e000 /* mask level 5 */
#define SR_IMASK4 0x0000f000 /* mask level 4 */
#define SR_IMASK3 0x0000f800 /* mask level 3 */
#define SR_IMASK2 0x0000fc00 /* mask level 2 */
#define SR_IMASK1 0x0000fe00 /* mask level 1 */
#define SR_IMASK0 0x0000ff00 /* mask level 0 */
#define SR_IBIT8 0x00008000 /* bit level 8 */
#define SR_IBIT7 0x00004000 /* bit level 7 */
#define SR_IBIT6 0x00002000 /* bit level 6 */
#define SR_IBIT5 0x00001000 /* bit level 5 */
#define SR_IBIT4 0x00000800 /* bit level 4 */
#define SR_IBIT3 0x00000400 /* bit level 3 */
#define SR_IBIT2 0x00000200 /* bit level 2 */
#define SR_IBIT1 0x00000100 /* bit level 1 */
#define SR_IMASKSHIFT 8
#define SR_KX 0x00000080 /* extended-addr TLB vec in kernel */
#define SR_SX 0x00000040 /* xtended-addr TLB vec supervisor */
#define SR_UX 0x00000020 /* xtended-addr TLB vec in user mode */
#define SR_KSU_MASK 0x00000018 /* mode mask */
#define SR_KSU_USR 0x00000010 /* user mode */
#define SR_KSU_SUP 0x00000008 /* supervisor mode */
#define SR_KSU_KER 0x00000000 /* kernel mode */
#define SR_ERL 0x00000004 /* Error level, 1=>cache error */
#define SR_EXL 0x00000002 /* Exception level, 1=>exception */
#define SR_IE 0x00000001 /* interrupt enable, 1=>enable */
/*
* Cause Register
*/
#define CAUSE_BD 0x80000000 /* Branch delay slot */
#define CAUSE_CEMASK 0x30000000 /* coprocessor error */
#define CAUSE_CESHIFT 28
/* Interrupt pending bits */
#define CAUSE_IP8 0x00008000 /* External level 8 pending - COMPARE */
#define CAUSE_IP7 0x00004000 /* External level 7 pending - INT4 */
#define CAUSE_IP6 0x00002000 /* External level 6 pending - INT3 */
#define CAUSE_IP5 0x00001000 /* External level 5 pending - INT2 */
#define CAUSE_IP4 0x00000800 /* External level 4 pending - INT1 */
#define CAUSE_IP3 0x00000400 /* External level 3 pending - INT0 */
#define CAUSE_SW2 0x00000200 /* Software level 2 pending */
#define CAUSE_SW1 0x00000100 /* Software level 1 pending */
#define CAUSE_IPMASK 0x0000FF00 /* Pending interrupt mask */
#define CAUSE_IPSHIFT 8
#define CAUSE_EXCMASK 0x0000007C /* Cause code bits */
#define CAUSE_EXCSHIFT 2
/* Cause register exception codes */
#define EXC_CODE(x) ((x)<<2)
/* Hardware exception codes */
#define EXC_INT EXC_CODE(0) /* interrupt */
#define EXC_MOD EXC_CODE(1) /* TLB mod */
#define EXC_RMISS EXC_CODE(2) /* Read TLB Miss */
#define EXC_WMISS EXC_CODE(3) /* Write TLB Miss */
#define EXC_RADE EXC_CODE(4) /* Read Address Error */
#define EXC_WADE EXC_CODE(5) /* Write Address Error */
#define EXC_IBE EXC_CODE(6) /* Instruction Bus Error */
#define EXC_DBE EXC_CODE(7) /* Data Bus Error */
#define EXC_SYSCALL EXC_CODE(8) /* SYSCALL */
#define EXC_BREAK EXC_CODE(9) /* BREAKpoint */
#define EXC_II EXC_CODE(10) /* Illegal Instruction */
#define EXC_CPU EXC_CODE(11) /* CoProcessor Unusable */
#define EXC_OV EXC_CODE(12) /* OVerflow */
#define EXC_TRAP EXC_CODE(13) /* Trap exception */
#define EXC_VCEI EXC_CODE(14) /* Virt. Coherency on Inst. fetch */
#define EXC_FPE EXC_CODE(15) /* Floating Point Exception */
#define EXC_WATCH EXC_CODE(23) /* Watchpoint reference */
#define EXC_VCED EXC_CODE(31) /* Virt. Coherency on data read */
/* C0_PRID Defines */
#define C0_IMPMASK 0xff00
#define C0_IMPSHIFT 8
#define C0_REVMASK 0xff
#define C0_MAJREVMASK 0xf0
#define C0_MAJREVSHIFT 4
#define C0_MINREVMASK 0xf
/*
* Coprocessor 0 operations
*/
#define C0_READI 0x1 /* read ITLB entry addressed by C0_INDEX */
#define C0_WRITEI 0x2 /* write ITLB entry addressed by C0_INDEX */
#define C0_WRITER 0x6 /* write ITLB entry addressed by C0_RAND */
#define C0_PROBE 0x8 /* probe for ITLB entry addressed by TLBHI */
#define C0_RFE 0x10 /* restore for exception */
/*
* 'cache' instruction definitions
*/
/* Target cache */
#define CACH_PI 0x0 /* specifies primary inst. cache */
#define CACH_PD 0x1 /* primary data cache */
#define CACH_SI 0x2 /* secondary instruction cache */
#define CACH_SD 0x3 /* secondary data cache */
/* Cache operations */
#define C_IINV 0x0 /* index invalidate (inst, 2nd inst) */
#define C_IWBINV 0x0 /* index writeback inval (d, sd) */
#define C_ILT 0x4 /* index load tag (all) */
#define C_IST 0x8 /* index store tag (all) */
#define C_CDX 0xc /* create dirty exclusive (d, sd) */
#define C_HINV 0x10 /* hit invalidate (all) */
#define C_HWBINV 0x14 /* hit writeback inv. (d, sd) */
#define C_FILL 0x14 /* fill (i) */
#define C_HWB 0x18 /* hit writeback (i, d, sd) */
#define C_HSV 0x1c /* hit set virt. (si, sd) */
/*
* Cache size definitions
*/
#define ICACHE_SIZE 0x4000 /* 16K */
#define ICACHE_LINESIZE 32 /* 8 words */
#define ICACHE_LINEMASK (ICACHE_LINESIZE-1)
#define DCACHE_SIZE 0x2000 /* 8K */
#define DCACHE_LINESIZE 16 /* 4 words */
#define DCACHE_LINEMASK (DCACHE_LINESIZE-1)
/*
* C0_CONFIG register definitions
*/
#define CONFIG_CM 0x80000000 /* 1 == Master-Checker enabled */
#define CONFIG_EC 0x70000000 /* System Clock ratio */
#define CONFIG_EC_1_1 0x6 /* System Clock ratio 1 :1 */
#define CONFIG_EC_3_2 0x7 /* System Clock ratio 1.5 :1 */
#define CONFIG_EC_2_1 0x0 /* System Clock ratio 2 :1 */
#define CONFIG_EC_3_1 0x1 /* System Clock ratio 3 :1 */
#define CONFIG_EP 0x0f000000 /* Transmit Data Pattern */
#define CONFIG_SB 0x00c00000 /* Secondary cache block size */
#define CONFIG_SS 0x00200000 /* Split scache: 0 == I&D combined */
#define CONFIG_SW 0x00100000 /* scache port: 0==128, 1==64 */
#define CONFIG_EW 0x000c0000 /* System Port width: 0==64, 1==32 */
#define CONFIG_SC 0x00020000 /* 0 -> 2nd cache present */
#define CONFIG_SM 0x00010000 /* 0 -> Dirty Shared Coherency enabled*/
#define CONFIG_BE 0x00008000 /* Endian-ness: 1 --> BE */
#define CONFIG_EM 0x00004000 /* 1 -> ECC mode, 0 -> parity */
#define CONFIG_EB 0x00002000 /* Block order:1->sequent,0->subblock */
#define CONFIG_IC 0x00000e00 /* Primary Icache size */
#define CONFIG_DC 0x000001c0 /* Primary Dcache size */
#define CONFIG_IB 0x00000020 /* Icache block size */
#define CONFIG_DB 0x00000010 /* Dcache block size */
#define CONFIG_CU 0x00000008 /* Update on Store-conditional */
#define CONFIG_K0 0x00000007 /* K0SEG Coherency algorithm */
#define CONFIG_UNCACHED 0x00000002 /* K0 is uncached */
#define CONFIG_NONCOHRNT 0x00000003
#define CONFIG_COHRNT_EXLWR 0x00000005
#define CONFIG_SB_SHFT 22 /* shift SB to bit position 0 */
#define CONFIG_IC_SHFT 9 /* shift IC to bit position 0 */
#define CONFIG_DC_SHFT 6 /* shift DC to bit position 0 */
#define CONFIG_BE_SHFT 15 /* shift BE to bit position 0 */
/*
* C0_TAGLO definitions for setting/getting cache states and physaddr bits
*/
#define SADDRMASK 0xFFFFE000 /* 31..13 -> scache paddr bits 35..17 */
#define SVINDEXMASK 0x00000380 /* 9..7: prim virt index bits 14..12 */
#define SSTATEMASK 0x00001c00 /* bits 12..10 hold scache line state */
#define SINVALID 0x00000000 /* invalid --> 000 == state 0 */
#define SCLEANEXCL 0x00001000 /* clean exclusive --> 100 == state 4 */
#define SDIRTYEXCL 0x00001400 /* dirty exclusive --> 101 == state 5 */
#define SECC_MASK 0x0000007f /* low 7 bits are ecc for the tag */
#define SADDR_SHIFT 4 /* shift STagLo (31..13) to 35..17 */
#define PADDRMASK 0xFFFFFF00 /* PTagLo31..8->prim paddr bits35..12 */
#define PADDR_SHIFT 4 /* roll bits 35..12 down to 31..8 */
#define PSTATEMASK 0x00C0 /* bits 7..6 hold primary line state */
#define PINVALID 0x0000 /* invalid --> 000 == state 0 */
#define PCLEANEXCL 0x0080 /* clean exclusive --> 10 == state 2 */
#define PDIRTYEXCL 0x00C0 /* dirty exclusive --> 11 == state 3 */
#define PPARITY_MASK 0x0001 /* low bit is parity bit (even). */
/*
* C0_CACHE_ERR definitions.
*/
#define CACHERR_ER 0x80000000 /* 0: inst ref, 1: data ref */
#define CACHERR_EC 0x40000000 /* 0: primary, 1: secondary */
#define CACHERR_ED 0x20000000 /* 1: data error */
#define CACHERR_ET 0x10000000 /* 1: tag error */
#define CACHERR_ES 0x08000000 /* 1: external ref, e.g. snoop*/
#define CACHERR_EE 0x04000000 /* error on SysAD bus */
#define CACHERR_EB 0x02000000 /* complicated, see spec. */
#define CACHERR_EI 0x01000000 /* complicated, see spec. */
#define CACHERR_SIDX_MASK 0x003ffff8 /* secondary cache index */
#define CACHERR_PIDX_MASK 0x00000007 /* primary cache index */
#define CACHERR_PIDX_SHIFT 12 /* bits 2..0 are paddr14..12 */
/* R4000 family supports hardware watchpoints:
* C0_WATCHLO:
* bits 31..3 are bits 31..3 of physaddr to watch
* bit 2: reserved; must be written as 0.
* bit 1: when set causes a watchpoint trap on load accesses to paddr.
* bit 0: when set traps on stores to paddr;
* C0_WATCHHI
* bits 31..4 are reserved and must be written as zeros.
* bits 3..0 are bits 35..32 of the physaddr to watch
*/
#define WATCHLO_WTRAP 0x00000001
#define WATCHLO_RTRAP 0x00000002
#define WATCHLO_ADDRMASK 0xfffffff8
#define WATCHLO_VALIDMASK 0xfffffffb
#define WATCHHI_VALIDMASK 0x0000000f
/*
* Coprocessor 0 registers
*/
#ifdef _LANGUAGE_ASSEMBLY
#define C0_INX $0
#define C0_RAND $1
#define C0_ENTRYLO0 $2
#define C0_ENTRYLO1 $3
#define C0_CONTEXT $4
#define C0_PAGEMASK $5 /* page mask */
#define C0_WIRED $6 /* # wired entries in tlb */
#define C0_BADVADDR $8
#define C0_COUNT $9 /* free-running counter */
#define C0_ENTRYHI $10
#define C0_SR $12
#define C0_CAUSE $13
#define C0_EPC $14
#define C0_PRID $15 /* revision identifier */
#define C0_COMPARE $11 /* counter comparison reg. */
#define C0_CONFIG $16 /* hardware configuration */
#define C0_LLADDR $17 /* load linked address */
#define C0_WATCHLO $18 /* watchpoint */
#define C0_WATCHHI $19 /* watchpoint */
#define C0_ECC $26 /* S-cache ECC and primary parity */
#define C0_CACHE_ERR $27 /* cache error status */
#define C0_TAGLO $28 /* cache operations */
#define C0_TAGHI $29 /* cache operations */
#define C0_ERROR_EPC $30 /* ECC error prg. counter */
# else /* ! _LANGUAGE_ASSEMBLY */
#define C0_INX 0
#define C0_RAND 1
#define C0_ENTRYLO0 2
#define C0_ENTRYLO1 3
#define C0_CONTEXT 4
#define C0_PAGEMASK 5 /* page mask */
#define C0_WIRED 6 /* # wired entries in tlb */
#define C0_BADVADDR 8
#define C0_COUNT 9 /* free-running counter */
#define C0_ENTRYHI 10
#define C0_SR 12
#define C0_CAUSE 13
#define C0_EPC 14
#define C0_PRID 15 /* revision identifier */
#define C0_COMPARE 11 /* counter comparison reg. */
#define C0_CONFIG 16 /* hardware configuration */
#define C0_LLADDR 17 /* load linked address */
#define C0_WATCHLO 18 /* watchpoint */
#define C0_WATCHHI 19 /* watchpoint */
#define C0_ECC 26 /* S-cache ECC and primary parity */
#define C0_CACHE_ERR 27 /* cache error status */
#define C0_TAGLO 28 /* cache operations */
#define C0_TAGHI 29 /* cache operations */
#define C0_ERROR_EPC 30 /* ECC error prg. counter */
#endif /* _LANGUAGE_ASSEMBLY */
/*
* floating-point status register
*/
#define FPCSR_FS 0x01000000 /* flush denorm to zero */
#define FPCSR_C 0x00800000 /* condition bit */
#define FPCSR_CE 0x00020000 /* cause: unimplemented operation */
#define FPCSR_CV 0x00010000 /* cause: invalid operation */
#define FPCSR_CZ 0x00008000 /* cause: division by zero */
#define FPCSR_CO 0x00004000 /* cause: overflow */
#define FPCSR_CU 0x00002000 /* cause: underflow */
#define FPCSR_CI 0x00001000 /* cause: inexact operation */
#define FPCSR_EV 0x00000800 /* enable: invalid operation */
#define FPCSR_EZ 0x00000400 /* enable: division by zero */
#define FPCSR_EO 0x00000200 /* enable: overflow */
#define FPCSR_EU 0x00000100 /* enable: underflow */
#define FPCSR_EI 0x00000080 /* enable: inexact operation */
#define FPCSR_FV 0x00000040 /* flag: invalid operation */
#define FPCSR_FZ 0x00000020 /* flag: division by zero */
#define FPCSR_FO 0x00000010 /* flag: overflow */
#define FPCSR_FU 0x00000008 /* flag: underflow */
#define FPCSR_FI 0x00000004 /* flag: inexact operation */
#define FPCSR_RM_MASK 0x00000003 /* rounding mode mask */
#define FPCSR_RM_RN 0x00000000 /* round to nearest */
#define FPCSR_RM_RZ 0x00000001 /* round to zero */
#define FPCSR_RM_RP 0x00000002 /* round to positive infinity */
#define FPCSR_RM_RM 0x00000003 /* round to negative infinity */
#endif /* __R4300_H */
-410
View File
@@ -1,410 +0,0 @@
#ifndef _ABI_H_
#define _ABI_H_
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.32 $
* $Date: 1997/02/11 08:16:37 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/abi.h,v $
*
**************************************************************************/
/*
* Header file for the Audio Binary Interface.
* This is included in the Media Binary Interface file
* mbi.h.
*
* This file follows the framework used for graphics.
*
*/
/* Audio commands: */
#define A_SPNOOP 0
#define A_ADPCM 1
#define A_CLEARBUFF 2
#define A_ENVMIXER 3
#define A_LOADBUFF 4
#define A_RESAMPLE 5
#define A_SAVEBUFF 6
#define A_SEGMENT 7
#define A_SETBUFF 8
#define A_SETVOL 9
#define A_DMEMMOVE 10
#define A_LOADADPCM 11
#define A_MIXER 12
#define A_INTERLEAVE 13
#define A_POLEF 14
#define A_SETLOOP 15
#define ACMD_SIZE 32
/*
* Audio flags
*/
#define A_INIT 0x01
#define A_CONTINUE 0x00
#define A_LOOP 0x02
#define A_OUT 0x02
#define A_LEFT 0x02
#define A_RIGHT 0x00
#define A_VOL 0x04
#define A_RATE 0x00
#define A_AUX 0x08
#define A_NOAUX 0x00
#define A_MAIN 0x00
#define A_MIX 0x10
/*
* BEGIN C-specific section: (typedef's)
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/*
* Data Structures.
*/
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int gain:16;
unsigned int addr;
} Aadpcm;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int gain:16;
unsigned int addr;
} Apolef;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pad1:16;
unsigned int addr;
} Aenvelope;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int dmem:16;
unsigned int pad2:16;
unsigned int count:16;
} Aclearbuff;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int pad2:16;
unsigned int inL:16;
unsigned int inR:16;
} Ainterleave;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:24;
unsigned int addr;
} Aloadbuff;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pad1:16;
unsigned int addr;
} Aenvmixer;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int gain:16;
unsigned int dmemi:16;
unsigned int dmemo:16;
} Amixer;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int dmem2:16;
unsigned int addr;
} Apan;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pitch:16;
unsigned int addr;
} Aresample;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pad1:16;
unsigned int addr;
} Areverb;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:24;
unsigned int addr;
} Asavebuff;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:24;
unsigned int pad2:2;
unsigned int number:4;
unsigned int base:24;
} Asegment;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int dmemin:16;
unsigned int dmemout:16;
unsigned int count:16;
} Asetbuff;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int vol:16;
unsigned int voltgt:16;
unsigned int volrate:16;
} Asetvol;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int dmemin:16;
unsigned int dmemout:16;
unsigned int count:16;
} Admemmove;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int count:16;
unsigned int addr;
} Aloadadpcm;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int pad2:16;
unsigned int addr;
} Asetloop;
/*
* Generic Acmd Packet
*/
typedef struct {
unsigned int w0;
unsigned int w1;
} Awords;
typedef union {
Awords words;
Aadpcm adpcm;
Apolef polef;
Aclearbuff clearbuff;
Aenvelope envelope;
Ainterleave interleave;
Aloadbuff loadbuff;
Aenvmixer envmixer;
Aresample resample;
Areverb reverb;
Asavebuff savebuff;
Asegment segment;
Asetbuff setbuff;
Asetvol setvol;
Admemmove dmemmove;
Aloadadpcm loadadpcm;
Amixer mixer;
Asetloop setloop;
long long int force_union_align; /* dummy, force alignment */
} Acmd;
/*
* ADPCM State
*/
#define ADPCMVSIZE 8
#define ADPCMFSIZE 16
typedef short ADPCM_STATE[ADPCMFSIZE];
/*
* Pole filter state
*/
typedef short POLEF_STATE[4];
/*
* Resampler state
*/
typedef short RESAMPLE_STATE[16];
/*
* Resampler constants
*/
#define UNITY_PITCH 0x8000
#define MAX_RATIO 1.99996 /* within .03 cents of +1 octave */
/*
* Enveloper/Mixer state
*/
typedef short ENVMIX_STATE[40];
/*
* Macros to assemble the audio command list
*/
#define aADPCMdec(pkt, f, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_ADPCM, 24, 8) | _SHIFTL(f, 16, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aPoleFilter(pkt, f, g, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_POLEF, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(g, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aClearBuffer(pkt, d, c) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_CLEARBUFF, 24, 8) | _SHIFTL(d, 0, 24); \
_a->words.w1 = (unsigned int)(c); \
}
#define aEnvMixer(pkt, f, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_ENVMIXER, 24, 8) | _SHIFTL(f, 16, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aInterleave(pkt, l, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_INTERLEAVE, 24, 8); \
_a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); \
}
#define aLoadBuffer(pkt, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aMix(pkt, f, g, i, o) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_MIXER, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(g, 0, 16)); \
_a->words.w1 = _SHIFTL(i,16, 16) | _SHIFTL(o, 0, 16); \
}
#define aPan(pkt, f, d, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_PAN, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(d, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aResample(pkt, f, p, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_RESAMPLE, 24, 8) | _SHIFTL(f, 16, 8) |\
_SHIFTL(p, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aSaveBuffer(pkt, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aSegment(pkt, s, b) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_SEGMENT, 24, 8); \
_a->words.w1 = _SHIFTL(s, 24, 8) | _SHIFTL(b, 0, 24); \
}
#define aSetBuffer(pkt, f, i, o, c) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_SETBUFF, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(i, 0, 16)); \
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
}
#define aSetVolume(pkt, f, v, t, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_SETVOL, 24, 8) | _SHIFTL(f, 16, 16) | \
_SHIFTL(v, 0, 16)); \
_a->words.w1 = _SHIFTL(t, 16, 16) | _SHIFTL(r, 0, 16); \
}
#define aSetLoop(pkt, a) \
{ \
Acmd *_a = (Acmd *)pkt; \
_a->words.w0 = _SHIFTL(A_SETLOOP, 24, 8); \
_a->words.w1 = (unsigned int)(a); \
}
#define aDMEMMove(pkt, i, o, c) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_DMEMMOVE, 24, 8) | _SHIFTL(i, 0, 24); \
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
}
#define aLoadADPCM(pkt, c, d) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_LOADADPCM, 24, 8) | _SHIFTL(c, 0, 24); \
_a->words.w1 = (unsigned int) d; \
}
#endif /* _LANGUAGE_C */
#endif /* !_ABI_H_ */
File diff suppressed because it is too large Load Diff
-392
View File
@@ -1,392 +0,0 @@
/*---------------------------------------------------------------------
Copyright (C) 1997, Nintendo.
File gs2dex.h
Coded by Yoshitaka Yasumoto. Jul 31, 1997.
Modified by
Comments Header file for S2DEX ucode.
$Id: gs2dex.h,v 1.21 1998/05/28 00:14:49 has Exp $
---------------------------------------------------------------------*/
#ifndef _GS2DEX_H_
#define _GS2DEX_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
/*===========================================================================*
* Macro
*===========================================================================*/
#define GS_CALC_DXT(line) (((1<< G_TX_DXT_FRAC)-1)/(line)+1)
#define GS_PIX2TMEM(pix, siz) ((pix)>>(4-(siz)))
#define GS_PIX2DXT(pix, siz) GS_CALC_DXT(GS_PIX2TMEM((pix), (siz)))
/*===========================================================================*
* Data structures for S2DEX microcode
*===========================================================================*/
/*---------------------------------------------------------------------------*
* Background
*---------------------------------------------------------------------------*/
#define G_BGLT_LOADBLOCK 0x0033
#define G_BGLT_LOADTILE 0xfff4
#define G_BG_FLAG_FLIPS 0x01
#define G_BG_FLAG_FLIPT 0x10
/* Non scalable background plane */
typedef struct {
u16 imageX; /* x-coordinate of upper-left position of texture (u10.5) */
u16 imageW; /* width of the texture (u10.2) */
s16 frameX; /* upper-left position of transferred frame (s10.2) */
u16 frameW; /* width of transferred frame (u10.2) */
u16 imageY; /* y-coordinate of upper-left position of texture (u10.5) */
u16 imageH; /* height of the texture (u10.2) */
s16 frameY; /* upper-left position of transferred frame (s10.2) */
u16 frameH; /* height of transferred frame (u10.2) */
u64 *imagePtr; /* texture source address on DRAM */
u16 imageLoad; /* which to use, LoadBlock or LoadTile */
u8 imageFmt; /* format of texel - G_IM_FMT_* */
u8 imageSiz; /* size of texel - G_IM_SIZ_* */
u16 imagePal; /* pallet number */
u16 imageFlip; /* right & left image inversion (Inverted by G_BG_FLAG_FLIPS) */
/* The following is set in the initialization routine guS2DInitBg(). There is no need for the user to set it. */
u16 tmemW; /* TMEM width and Word size of frame 1 line.
At LoadBlock, GS_PIX2TMEM(imageW/4,imageSiz)
At LoadTile GS_PIX2TMEM(frameW/4,imageSiz)+1 */
u16 tmemH; /* height of TMEM loadable at a time (s13.2) 4 times value
When the normal texture, 512/tmemW*4
When the CI texture, 256/tmemW*4 */
u16 tmemLoadSH; /* SH value
At LoadBlock, tmemSize/2-1
At LoadTile, tmemW*16-1 */
u16 tmemLoadTH; /* TH value or Stride value
At LoadBlock, GS_CALC_DXT(tmemW)
At LoadTile, tmemH-1 */
u16 tmemSizeW; /* skip value of imagePtr for image 1-line
At LoadBlock, tmemW*2
At LoadTile, GS_PIX2TMEM(imageW/4,imageSiz)*2 */
u16 tmemSize; /* skip value of imagePtr for 1-loading
= tmemSizeW*tmemH */
} uObjBg_t; /* 40 bytes */
/* Scalable background plane */
typedef struct {
u16 imageX; /* x-coordinate of upper-left position of texture (u10.5) */
u16 imageW; /* width of texture (u10.2) */
s16 frameX; /* upper-left position of transferred frame (s10.2) */
u16 frameW; /* width of transferred frame (u10.2) */
u16 imageY; /* y-coordinate of upper-left position of texture (u10.5) */
u16 imageH; /* height of texture (u10.2) */
s16 frameY; /* upper-left position of transferred frame (s10.2) */
u16 frameH; /* height of transferred frame (u10.2) */
u64 *imagePtr; /* texture source address on DRAM */
u16 imageLoad; /* Which to use, LoadBlock or LoadTile? */
u8 imageFmt; /* format of texel - G_IM_FMT_* */
u8 imageSiz; /* size of texel - G_IM_SIZ_* */
u16 imagePal; /* pallet number */
u16 imageFlip; /* right & left image inversion (Inverted by G_BG_FLAG_FLIPS) */
u16 scaleW; /* scale value of X-direction (u5.10) */
u16 scaleH; /* scale value of Y-direction (u5.10) */
s32 imageYorig; /* start point of drawing on image (s20.5) */
u8 padding[4];
} uObjScaleBg_t; /* 40 bytes */
typedef union {
uObjBg_t b;
uObjScaleBg_t s;
long long int force_structure_alignment;
} uObjBg;
/*---------------------------------------------------------------------------*
* 2D Objects
*---------------------------------------------------------------------------*/
#define G_OBJ_FLAG_FLIPS 1<<0 /* inversion to S-direction */
#define G_OBJ_FLAG_FLIPT 1<<4 /* nversion to T-direction */
typedef struct {
s16 objX; /* s10.2 OBJ x-coordinate of upper-left end */
u16 scaleW; /* u5.10 Scaling of u5.10 width direction */
u16 imageW; /* u10.5 width of u10.5 texture (length of S-direction) */
u16 paddingX; /* Unused - Always 0 */
s16 objY; /* s10.2 OBJ y-coordinate of s10.2 OBJ upper-left end */
u16 scaleH; /* u5.10 Scaling of u5.10 height direction */
u16 imageH; /* u10.5 height of u10.5 texture (length of T-direction) */
u16 paddingY; /* Unused - Always 0 */
u16 imageStride; /* folding width of texel (In units of 64bit word) */
u16 imageAdrs; /* texture header position in TMEM (In units of 64bit word) */
u8 imageFmt; /* format of texel - G_IM_FMT_* */
u8 imageSiz; /* size of texel - G_IM_SIZ_* */
u8 imagePal; /* pallet number (0-7) */
u8 imageFlags; /* The display flag - G_OBJ_FLAG_FLIP* */
} uObjSprite_t; /* 24 bytes */
typedef union {
uObjSprite_t s;
long long int force_structure_alignment;
} uObjSprite;
/*---------------------------------------------------------------------------*
* 2D Matrix
*---------------------------------------------------------------------------*/
typedef struct {
s32 A, B, C, D; /* s15.16 */
s16 X, Y; /* s10.2 */
u16 BaseScaleX; /* u5.10 */
u16 BaseScaleY; /* u5.10 */
} uObjMtx_t; /* 24 bytes */
typedef union {
uObjMtx_t m;
long long int force_structure_alignment;
} uObjMtx;
typedef struct {
s16 X, Y; /* s10.2 */
u16 BaseScaleX; /* u5.10 */
u16 BaseScaleY; /* u5.10 */
} uObjSubMtx_t; /* 8 bytes */
typedef union {
uObjSubMtx_t m;
long long int force_structure_alignment;
} uObjSubMtx;
/*---------------------------------------------------------------------------*
* Loading into TMEM
*---------------------------------------------------------------------------*/
#define G_OBJLT_TXTRBLOCK 0x00001033
#define G_OBJLT_TXTRTILE 0x00fc1034
#define G_OBJLT_TLUT 0x00000030
#define GS_TB_TSIZE(pix,siz) (GS_PIX2TMEM((pix),(siz))-1)
#define GS_TB_TLINE(pix,siz) (GS_CALC_DXT(GS_PIX2TMEM((pix),(siz))))
typedef struct {
u32 type; /* G_OBJLT_TXTRBLOCK divided into types */
u64 *image; /* texture source address on DRAM */
u16 tmem; /* loaded TMEM word address (8byteWORD) */
u16 tsize; /* Texture size, Specified by macro GS_TB_TSIZE() */
u16 tline; /* width of Texture 1-line, Specified by macro GS_TB_TLINE() */
u16 sid; /* STATE ID Multipled by 4 (Either one of 0, 4, 8 and 12) */
u32 flag; /* STATE flag */
u32 mask; /* STATE mask */
} uObjTxtrBlock_t; /* 24 bytes */
#define GS_TT_TWIDTH(pix,siz) ((GS_PIX2TMEM((pix), (siz))<<2)-1)
#define GS_TT_THEIGHT(pix,siz) (((pix)<<2)-1)
typedef struct {
u32 type; /* G_OBJLT_TXTRTILE divided into types */
u64 *image; /* texture source address on DRAM */
u16 tmem; /* loaded TMEM word address (8byteWORD)*/
u16 twidth; /* width of Texture (Specified by macro GS_TT_TWIDTH()) */
u16 theight; /* height of Texture (Specified by macro GS_TT_THEIGHT()) */
u16 sid; /* STATE ID Multipled by 4 (Either one of 0, 4, 8 and 12) */
u32 flag; /* STATE flag */
u32 mask; /* STATE mask */
} uObjTxtrTile_t; /* 24 bytes */
#define GS_PAL_HEAD(head) ((head)+256)
#define GS_PAL_NUM(num) ((num)-1)
typedef struct {
u32 type; /* G_OBJLT_TLUT divided into types */
u64 *image; /* texture source address on DRAM */
u16 phead; /* pallet number of load header (Between 256 and 511) */
u16 pnum; /* loading pallet number -1 */
u16 zero; /* Assign 0 all the time */
u16 sid; /* STATE ID Multipled by 4 (Either one of 0, 4, 8 and 12)*/
u32 flag; /* STATE flag */
u32 mask; /* STATE mask */
} uObjTxtrTLUT_t; /* 24 bytes */
typedef union {
uObjTxtrBlock_t block;
uObjTxtrTile_t tile;
uObjTxtrTLUT_t tlut;
long long int force_structure_alignment;
} uObjTxtr;
/*---------------------------------------------------------------------------*
* Loading into TMEM & 2D Objects
*---------------------------------------------------------------------------*/
typedef struct {
uObjTxtr txtr;
uObjSprite sprite;
} uObjTxSprite; /* 48 bytes */
/*===========================================================================*
* GBI Commands for S2DEX microcode
*===========================================================================*/
/* GBI Header */
#ifdef F3DEX_GBI_2
#define G_OBJ_RECTANGLE_R 0xda
#define G_OBJ_MOVEMEM 0xdc
#define G_RDPHALF_0 0xe4
#define G_OBJ_RECTANGLE 0x01
#define G_OBJ_SPRITE 0x02
#define G_SELECT_DL 0x04
#define G_OBJ_LOADTXTR 0x05
#define G_OBJ_LDTX_SPRITE 0x06
#define G_OBJ_LDTX_RECT 0x07
#define G_OBJ_LDTX_RECT_R 0x08
#define G_BG_1CYC 0x09
#define G_BG_COPY 0x0a
#define G_OBJ_RENDERMODE 0x0b
#else
#define G_BG_1CYC 0x01
#define G_BG_COPY 0x02
#define G_OBJ_RECTANGLE 0x03
#define G_OBJ_SPRITE 0x04
#define G_OBJ_MOVEMEM 0x05
#define G_SELECT_DL 0xb0
#define G_OBJ_RENDERMODE 0xb1
#define G_OBJ_RECTANGLE_R 0xb2
#define G_OBJ_LOADTXTR 0xc1
#define G_OBJ_LDTX_SPRITE 0xc2
#define G_OBJ_LDTX_RECT 0xc3
#define G_OBJ_LDTX_RECT_R 0xc4
#define G_RDPHALF_0 0xe4
#endif
/*---------------------------------------------------------------------------*
* Background wrapped screen
*---------------------------------------------------------------------------*/
#define gSPBgRectangle(pkt, m, mptr) gDma0p((pkt),(m),(mptr),0)
#define gsSPBgRectangle(m, mptr) gsDma0p( (m),(mptr),0)
#define gSPBgRectCopy(pkt, mptr) gSPBgRectangle((pkt), G_BG_COPY, (mptr))
#define gsSPBgRectCopy(mptr) gsSPBgRectangle( G_BG_COPY, (mptr))
#define gSPBgRect1Cyc(pkt, mptr) gSPBgRectangle((pkt), G_BG_1CYC, (mptr))
#define gsSPBgRect1Cyc(mptr) gsSPBgRectangle( G_BG_1CYC, (mptr))
/*---------------------------------------------------------------------------*
* 2D Objects
*---------------------------------------------------------------------------*/
#define gSPObjSprite(pkt, mptr) gDma0p((pkt),G_OBJ_SPRITE, (mptr),0)
#define gsSPObjSprite(mptr) gsDma0p( G_OBJ_SPRITE, (mptr),0)
#define gSPObjRectangle(pkt, mptr) gDma0p((pkt),G_OBJ_RECTANGLE, (mptr),0)
#define gsSPObjRectangle(mptr) gsDma0p( G_OBJ_RECTANGLE, (mptr),0)
#define gSPObjRectangleR(pkt, mptr) gDma0p((pkt),G_OBJ_RECTANGLE_R,(mptr),0)
#define gsSPObjRectangleR(mptr) gsDma0p( G_OBJ_RECTANGLE_R,(mptr),0)
/*---------------------------------------------------------------------------*
* 2D Matrix
*---------------------------------------------------------------------------*/
#define gSPObjMatrix(pkt, mptr) gDma1p((pkt),G_OBJ_MOVEMEM,(mptr),0,23)
#define gsSPObjMatrix(mptr) gsDma1p( G_OBJ_MOVEMEM,(mptr),0,23)
#define gSPObjSubMatrix(pkt, mptr) gDma1p((pkt),G_OBJ_MOVEMEM,(mptr),2, 7)
#define gsSPObjSubMatrix(mptr) gsDma1p( G_OBJ_MOVEMEM,(mptr),2, 7)
/*---------------------------------------------------------------------------*
* Loading into TMEM
*---------------------------------------------------------------------------*/
#define gSPObjLoadTxtr(pkt, tptr) gDma0p((pkt),G_OBJ_LOADTXTR, (tptr),23)
#define gsSPObjLoadTxtr(tptr) gsDma0p( G_OBJ_LOADTXTR, (tptr),23)
#define gSPObjLoadTxSprite(pkt, tptr) gDma0p((pkt),G_OBJ_LDTX_SPRITE,(tptr),47)
#define gsSPObjLoadTxSprite(tptr) gsDma0p( G_OBJ_LDTX_SPRITE,(tptr),47)
#define gSPObjLoadTxRect(pkt, tptr) gDma0p((pkt),G_OBJ_LDTX_RECT, (tptr),47)
#define gsSPObjLoadTxRect(tptr) gsDma0p( G_OBJ_LDTX_RECT, (tptr),47)
#define gSPObjLoadTxRectR(pkt, tptr) gDma0p((pkt),G_OBJ_LDTX_RECT_R,(tptr),47)
#define gsSPObjLoadTxRectR(tptr) gsDma0p( G_OBJ_LDTX_RECT_R,(tptr),47)
/*---------------------------------------------------------------------------*
* Select Display List
*---------------------------------------------------------------------------*/
#define gSPSelectDL(pkt, mptr, sid, flag, mask) \
{ gDma1p((pkt), G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
gDma1p((pkt), G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_PUSH); }
#define gsSPSelectDL(mptr, sid, flag, mask) \
{ gsDma1p(G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
gsDma1p(G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_PUSH); }
#define gSPSelectBranchDL(pkt, mptr, sid, flag, mask) \
{ gDma1p((pkt), G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
gDma1p((pkt), G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_NOPUSH); }
#define gsSPSelectBranchDL(mptr, sid, flag, mask) \
{ gsDma1p(G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
gsDma1p(G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_NOPUSH); }
/*---------------------------------------------------------------------------*
* Set general status
*---------------------------------------------------------------------------*/
#define G_MW_GENSTAT 0x08 /* Note that it is the same value of G_MW_FOG */
#define gSPSetStatus(pkt, sid, val) \
gMoveWd((pkt), G_MW_GENSTAT, (sid), (val))
#define gsSPSetStatus(sid, val) \
gsMoveWd( G_MW_GENSTAT, (sid), (val))
/*---------------------------------------------------------------------------*
* Set Object Render Mode
*---------------------------------------------------------------------------*/
#define G_OBJRM_NOTXCLAMP 0x01
#define G_OBJRM_XLU 0x02 /* Ignored */
#define G_OBJRM_ANTIALIAS 0x04 /* Ignored */
#define G_OBJRM_BILERP 0x08
#define G_OBJRM_SHRINKSIZE_1 0x10
#define G_OBJRM_SHRINKSIZE_2 0x20
#define G_OBJRM_WIDEN 0x40
#define gSPObjRenderMode(pkt, mode) gImmp1((pkt),G_OBJ_RENDERMODE,(mode))
#define gsSPObjRenderMode(mode) gsImmp1( G_OBJ_RENDERMODE,(mode))
/*===========================================================================*
* Render Mode Macro
*===========================================================================*/
#define RM_RA_SPRITE(clk) \
AA_EN | CVG_DST_CLAMP | \
CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE | \
GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)
#define G_RM_SPRITE G_RM_OPA_SURF
#define G_RM_SPRITE2 G_RM_OPA_SURF2
#define G_RM_RA_SPRITE RM_RA_SPRITE(1)
#define G_RM_RA_SPRITE2 RM_RA_SPRITE(2)
#define G_RM_AA_SPRITE G_RM_AA_TEX_TERR
#define G_RM_AA_SPRITE2 G_RM_AA_TEX_TERR2
#define G_RM_XLU_SPRITE G_RM_XLU_SURF
#define G_RM_XLU_SPRITE2 G_RM_XLU_SURF2
#define G_RM_AA_XLU_SPRITE G_RM_AA_XLU_SURF
#define G_RM_AA_XLU_SPRITE2 G_RM_AA_XLU_SURF2
/*===========================================================================*
* External functions
*===========================================================================*/
extern u64 gspS2DEX_fifoTextStart[], gspS2DEX_fifoTextEnd[];
extern u64 gspS2DEX_fifoDataStart[], gspS2DEX_fifoDataEnd[];
extern u64 gspS2DEX_fifo_dTextStart[], gspS2DEX_fifo_dTextEnd[];
extern u64 gspS2DEX_fifo_dDataStart[], gspS2DEX_fifo_dDataEnd[];
extern u64 gspS2DEX2_fifoTextStart[], gspS2DEX2_fifoTextEnd[];
extern u64 gspS2DEX2_fifoDataStart[], gspS2DEX2_fifoDataEnd[];
extern u64 gspS2DEX2_xbusTextStart[], gspS2DEX2_xbusTextEnd[];
extern u64 gspS2DEX2_xbusDataStart[], gspS2DEX2_xbusDataEnd[];
extern void guS2DInitBg(uObjBg *);
#ifdef F3DEX_GBI_2
# define guS2DEmuBgRect1Cyc guS2D2EmuBgRect1Cyc /*Wrapper*/
# define guS2DEmuSetScissor guS2D2EmuSetScissor /*Wrapper*/
extern void guS2D2EmuSetScissor(u32, u32, u32, u32, u8);
extern void guS2D2EmuBgRect1Cyc(Gfx **, uObjBg *);
#else
extern void guS2DEmuSetScissor(u32, u32, u32, u32, u8);
extern void guS2DEmuBgRect1Cyc(Gfx **, uObjBg *);
#endif
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* _GS2DEX_H_ */
/*======== End of gs2dex.h ========*/
-365
View File
@@ -1,365 +0,0 @@
/*
* Copyright 1995, Silicon Graphics, Inc.
* ALL RIGHTS RESERVED
*
* UNPUBLISHED -- Rights reserved under the copyright laws of the United
* States. Use of a copyright notice is precautionary only and does not
* imply publication or disclosure.
*
* U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to restrictions
* as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or
* in similar or successor clauses in the FAR, or the DOD or NASA FAR
* Supplement. Contractor/manufacturer is Silicon Graphics, Inc.,
* 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
*
* THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY
* INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION,
* DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY
* PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON
* GRAPHICS, INC.
*
*/
/*
* File: gt.h
* Creator: hsa@sgi.com
* Create Date: Thu Oct 12 15:48:14 PDT 1995
*
* This file defines the GBI for the TURBO 3D graphics microcode.
* The turbo microcode is a special FEATURE-LIMITED microcode designed
* for specific applications. It is not for general use.
*
* (see XXX for more information)
*
*/
/**************************************************************************
*
* $Revision: 1.16 $
* $Date: 1998/05/28 00:14:50 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/gt.h,v $
*
**************************************************************************/
#ifndef _GT_H_
#define _GT_H_
/* this file should be #included AFTER gbi.h */
#include "sptask.h"
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif /* _LANGUAGE_C_PLUS_PLUS */
#include <PR/ultratypes.h>
/* the following #defines seem out of order, but we need them
* for the microcode.
*/
/*
* object state field: rendState
*
* This flag word is built up out of the bits from a
* subset of the G_SETGEOMETRYMODE flags from gbi.h.
*
* When each of these bits is '1', the comments below explain
* the effect on the triangles.
*/
#define GT_ZBUFFER G_ZBUFFER
#define GT_TEXTURE G_TEXTURE_ENABLE /* texture ON */
#define GT_CULL_BACK G_CULL_BACK /* reject backfaces */
#define GT_SHADING_SMOOTH G_SHADING_SMOOTH /* smooth shade ON */
/*
* object state field: textureState
*
* The lower 3 bits of this flag word contain the texture tile number
* to be used. All triangles of an object are rendered with the same
* texture tile.
*/
/*
* object state field: flag
*
* This is a group of what would be pad bits. We use them for some
* flag bits.
*/
#define GT_FLAG_NOMTX 0x01 /* don't load the matrix */
#define GT_FLAG_NO_XFM 0x02 /* load vtx, use verbatim */
#define GT_FLAG_XFM_ONLY 0x04 /* xform vtx, write to *TriN */
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* turbo 3D ucode: */
extern long long int gspTurbo3DTextStart[], gspTurbo3DTextEnd[];
extern long long int gspTurbo3DDataStart[], gspTurbo3DDataEnd[];
extern long long int gspTurbo3D_dramTextStart[], gspTurbo3D_dramTextEnd[];
extern long long int gspTurbo3D_dramDataStart[], gspTurbo3D_dramDataEnd[];
extern long long int gspTurbo3D_fifoTextStart[], gspTurbo3D_fifoTextEnd[];
extern long long int gspTurbo3D_fifoDataStart[], gspTurbo3D_fifoDataEnd[];
/*
* This is the global state structure. It's definition carefully
* matches the ucode, so if this structure changes, you must also change
* the ucode.
*/
typedef struct {
u16 perspNorm; /* persp normalization */
u16 pad0;
u32 flag;
Gfx rdpOthermode;
u32 segBases[16]; /* table of segment base addrs (SEE NOTE!) */
Vp viewport; /* the viewport to use */
Gfx *rdpCmds; /* block of RDP data, process if !NULL
* block terminated by gDPEndDisplayList()
* (This is a segment address)
*/
} gtGlobState_t;
/* NOTE:
* Although there are 16 segment table entries, the first one (segment 0)
* is reserved for physical memory mapping. You should not segment 0
* to anything other than 0x0.
*/
typedef union {
gtGlobState_t sp;
long long int force_structure_alignment;
} gtGlobState;
/*
* This is the 'state' structure associated with each object
* to be rendered. It's definition carefully matches the
* ucode, so if this structure changes, you must also change
* the gtoff.c tool and the ucode.
*/
typedef struct {
u32 renderState; /* render state */
u32 textureState; /* texture state */
u8 vtxCount; /* how many verts? */
u8 vtxV0; /* where to load verts? */
u8 triCount; /* how many tris? */
u8 flag;
Gfx *rdpCmds; /* ptr (segment address) to RDP DL */
Gfx rdpOthermode;
Mtx transform; /* the transform matrix to use */
} gtState_t;
typedef union {
gtState_t sp;
long long int force_structure_alignment;
} gtState;
/* gtStateLite : same as gtState, but no matrix (see flags below) */
/* this structure must be identical to gtState! (bad) */
typedef struct {
u32 renderState; /* render state */
u32 textureState; /* texture state */
u8 vtxCount; /* how many verts? */
u8 vtxV0; /* where to load verts? */
u8 triCount; /* how many tris? */
u8 flag;
Gfx *rdpCmds; /* ptr (segment address) to RDP DL */
Gfx rdpOthermode;
} gtStateL_t;
typedef union {
gtStateL_t sp;
long long int force_structure_alignment;
} gtStateL;
/*
* The vertex list for the turbo display list uses the
* Vtx struct in gbi.h
*
*/
/*
* This structure represents a single triangle, part of the
* triangle list of the object to be rendered.
*
* NOTE: The triangle list MUST be aligned to an 8-byte boundary.
* Since this structure is only 4 bytes, we are REQUIRING that
* this structure only be used as an array of triangles, and we
* depend on the MIPS C compiler (which always aligns arrays to
* 8-byte boundaries). THIS IS DANGEROUS!!!!
*
*/
typedef struct {
u8 v0, v1, v2, flag; /* flag is which one for flat shade */
} gtTriN;
/*
* This structure represents the transformed points. It is the format
* of the points written out when GT_FLAG_XFM_ONLY is set, as well as
* the format expected when GT_FLAG_NO_XFM is used.
*
* NOTE: The size and layout of these points is very similar to Vtx,
* except the screen coordinates overwrite the x,y,z,pad fields.
* (we could consider adding to the Vtx union, but we want to keep
* turbo stuff out of gbi.h)
*
* NOTE: The z is a special format. It can be used to compare vertices
* for sorting, but it should not be used for other purposes. If modified,
* the z-buffer hardware might not understand the data.
*
*/
typedef struct {
short int xscrn; /* x,y screen coordinates are SSSS10.2 */
short int yscrn;
int zscrn; /* z screen is S15.16 */
short int s; /* transformed texture coord, S10.5 */
short int t;
u8 r; /* color (or normal) */
u8 g;
u8 b;
u8 a;
} gtVtxOut_t;
/* see "Data Structure" comment in gbi.h for information about why
* we use this union.
*/
typedef union {
gtVtxOut_t v;
long long int force_structure_alignment;
} gtVtxOut;
/*
* state field: rdpOthermode
*
* This is one of the trickier state fields. The turbo interface
* requires the RDP othermode command to be cached by the host,
* therefore we provide a different interface in libultra to help cache
* this in the gt state (this word is just bits, you could pack them
* on your own).
*
* gtStateSetOthermode() accomplishs this, taking as arguments
* the state, one of the following mode enums, and a piece of data
* (othermode parameters from gbi.h).
*
* By definition, the othermode word from the gt state structure is sent
* to the RDP *before* any RDP commands from the rdpCmds[] field. The
* othermode is *always* sent.
*
* Stated another way, NONE of the gbi RDP othermode commands equivalent
* to those listed here are allowed in the rdpCmd[] field of the
* gt state structure.
*
* Notice also that many of these commands do not make sense for
* the turbo ucode (they control features not supported, like mip-mapping).
* They are only included here for completeness.
*
*/
typedef enum {
GT_CLEAR, /* special gt mode, clears othermode state */
GT_ALPHACOMPARE,
GT_ZSRCSEL,
GT_RENDERMODE,
GT_ALPHADITHER,
GT_RGBDITHER,
GT_COMBKEY,
GT_TEXTCONV,
GT_TEXTFILT,
GT_TEXTLUT,
GT_TEXTLOD,
GT_TEXTDETAIL,
GT_TEXTPERSP,
GT_CYCLETYPE,
GT_PIPELINE
} gtStateOthermode_t;
/*
* This call builds up an othermode command word. The 'mode' is one of
* the above modes, the 'data' field comes from gbi.h, it is the data
* field for the equivalent gbi setothermode macro.
*/
extern void gtStateSetOthermode(Gfx *om, gtStateOthermode_t mode, int data);
/*
* This call dumps a turbo display list for use with gbi2mem and RSPSIM
*/
#define GT_DUMPTURBO_HANGAFTER 64
#define GT_DUMPTURBO_NOTEXTURES 128
extern void gtDumpTurbo(OSTask *tp,u8 flags);
/*
* Special macros to init othermode words to all 0's, a good default
* value.
*/
#define gDPClearOtherMode(pkt) \
{ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(G_RDPSETOTHERMODE, 24, 8); \
_g->words.w1 = 0x0; \
}
#define gsDPClearOtherMode() \
{ \
_SHIFTL(G_RDPSETOTHERMODE, 24, 8), 0x0 \
}
/*
* Special macros to end DP blocks (see above). These commands
* generate all 0's, which the turbo ucode looks for. They *aren't*
* real DP commands!
*/
#define gDPEndDisplayList(pkt) gSPNoOp(pkt)
#define gsDPEndDisplayList() gsSPNoOp()
/*
* This structure is a turbo 'object', the turbo display list is
* simply a list of these.
*
* NOTE: All pointers are segment addresses
*
* NOTE: If (statep->flag & GT_FLAG_XFM_ONLY), the trip field is
* interpreted as a pointer to gtVtxOut[] that can be used to store
* the transformed points. (statep->triCount should be 0, else bad
* things could happen...)
*
* NOTE: If (statep->flag & GT_FLAG_NO_XFM), the vtxp field is
* interpreted as a pointer to gtVtxOut[] that can be used to load
* pre-transformed points.
*
*/
typedef struct {
gtGlobState *gstatep; /* global state, usually NULL */
gtState *statep; /* if this is NULL, end object processing */
Vtx *vtxp; /* if this is NULL, use points in buffer */
gtTriN *trip; /* if this is NULL, use tris in buffer */
} gtGfx_t;
typedef union {
gtGfx_t obj;
long long int force_structure_alignment;
} gtGfx;
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_ASSEMBLY
#include <PR/gtoff.h>
#endif /* _LANGUAGE_ASSEMBLY */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif /* _LANGUAGE_C_PLUS_PLUS */
#ifdef _LANGUAGE_MAKEROM
#endif /* _LANGUAGE_MAKEROM */
#endif /* _GT_H_ */
-269
View File
@@ -1,269 +0,0 @@
#ifndef _GU_H_
#define _GU_H_
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.48 $
* $Date: 1999/07/13 08:00:20 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/gu.h,v $
*
**************************************************************************/
#include <PR/mbi.h>
#include <PR/ultratypes.h>
#include <PR/sptask.h>
#ifndef MAX
#define MAX(a,b) (((a)>(b))?(a):(b))
#endif
#ifndef MIN
#define MIN(a,b) (((a)<(b))?(a):(b))
#endif
#define M_PI 3.14159265358979323846
#define M_DTOR (3.14159265358979323846/180.0)
#define FTOFIX32(x) (long)((x) * (float)0x00010000)
#define FIX32TOF(x) ((float)(x) * (1.0f / (float)0x00010000))
#define FTOFRAC8(x) ((int) MIN(((x) * (128.0)), 127.0) & 0xff)
#define FILTER_WRAP 0
#define FILTER_CLAMP 1
#define RAND(x) (guRandom()%x) /* random number between 0 to x */
/*
* Data Structures
*/
typedef struct {
unsigned char *base;
int fmt, siz;
int xsize, ysize;
int lsize;
/* current tile info */
int addr;
int w, h;
int s, t;
} Image;
typedef struct {
float col[3];
float pos[3];
float a1, a2; /* actual color = col/(a1*dist + a2) */
} PositionalLight;
/*
* Function Prototypes
*/
extern int guLoadTextureBlockMipMap(Gfx **glist, unsigned char *tbuf, Image *im,
unsigned char startTile, unsigned char pal, unsigned char cms,
unsigned char cmt, unsigned char masks, unsigned char maskt,
unsigned char shifts, unsigned char shiftt, unsigned char cfs,
unsigned char cft);
extern int guGetDPLoadTextureTileSz (int ult, int lrt);
extern void guDPLoadTextureTile (Gfx *glistp, void *timg,
int texl_fmt, int texl_size,
int img_width, int img_height,
int uls, int ult, int lrs, int lrt,
int palette,
int cms, int cmt,
int masks, int maskt,
int shifts, int shiftt);
/*
* matrix operations:
*
* The 'F' version is floating point, in case the application wants
* to do matrix manipulations and convert to fixed-point at the last
* minute.
*/
extern void guMtxIdent(Mtx *m);
extern void guMtxIdentF(float mf[4][4]);
extern void guOrtho(Mtx *m, float l, float r, float b, float t,
float n, float f, float scale);
extern void guOrthoF(float mf[4][4], float l, float r, float b, float t,
float n, float f, float scale);
extern void guFrustum(Mtx *m, float l, float r, float b, float t,
float n, float f, float scale);
extern void guFrustumF(float mf[4][4], float l, float r, float b, float t,
float n, float f, float scale);
extern void guPerspective(Mtx *m, u16 *perspNorm, float fovy,
float aspect, float near, float far, float scale);
extern void guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy,
float aspect, float near, float far, float scale);
extern void guLookAt(Mtx *m,
float xEye, float yEye, float zEye,
float xAt, float yAt, float zAt,
float xUp, float yUp, float zUp);
extern void guLookAtF(float mf[4][4], float xEye, float yEye, float zEye,
float xAt, float yAt, float zAt,
float xUp, float yUp, float zUp);
extern void guLookAtReflect(Mtx *m, LookAt *l,
float xEye, float yEye, float zEye,
float xAt, float yAt, float zAt,
float xUp, float yUp, float zUp);
extern void guLookAtReflectF(float mf[4][4], LookAt *l,
float xEye, float yEye, float zEye,
float xAt, float yAt, float zAt,
float xUp, float yUp, float zUp);
extern void guLookAtHilite(Mtx *m, LookAt *l, Hilite *h,
float xEye, float yEye, float zEye,
float xAt, float yAt, float zAt,
float xUp, float yUp, float zUp,
float xl1, float yl1, float zl1,
float xl2, float yl2, float zl2,
int twidth, int theight);
extern void guLookAtHiliteF(float mf[4][4], LookAt *l, Hilite *h,
float xEye, float yEye, float zEye,
float xAt, float yAt, float zAt,
float xUp, float yUp, float zUp,
float xl1, float yl1, float zl1,
float xl2, float yl2, float zl2,
int twidth, int theight);
extern void guLookAtStereo(Mtx *m,
float xEye, float yEye, float zEye,
float xAt, float yAt, float zAt,
float xUp, float yUp, float zUp,
float eyedist);
extern void guLookAtStereoF(float mf[4][4],
float xEye, float yEye, float zEye,
float xAt, float yAt, float zAt,
float xUp, float yUp, float zUp,
float eyedist);
extern void guRotate(Mtx *m, float a, float x, float y, float z);
extern void guRotateF(float mf[4][4], float a, float x, float y, float z);
extern void guRotateRPY(Mtx *m, float r, float p, float y);
extern void guRotateRPYF(float mf[4][4], float r, float p, float h);
extern void guAlign(Mtx *m, float a, float x, float y, float z);
extern void guAlignF(float mf[4][4], float a, float x, float y, float z);
extern void guScale(Mtx *m, float x, float y, float z);
extern void guScaleF(float mf[4][4], float x, float y, float z);
extern void guTranslate(Mtx *m, float x, float y, float z);
extern void guTranslateF(float mf[4][4], float x, float y, float z);
extern void guPosition(Mtx *m, float r, float p, float h, float s,
float x, float y, float z);
extern void guPositionF(float mf[4][4], float r, float p, float h, float s,
float x, float y, float z);
extern void guMtxF2L(float mf[4][4], Mtx *m);
extern void guMtxL2F(float mf[4][4], Mtx *m);
extern void guMtxCatF(float m[4][4], float n[4][4], float r[4][4]);
extern void guMtxCatL(Mtx *m, Mtx *n, Mtx *res);
extern void guMtxXFMF(float mf[4][4], float x, float y, float z,
float *ox, float *oy, float *oz);
extern void guMtxXFML(Mtx *m, float x, float y, float z,
float *ox, float *oy, float *oz);
/* vector utility: */
extern void guNormalize(float *x, float *y, float *z);
/* light utilities: */
void guPosLight(PositionalLight *pl, Light *l,
float xOb, float yOb, float zOb);
void guPosLightHilite(PositionalLight *pl1, PositionalLight *pl2,
Light *l1, Light *l2,
LookAt *l, Hilite *h,
float xEye, float yEye, float zEye,
float xOb, float yOb, float zOb,
float xUp, float yUp, float zUp,
int twidth, int theight);
extern int guRandom(void);
/*
* Math functions
*/
extern float sinf(float angle);
extern float cosf(float angle);
extern signed short sins (unsigned short angle);
extern signed short coss (unsigned short angle);
extern float sqrtf(float value);
#ifdef __sgi
#pragma intrinsic(sqrtf);
#endif
/*
* Dump routines for low-level display lists
*/
/* flag values for guParseRdpDL() */
#define GU_PARSERDP_VERBOSE 1
#define GU_PARSERDP_PRAREA 2
#define GU_PARSERDP_PRHISTO 4
#define GU_PARSERDP_DUMPONLY 32 /* doesn't need to be same as */
/* GU_PARSEGBI_DUMPOLNY, but this */
/* allows app to use interchangeably */
extern void guParseRdpDL(u64 *rdp_dl, u64 nbytes, u8 flags);
extern void guParseString(char *StringPointer, u64 nbytes);
/*
* NO LONGER SUPPORTED,
* use guParseRdpDL with GU_PARSERDP_DUMPONLY flags
*/
/* extern void guDumpRawRdpDL(u64 *rdp_dl, u64 nbytes); */
/* flag values for guBlinkRdpDL() */
#define GU_BLINKRDP_HILITE 1
#define GU_BLINKRDP_EXTRACT 2
extern void
guBlinkRdpDL(u64 *rdp_dl_in, u64 nbytes_in,
u64 *rdp_dl_out, u64 *nbytes_out,
u32 x, u32 y, u32 radius,
u8 red, u8 green, u8 blue,
u8 flags);
/* flag values for guParseGbiDL() */
#define GU_PARSEGBI_ROWMAJOR 1
#define GU_PARSEGBI_NONEST 2
#define GU_PARSEGBI_FLTMTX 4
#define GU_PARSEGBI_SHOWDMA 8
#define GU_PARSEGBI_ALLMTX 16
#define GU_PARSEGBI_DUMPONLY 32
/*
#define GU_PARSEGBI_HANGAFTER 64
#define GU_PARSEGBI_NOTEXTURES 128
*/
extern void guParseGbiDL(u64 *gbi_dl, u32 nbytes, u8 flags);
extern void guDumpGbiDL(OSTask *tp,u8 flags);
#define GU_PARSE_GBI_TYPE 1
#define GU_PARSE_RDP_TYPE 2
#define GU_PARSE_READY 3
#define GU_PARSE_MEM_BLOCK 4
#define GU_PARSE_ABI_TYPE 5
#define GU_PARSE_STRING_TYPE 6
typedef struct {
int dataSize;
int dlType;
int flags;
u32 paddr;
} guDLPrintCB;
void guSprite2DInit(uSprite *SpritePointer,
void *SourceImagePointer,
void *TlutPointer,
int Stride,
int SubImageWidth,
int SubImageHeight,
int SourceImageType,
int SourceImageBitSize,
int SourceImageOffsetS,
int SourceImageOffsetT);
#endif /* !_GU_H_ */
-280
View File
@@ -1,280 +0,0 @@
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo.
$RCSfile: leo.h,v $
$Revision: 1.29 $
$Date: 1998/12/21 07:30:15 $
*---------------------------------------------------------------------*/
#ifndef _LEO_H_
#define _LEO_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#include <PR/leoappli.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
typedef u32 LEOError;
typedef u8 LEOSpdlMode;
typedef u8 LEOStatus;
typedef struct
{
u8 drive; /* version of hw */
u8 driver; /* version of sw */
u8 deviceType; /* dev type, always 00 */
u8 ndevices; /* # of devices, always 01 */
} LEOVersion;
typedef struct
{
u32 startLBA;
u32 endLBA;
u32 nbytes;
} LEOCapacity;
typedef struct
{
u8 pad;
u8 yearhi;
u8 yearlo;
u8 month;
u8 day;
u8 hour;
u8 minute;
u8 second;
} LEODiskTime;
typedef struct
{
u64 lineNumber;
LEODiskTime time;
} LEOSerialNum;
typedef struct
{
u8 gameName[4];
u8 gameVersion;
u8 diskNumber;
u8 ramUsage;
u8 diskUsage;
LEOSerialNum serialNumber;
u8 company[2];
u8 freeArea[6];
} LEODiskID;
typedef struct
{
LEOCmdHeader header;
union
{
struct
{
u32 lba;
u32 xfer_blks;
void *buff_ptr;
u32 rw_bytes;
#ifdef _LONGCMD
u32 size;
#endif
} readwrite;
struct
{
u32 lba;
} seek;
struct
{
void *buffer_pointer;
} readdiskid;
LEODiskTime time;
struct
{
u8 reserve1;
u8 reserve2;
u8 standby_time;
u8 sleep_time;
u32 reserve3;
} modeselect;
} data;
} LEOCmd;
#define _nbytes readwrite.rw_bytes
#define _result header.status
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#define LEO_SW_VERSION 6 /* This will be returned by */
/* LeoInquiry command */
#define OS_PRIORITY_LEOMGR OS_PRIORITY_PIMGR
/*
* Drive Rom offset address
*/
#define DDROM_FONT_START 0x000a0000
#define DDROM_WAVEDATA_START 0x00140000
/*
* Definition for osLeoSpdlMotor()
*/
#define ACTIVE 0
#define STANDBY 1
#define SLEEP 2
#define BRAKE 4
#define LEO_MOTOR_ACTIVE 0
#define LEO_MOTOR_STANDBY 1
#define LEO_MOTOR_SLEEP 2
#define LEO_MOTOR_BRAKE 4
#define NUM_LBAS 4292 /* total number of LBAs */
#define BLK_SIZE_ZONE0 19720
#define BLK_SIZE_ZONE1 18360
#define BLK_SIZE_ZONE2 17680
#define BLK_SIZE_ZONE3 16320
#define BLK_SIZE_ZONE4 14960
#define BLK_SIZE_ZONE5 13600
#define BLK_SIZE_ZONE6 12240
#define BLK_SIZE_ZONE7 10880
#define BLK_SIZE_ZONE8 9520
#define MAX_BLK_SIZE BLK_SIZE_ZONE0
#define MIN_BLK_SIZE BLK_SIZE_ZONE8
/*
* Error codes
*/
#define LEO_ERROR_GOOD 0
#define LEO_ERROR_DRIVE_NOT_READY 1
#define LEO_ERROR_DIAGNOSTIC_FAILURE 2
#define LEO_ERROR_COMMAND_PHASE_ERROR 3
#define LEO_ERROR_DATA_PHASE_ERROR 4
#define LEO_ERROR_REAL_TIME_CLOCK_FAILURE 5
#define LEO_ERROR_BUSY 8
#define LEO_ERROR_INCOMPATIBLE_MEDIUM_INSTALLED 11
#define LEO_ERROR_UNKNOWN_FORMAT 11
#define LEO_ERROR_NO_SEEK_COMPLETE 21
#define LEO_ERROR_WRITE_FAULT 22
#define LEO_ERROR_UNRECOVERED_READ_ERROR 23
#define LEO_ERROR_NO_REFERENCE_POSITION_FOUND 24
#define LEO_ERROR_TRACK_FOLLOWING_ERROR 25
#define LEO_ERROR_TRACKING_OR_SPDL_SERVO_FAILURE 25
#define LEO_ERROR_INVALID_COMMAND_OPERATION_CODE 31
#define LEO_ERROR_LBA_OUT_OF_RANGE 32
#define LEO_ERROR_WRITE_PROTECT_ERROR 33
#define LEO_ERROR_COMMAND_CLEARED_BY_HOST 34
#define LEO_ERROR_COMMAND_TERMINATED 34
#define LEO_ERROR_QUEUE_FULL 35
#define LEO_ERROR_ILLEGAL_TIMER_VALUE 36
#define LEO_ERROR_WAITING_NMI 37
#define LEO_ERROR_DEVICE_COMMUNICATION_FAILURE 41
#define LEO_ERROR_MEDIUM_NOT_PRESENT 42
#define LEO_ERROR_POWERONRESET_DEVICERESET_OCCURED 43
#define LEO_ERROR_RAMPACK_NOT_CONNECTED 44
#define LEO_ERROR_MEDIUM_MAY_HAVE_CHANGED 47
#define LEO_ERROR_EJECTED_ILLEGALLY_RESUME 49
/*
* Reserved
*/
#define LEO_ERROR_NOT_BOOTED_DISK 45
#define LEO_ERROR_DIDNOT_CHANGED_DISK_AS_EXPECTED 46
/*
* Error codes only used in IPL
*/
#define LEO_ERROR_RTC_NOT_SET_CORRECTLY 48
#define LEO_ERROR_DIAGNOSTIC_FAILURE_RESET 50
#define LEO_ERROR_EJECTED_ILLEGALLY_RESET 51
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
#define GET_ERROR(x) ((x).header.sense)
/**************************************************************************
*
* Extern variables
*
*/
extern LEODiskID leoBootID;
extern OSPiHandle *__osDiskHandle; /* For exceptasm to get disk info*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Initialize routine */
extern s32 LeoCreateLeoManager(OSPri comPri, OSPri intPri,
OSMesg *cmdBuf, s32 cmdMsgCnt);
extern s32 LeoCJCreateLeoManager(OSPri comPri, OSPri intPri,
OSMesg *cmdBuf, s32 cmdMsgCnt);
extern s32 LeoCACreateLeoManager(OSPri comPri, OSPri intPri,
OSMesg *cmdBuf, s32 cmdMsgCnt);
extern u32 LeoDriveExist(void);
/* Synchronous functions */
extern s32 LeoClearQueue(void);
extern s32 LeoByteToLBA(s32 startLBA, u32 nbytes, s32 *lbas);
extern s32 LeoLBAToByte(s32 startLBA, u32 nLBAs, s32 *bytes);
extern s32 LeoReadCapacity(LEOCapacity *cap, s32 dir);
extern s32 LeoInquiry(LEOVersion *ver);
extern s32 LeoTestUnitReady(LEOStatus *status);
/* Asynchronous functions */
extern s32 LeoSpdlMotor(LEOCmd *cmdBlock, LEOSpdlMode mode, OSMesgQueue *mq);
extern s32 LeoSeek(LEOCmd *cmdBlock, u32 lba, OSMesgQueue *mq);
extern s32 LeoRezero(LEOCmd *cmdBlock, OSMesgQueue *mq);
extern s32 LeoReadWrite(LEOCmd *cmdBlock, s32 direction,
u32 LBA, void *vAddr, u32 nLBAs, OSMesgQueue *mq);
extern s32 LeoReadDiskID(LEOCmd *cmdBlock, LEODiskID *vaddr, OSMesgQueue *mq);
extern s32 LeoSetRTC(LEOCmd *cmdBlock, LEODiskTime *RTCdata, OSMesgQueue *mq);
extern s32 LeoReadRTC(LEOCmd *cmdBlock, OSMesgQueue *mq);
extern s32 LeoModeSelectAsync(LEOCmd *cmdBlock, u32 standby,
u32 sleep, OSMesgQueue *mq);
/* Font routines */
extern int LeoGetKAdr(int sjis);
extern int LeoGetAAdr(int code,int *dx,int *dy, int *cy);
extern int LeoGetAAdr2(u32 ccode,int *dx,int *dy, int *cy);
/* Boot function */
extern void LeoBootGame(void *entry);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_LEO_H */
-274
View File
@@ -1,274 +0,0 @@
/*
* F i l e N a m e : l e o a p p l i . h
*
****************************************************************************
* (C) Copyright ALPS Electric Co., Ltd. 1995-1997
****************************************************************************
* Version
*
* ver Date
* ---- --------
* 1.01 '97-11-18 Add MOTOR BRAKE definition for control bit.
****************************************************************************
*/
/*-----------------------------------*/
/* DRIVE PARAMETER */
/*-----------------------------------*/
#define LEO_DISK_TYPE_MIN 0
#define LEO_DISK_TYPE_MAX 6
#define LEO_LBA_MIN 0
#define LEO_LBA_MAX 4291
#define LEO_LBA_ROM_TOP LEO_LBA_MIN
#define LEO_LBA_ROM_END0 1417
#define LEO_LBA_ROM_END1 1965
#define LEO_LBA_ROM_END2 2513
#define LEO_LBA_ROM_END3 3061
#define LEO_LBA_ROM_END4 3609
#define LEO_LBA_ROM_END5 4087
#define LEO_LBA_ROM_END6 LEO_LBA_MAX
#define LEO_LBA_RAM_TOP0 (LEO_LBA_ROM_END0+1)
#define LEO_LBA_RAM_TOP1 (LEO_LBA_ROM_END1+1)
#define LEO_LBA_RAM_TOP2 (LEO_LBA_ROM_END2+1)
#define LEO_LBA_RAM_TOP3 (LEO_LBA_ROM_END3+1)
#define LEO_LBA_RAM_TOP4 (LEO_LBA_ROM_END4+1)
#define LEO_LBA_RAM_TOP5 (LEO_LBA_ROM_END5+1)
#define LEO_LBA_RAM_TOP6 (LEO_LBA_ROM_END6+1)
#define LEO_LBA_RAM_END6 LEO_LBA_MAX
/*-----------------------------------*/
/* LEO FUNCTION DEFINITIONS */
/*-----------------------------------*/
extern void leoInitialize(OSPri PRI_WRK, OSPri PRI_INT, OSMesg *command_que_buf, u32 cmd_buff_size);
extern void leoCommand(void *CDB);
extern void LeoReset(void);
extern s32 LeoResetClear(void);
/*-----------------------------------*/
/* THREAD PRIORITY */
/*-----------------------------------*/
#define LEO_PRIORITY_WRK (OS_PRIORITY_PIMGR-1)
#define LEO_PRIORITY_INT OS_PRIORITY_PIMGR
/*-----------------------------------*/
/* COMMAND CODE */
/*-----------------------------------*/
#define LEO_COMMAND_CLEAR_QUE 0x01
#define LEO_COMMAND_INQUIRY 0x02
#define LEO_COMMAND_TEST_UNIT_READY 0x03
#define LEO_COMMAND_REZERO 0x04
#define LEO_COMMAND_READ 0x05
#define LEO_COMMAND_WRITE 0x06
#define LEO_COMMAND_SEEK 0x07
#define LEO_COMMAND_START_STOP 0x08
#define LEO_COMMAND_READ_CAPACITY 0x09
#define LEO_COMMAND_TRANSLATE 0x0a
#define LEO_COMMAND_MODE_SELECT 0x0b
#define LEO_COMMAND_READ_DISK_ID 0x0c
#define LEO_COMMAND_READ_TIMER 0x0d
#define LEO_COMMAND_SET_TIMER 0x0e
/*-----------------------------------*/
/* CONTROL BIT */
/*-----------------------------------*/
#define LEO_CONTROL_POST 0x80 /* ENABLE POST QUEUE */
#define LEO_CONTROL_START 0x01 /* START COMMAND */
#define LEO_CONTROL_STBY 0x02 /* STAND-BY MODE(NOT SLEEP MODE) */
#define LEO_CONTROL_WRT 0x01 /* READ RE-WRITE-ABLE CAPACITY */
#define LEO_CONTROL_TBL 0x01 /* TRANSLATE BYTE TO LBA */
#define LEO_CONTROL_BRAKE 0x04 /* SLEEP MODE(BRAKE ON) */
/*-----------------------------------*/
/* BIT FIELD PARAMETER */
/*-----------------------------------*/
#define LEO_TEST_UNIT_MR 0x01 /* MEDIUM REMOVED */
#define LEO_TEST_UNIT_RE 0x02 /* HEAD RETRACTED */
#define LEO_TEST_UNIT_SS 0x04 /* SPINDLE STOPPED */
/*-----------------------------------*/
/* STATUS */
/*-----------------------------------*/
#define LEO_STATUS_GOOD 0x00
#define LEO_STATUS_CHECK_CONDITION 0x02
#define LEO_STATUS_BUSY 0x08
/*-----------------------------------*/
/* SENSE CODE */
/*-----------------------------------*/
#define LEO_SENSE_NO_ADDITIONAL_SENSE_INFOMATION 00
#define LEO_SENSE_DRIVE_NOT_READY 01
#define LEO_SENSE_DIAGNOSTIC_FAILURE 02
#define LEO_SENSE_COMMAND_PHASE_ERROR 03
#define LEO_SENSE_DATA_PHASE_ERROR 04
#define LEO_SENSE_REAL_TIME_CLOCK_FAILURE 05
#define LEO_SENSE_INCOMPATIBLE_MEDIUM_INSTALLED 11
#define LEO_SENSE_UNKNOWN_FORMAT 11
#define LEO_SENSE_NO_SEEK_COMPLETE 21
#define LEO_SENSE_WRITE_FAULT 22
#define LEO_SENSE_UNRECOVERED_READ_ERROR 23
#define LEO_SENSE_NO_REFERENCE_POSITION_FOUND 24
#define LEO_SENSE_TRACK_FOLLOWING_ERROR 25
#define LEO_SENSE_TRACKING_OR_SPDL_SERVO_FAILURE 25
#define LEO_SENSE_INVALID_COMMAND_OPERATION_CODE 31
#define LEO_SENSE_LBA_OUT_OF_RANGE 32
#define LEO_SENSE_WRITE_PROTECT_ERROR 33
#define LEO_SENSE_COMMAND_TERMINATED 34
#define LEO_SENSE_QUEUE_FULL 35
#define LEO_SENSE_ILLEGAL_TIMER_VALUE 36
#define LEO_SENSE_WAITING_NMI 37
#define LEO_SENSE_DEVICE_COMMUNICATION_FAILURE 41
#define LEO_SENSE_MEDIUM_NOT_PRESENT 42
#define LEO_SENSE_POWERONRESET_DEVICERESET_OCCURED 43
#define LEO_SENSE_MEDIUM_MAY_HAVE_CHANGED 47
#define LEO_SENSE_EJECTED_ILLEGALLY_RESUME 49
/*-----------------------------------*/
/* Command Block Header */
/*-----------------------------------*/
typedef struct{
u8 command;
u8 reserve1;
u8 control;
u8 reserve3;
u8 status;
u8 sense;
u8 reserve6;
u8 reserve7;
OSMesgQueue *post;
} LEOCmdHeader;
/*-----------------------------------*/
/* CLEAR QUEUE(01H) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
} LEOCmdClearQue;
/*-----------------------------------*/
/* INQUIRY(02H) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
u8 dev_type;
u8 version;
u8 dev_num;
u8 leo_bios_ver;
u32 reserve5;
} LEOCmdInquiry;
/*-----------------------------------*/
/* TEST UNIT READY(03H) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
u8 test;
u8 reserve2;
u8 reserve3;
u8 reserve4;
} LEOCmdTestUnitReady;
/*-----------------------------------*/
/* REZERO(04H) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
} LEOCmdRezero;
/*-----------------------------------*/
/* READ(05H) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
u32 lba;
u32 xfer_blks;
void *buff_ptr;
u32 rw_bytes;
} LEOCmdRead;
/*-----------------------------------*/
/* WRITE(06H) command */
/*-----------------------------------*/
typedef LEOCmdRead LEOCmdWrite;
/*-----------------------------------*/
/* SEEK(07H) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
u32 lba;
} LEOCmdSeek;
/*-----------------------------------*/
/* START/STOP(08H) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
} LEOCmdStartStop;
/*-----------------------------------*/
/* READ CAPACITY(09H) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
u32 start_lba;
u32 end_lba;
u32 capa_bytes;
} LEOCmdReadCapacity;
/*-----------------------------------*/
/* TRANSLATE(0AH) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
u32 start_lba;
u32 in_param;
u32 out_param;
} LEOCmdTranslate;
/*-----------------------------------*/
/* MODE SELECT(0BH) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
u8 page_code;
u8 reserve1;
u8 standby_time;
u8 sleep_time;
u8 led_on_time;
u8 led_off_time;
u8 reserve18;
u8 reserve19;
} LEOCmdModeSelect;
/*-----------------------------------*/
/* READ DISK ID(0CH) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
void *buffer_pointer;
} LEOCmdReadDiskId;
/*-----------------------------------*/
/* READ TIMER(0DH) command */
/*-----------------------------------*/
typedef struct {
LEOCmdHeader header;
u8 reserve12;
u8 reserve13;
u8 year;
u8 month;
u8 day;
u8 hour;
u8 minute;
u8 second;
} LEOCmdReadTimer;
/*-----------------------------------*/
/* SET TIMER(0EH) command */
/*-----------------------------------*/
typedef LEOCmdReadTimer LEOCmdSetTimer;
/*-------end of leoappli.h--------------------------*/
-972
View File
@@ -1,972 +0,0 @@
/*====================================================================
* libaudio.h
*
* Copyright 1993, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/**************************************************************************
*
* $Revision: 1.173 $
* $Date: 1997/12/01 12:42:21 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/libaudio.h,v $
*
**************************************************************************/
#ifndef __LIB_AUDIO__
#define __LIB_AUDIO__
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include <PR/mbi.h>
/***********************************************************************
* misc defines
***********************************************************************/
#ifndef _EMULATOR
# ifdef AUD_PROFILE
#define PROFILE_AUD(num, cnt, max, min) \
{ \
u32 currCnt = osGetCount(); \
currCnt -= lastCnt[cnt_index]; \
cnt_index--; \
cnt += currCnt; \
num++; \
\
if ( currCnt > max ) max = currCnt; \
if ( currCnt < min ) min = currCnt; \
}
# endif /* AUD_PROFILE */
#endif /* EMULATOR */
#ifndef NULL
#define NULL 0
#endif
#define AL_FX_BUFFER_SIZE 8192
#define AL_FRAME_INIT -1
#define AL_USEC_PER_FRAME 16000
#define AL_MAX_PRIORITY 127
#define AL_GAIN_CHANGE_TIME 1000
typedef s32 ALMicroTime;
typedef u8 ALPan;
#define AL_PAN_CENTER 64
#define AL_PAN_LEFT 0
#define AL_PAN_RIGHT 127
#define AL_VOL_FULL 127
#define AL_KEY_MIN 0
#define AL_KEY_MAX 127
#define AL_DEFAULT_FXMIX 0
#define AL_SUSTAIN 63
/***********************************************************************
* Error handling
***********************************************************************/
#ifdef _DEBUG
#define ALFailIf(condition, error) \
if (condition) { \
__osError(error, 0); \
return; }
#else
#define ALFailIf(condition, error) \
if (condition) { \
return; }
#endif
#ifdef _DEBUG
#define ALFlagFailIf(condition, flag, error) \
if (condition) { \
if(flag) __osError(error, 0); \
return; }
#else
#define ALFlagFailIf(condition, flag, error) \
if (condition) { \
return; }
#endif
/***********************************************************************
* Audio Library global routines
***********************************************************************/
typedef struct ALLink_s {
struct ALLink_s *next;
struct ALLink_s *prev;
} ALLink;
void alUnlink(ALLink *element);
void alLink(ALLink *element, ALLink *after);
typedef s32 (*ALDMAproc)(s32 addr, s32 len, void *state);
typedef ALDMAproc (*ALDMANew)(void *state);
void alCopy(void *src, void *dest, s32 len);
typedef struct {
u8 *base;
u8 *cur;
s32 len;
s32 count;
} ALHeap;
#define AL_HEAP_DEBUG 1
#define AL_HEAP_MAGIC 0x20736a73
#define AL_HEAP_INIT 0
void alHeapInit(ALHeap *hp, u8 *base, s32 len);
void *alHeapDBAlloc(u8 *file, s32 line, ALHeap *hp, s32 num, s32 size);
s32 alHeapCheck(ALHeap *hp);
#ifdef _DEBUG
#define alHeapAlloc(hp, elem ,size) alHeapDBAlloc((u8 *) __FILE__,__LINE__,(hp),(elem),(size))
#else
#define alHeapAlloc(hp, elem ,size) alHeapDBAlloc(0, 0,(hp),(elem),(size))
#endif
/***********************************************************************
* FX Stuff
***********************************************************************/
#define AL_FX_NONE 0
#define AL_FX_SMALLROOM 1
#define AL_FX_BIGROOM 2
#define AL_FX_CHORUS 3
#define AL_FX_FLANGE 4
#define AL_FX_ECHO 5
#define AL_FX_CUSTOM 6
typedef u8 ALFxId;
typedef void *ALFxRef;
/***********************************************************************
* data structures for sound banks
***********************************************************************/
#define AL_BANK_VERSION 0x4231 /* 'B1' */
/* Possible wavetable types */
enum {AL_ADPCM_WAVE = 0,
AL_RAW16_WAVE};
typedef struct {
s32 order;
s32 npredictors;
s16 book[1]; /* Actually variable size. Must be 8-byte aligned */
} ALADPCMBook;
typedef struct {
u32 start;
u32 end;
u32 count;
ADPCM_STATE state;
} ALADPCMloop;
typedef struct {
u32 start;
u32 end;
u32 count;
} ALRawLoop;
typedef struct {
ALMicroTime attackTime;
ALMicroTime decayTime;
ALMicroTime releaseTime;
u8 attackVolume;
u8 decayVolume;
} ALEnvelope;
typedef struct {
u8 velocityMin;
u8 velocityMax;
u8 keyMin;
u8 keyMax;
u8 keyBase;
s8 detune;
} ALKeyMap;
typedef struct {
ALADPCMloop *loop;
ALADPCMBook *book;
} ALADPCMWaveInfo;
typedef struct {
ALRawLoop *loop;
} ALRAWWaveInfo;
typedef struct ALWaveTable_s {
u8 *base; /* ptr to start of wave data */
s32 len; /* length of data in bytes */
u8 type; /* compression type */
u8 flags; /* offset/address flags */
union {
ALADPCMWaveInfo adpcmWave;
ALRAWWaveInfo rawWave;
} waveInfo;
} ALWaveTable;
typedef struct ALSound_s {
ALEnvelope *envelope;
ALKeyMap *keyMap;
ALWaveTable *wavetable; /* offset to wavetable struct */
ALPan samplePan;
u8 sampleVolume;
u8 flags;
} ALSound;
typedef struct {
u8 volume; /* overall volume for this instrument */
ALPan pan; /* 0 = hard left, 127 = hard right */
u8 priority; /* voice priority for this instrument */
u8 flags;
u8 tremType; /* the type of tremelo osc. to use */
u8 tremRate; /* the rate of the tremelo osc. */
u8 tremDepth; /* the depth of the tremelo osc */
u8 tremDelay; /* the delay for the tremelo osc */
u8 vibType; /* the type of tremelo osc. to use */
u8 vibRate; /* the rate of the tremelo osc. */
u8 vibDepth; /* the depth of the tremelo osc */
u8 vibDelay; /* the delay for the tremelo osc */
s16 bendRange; /* pitch bend range in cents */
s16 soundCount; /* number of sounds in this array */
ALSound *soundArray[1];
} ALInstrument;
typedef struct ALBank_s {
s16 instCount; /* number of programs in this bank */
u8 flags;
u8 pad;
s32 sampleRate; /* e.g. 44100, 22050, etc... */
ALInstrument *percussion; /* default percussion for GM */
ALInstrument *instArray[1]; /* ARRAY of instruments */
} ALBank;
typedef struct { /* Note: sizeof won't be correct */
s16 revision; /* format revision of this file */
s16 bankCount; /* number of banks */
ALBank *bankArray[1]; /* ARRAY of bank offsets */
} ALBankFile;
void alBnkfNew(ALBankFile *f, u8 *table);
/***********************************************************************
* Sequence Files
***********************************************************************/
#define AL_SEQBANK_VERSION 'S1'
typedef struct {
u8 *offset;
s32 len;
} ALSeqData;
typedef struct { /* Note: sizeof won't be correct */
s16 revision; /* format revision of this file */
s16 seqCount; /* number of sequences */
ALSeqData seqArray[1]; /* ARRAY of sequence info */
} ALSeqFile;
void alSeqFileNew(ALSeqFile *f, u8 *base);
/***********************************************************************
* Synthesis driver stuff
***********************************************************************/
typedef ALMicroTime (*ALVoiceHandler)(void *);
typedef struct {
s32 maxVVoices; /* obsolete */
s32 maxPVoices;
s32 maxUpdates;
s32 maxFXbusses;
void *dmaproc;
ALHeap *heap;
s32 outputRate; /* output sample rate */
ALFxId fxType;
s32 *params;
} ALSynConfig;
typedef struct ALPlayer_s {
struct ALPlayer_s *next;
void *clientData; /* storage for client callback */
ALVoiceHandler handler; /* voice handler for player */
ALMicroTime callTime; /* usec requested callback */
s32 samplesLeft; /* usec remaining to callback */
} ALPlayer;
typedef struct ALVoice_s {
ALLink node;
struct PVoice_s *pvoice;
ALWaveTable *table;
void *clientPrivate;
s16 state;
s16 priority;
s16 fxBus;
s16 unityPitch;
} ALVoice;
typedef struct ALVoiceConfig_s {
s16 priority; /* voice priority */
s16 fxBus; /* bus assignment */
u8 unityPitch; /* unity pitch flag */
} ALVoiceConfig;
typedef struct {
ALPlayer *head; /* client list head */
ALLink pFreeList; /* list of free physical voices */
ALLink pAllocList; /* list of allocated physical voices */
ALLink pLameList; /* list of voices ready to be freed */
s32 paramSamples;
s32 curSamples; /* samples from start of game */
ALDMANew dma;
ALHeap *heap;
struct ALParam_s *paramList;
struct ALMainBus_s *mainBus;
struct ALAuxBus_s *auxBus; /* ptr to array of aux bus structs */
struct ALFilter_s *outputFilter; /* last filter in the filter chain */
s32 numPVoices;
s32 maxAuxBusses;
s32 outputRate; /* output sample rate */
s32 maxOutSamples; /* Maximum samples rsp can generate
at one time at output rate */
} ALSynth;
void alSynNew(ALSynth *s, ALSynConfig *config);
void alSynDelete(ALSynth *s);
void alSynAddPlayer(ALSynth *s, ALPlayer *client);
void alSynRemovePlayer(ALSynth *s, ALPlayer *client);
s32 alSynAllocVoice(ALSynth *s, ALVoice *v, ALVoiceConfig *vc);
void alSynFreeVoice(ALSynth *s, ALVoice *voice);
void alSynStartVoice(ALSynth *s, ALVoice *voice, ALWaveTable *w);
void alSynStartVoiceParams(ALSynth *s, ALVoice *voice, ALWaveTable *w,
f32 pitch, s16 vol, ALPan pan, u8 fxmix,
ALMicroTime t);
void alSynStopVoice(ALSynth *s, ALVoice *voice);
void alSynSetVol(ALSynth *s, ALVoice *v, s16 vol, ALMicroTime delta);
void alSynSetPitch(ALSynth *s, ALVoice *voice, f32 ratio);
void alSynSetPan(ALSynth *s, ALVoice *voice, ALPan pan);
void alSynSetFXMix(ALSynth *s, ALVoice *voice, u8 fxmix);
void alSynSetPriority(ALSynth *s, ALVoice *voice, s16 priority);
s16 alSynGetPriority(ALSynth *s, ALVoice *voice);
ALFxRef *alSynAllocFX(ALSynth *s, s16 bus, ALSynConfig *c, ALHeap *hp);
ALFxRef alSynGetFXRef(ALSynth *s, s16 bus, s16 index);
void alSynFreeFX(ALSynth *s, ALFxRef *fx);
void alSynSetFXParam(ALSynth *s, ALFxRef fx, s16 paramID, void *param);
/***********************************************************************
* Audio Library (AL) stuff
***********************************************************************/
typedef struct {
ALSynth drvr;
} ALGlobals;
extern ALGlobals *alGlobals;
void alInit(ALGlobals *glob, ALSynConfig *c);
void alClose(ALGlobals *glob);
Acmd *alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen);
/***********************************************************************
* Sequence Player stuff
***********************************************************************/
/*
* Play states
*/
#define AL_STOPPED 0
#define AL_PLAYING 1
#define AL_STOPPING 2
#define AL_DEFAULT_PRIORITY 5
#define AL_DEFAULT_VOICE 0
#define AL_MAX_CHANNELS 16
/*
* Audio Library event type definitions
*/
enum ALMsg {
AL_SEQ_REF_EVT, /* Reference to a pending event in the sequence. */
AL_SEQ_MIDI_EVT,
AL_SEQP_MIDI_EVT,
AL_TEMPO_EVT,
AL_SEQ_END_EVT,
AL_NOTE_END_EVT,
AL_SEQP_ENV_EVT,
AL_SEQP_META_EVT,
AL_SEQP_PROG_EVT,
AL_SEQP_API_EVT,
AL_SEQP_VOL_EVT,
AL_SEQP_LOOP_EVT,
AL_SEQP_PRIORITY_EVT,
AL_SEQP_SEQ_EVT,
AL_SEQP_BANK_EVT,
AL_SEQP_PLAY_EVT,
AL_SEQP_STOP_EVT,
AL_SEQP_STOPPING_EVT,
AL_TRACK_END,
AL_CSP_LOOPSTART,
AL_CSP_LOOPEND,
AL_CSP_NOTEOFF_EVT,
AL_TREM_OSC_EVT,
AL_VIB_OSC_EVT,
AL_UNK18_EVT
};
/*
* Midi event definitions
*/
#define AL_EVTQ_END 0x7fffffff
enum AL_MIDIstatus {
/* For distinguishing channel number from status */
AL_MIDI_ChannelMask = 0x0F,
AL_MIDI_StatusMask = 0xF0,
/* Channel voice messages */
AL_MIDI_ChannelVoice = 0x80,
AL_MIDI_NoteOff = 0x80,
AL_MIDI_NoteOn = 0x90,
AL_MIDI_PolyKeyPressure = 0xA0,
AL_MIDI_ControlChange = 0xB0,
AL_MIDI_ChannelModeSelect = 0xB0,
AL_MIDI_ProgramChange = 0xC0,
AL_MIDI_ChannelPressure = 0xD0,
AL_MIDI_PitchBendChange = 0xE0,
/* System messages */
AL_MIDI_SysEx = 0xF0, /* System Exclusive */
/* System common */
AL_MIDI_SystemCommon = 0xF1,
AL_MIDI_TimeCodeQuarterFrame = 0xF1,
AL_MIDI_SongPositionPointer = 0xF2,
AL_MIDI_SongSelect = 0xF3,
AL_MIDI_Undefined1 = 0xF4,
AL_MIDI_Undefined2 = 0xF5,
AL_MIDI_TuneRequest = 0xF6,
AL_MIDI_EOX = 0xF7, /* End of System Exclusive */
/* System real time */
AL_MIDI_SystemRealTime = 0xF8,
AL_MIDI_TimingClock = 0xF8,
AL_MIDI_Undefined3 = 0xF9,
AL_MIDI_Start = 0xFA,
AL_MIDI_Continue = 0xFB,
AL_MIDI_Stop = 0xFC,
AL_MIDI_Undefined4 = 0xFD,
AL_MIDI_ActiveSensing = 0xFE,
AL_MIDI_SystemReset = 0xFF,
AL_MIDI_Meta = 0xFF /* MIDI Files only */
};
enum AL_MIDIctrl {
AL_MIDI_VOLUME_CTRL = 0x07,
AL_MIDI_PAN_CTRL = 0x0A,
AL_MIDI_PRIORITY_CTRL = 0x10, /* use general purpose controller for priority */
AL_MIDI_FX_CTRL_0 = 0x14,
AL_MIDI_FX_CTRL_1 = 0x15,
AL_MIDI_FX_CTRL_2 = 0x16,
AL_MIDI_FX_CTRL_3 = 0x17,
AL_MIDI_FX_CTRL_4 = 0x18,
AL_MIDI_FX_CTRL_5 = 0x19,
AL_MIDI_FX_CTRL_6 = 0x1A,
AL_MIDI_FX_CTRL_7 = 0x1B,
AL_MIDI_FX_CTRL_8 = 0x1C,
AL_MIDI_FX_CTRL_9 = 0x1D,
AL_MIDI_SUSTAIN_CTRL = 0x40,
AL_MIDI_FX1_CTRL = 0x5B,
AL_MIDI_FX3_CTRL = 0x5D
};
enum AL_MIDImeta {
AL_MIDI_META_TEMPO = 0x51,
AL_MIDI_META_EOT = 0x2f
};
#define AL_CMIDI_BLOCK_CODE 0xFE
#define AL_CMIDI_LOOPSTART_CODE 0x2E
#define AL_CMIDI_LOOPEND_CODE 0x2D
#define AL_CMIDI_CNTRL_LOOPSTART 102
#define AL_CMIDI_CNTRL_LOOPEND 103
#define AL_CMIDI_CNTRL_LOOPCOUNT_SM 104
#define AL_CMIDI_CNTRL_LOOPCOUNT_BIG 105
typedef struct {
u8 *curPtr; /* ptr to the next event */
s32 lastTicks; /* sequence clock ticks (used by alSeqSetLoc) */
s32 curTicks; /* sequence clock ticks of next event (used by loop end test) */
s16 lastStatus; /* the last status msg */
} ALSeqMarker;
typedef struct {
s32 ticks; /* MIDI, Tempo and End events must start with ticks */
u8 status;
u8 byte1;
u8 byte2;
u32 duration;
} ALMIDIEvent;
typedef struct {
s32 ticks;
u8 status;
u8 type;
u8 len;
u8 byte1;
u8 byte2;
u8 byte3;
} ALTempoEvent;
typedef struct {
s32 ticks;
u8 status;
u8 type;
u8 len;
} ALEndEvent;
typedef struct {
struct ALVoice_s *voice;
} ALNoteEvent;
typedef struct {
struct ALVoice_s *voice;
ALMicroTime delta;
u8 vol;
} ALVolumeEvent;
typedef struct {
s16 vol;
} ALSeqpVolEvent;
typedef struct {
ALSeqMarker *start;
ALSeqMarker *end;
s32 count;
} ALSeqpLoopEvent;
typedef struct {
u8 chan;
u8 priority;
} ALSeqpPriorityEvent;
typedef struct {
void *seq; /* pointer to a seq (could be an ALSeq or an ALCSeq). */
} ALSeqpSeqEvent;
typedef struct {
ALBank *bank;
} ALSeqpBankEvent;
typedef struct {
struct ALVoiceState_s *vs;
void *oscState;
u8 chan;
} ALOscEvent;
typedef struct {
float unk0;
float unk4;
} ALUnk18Event;
typedef struct {
struct struct_81_s * unk0;
s32 unk4;
} ALUnk_Core1_3A70_Event;
typedef struct {
ALVoice voice;
ALSound *sound; /* sound referenced here */
s16 priority;
f32 pitch; /* current playback pitch */
s32 state; /* play state for this sound */
s16 vol; /* volume - combined with volume from bank */
ALPan pan; /* pan - 0 = left, 127 = right */
u8 fxMix; /* wet/dry mix - 0 = dry, 127 = wet */
} ALSoundState;
typedef struct {
s16 type;
union {
ALMIDIEvent midi;
ALTempoEvent tempo;
ALEndEvent end;
ALNoteEvent note;
ALVolumeEvent vol;
ALSeqpLoopEvent loop;
ALSeqpVolEvent spvol;
ALSeqpPriorityEvent sppriority;
ALSeqpSeqEvent spseq;
ALSeqpBankEvent spbank;
ALOscEvent osc;
ALUnk18Event unk18;
ALUnk_Core1_3A70_Event unk3A70;
} msg;
} ALEvent;
typedef struct {
ALLink node;
ALMicroTime delta;
ALEvent evt;
} ALEventListItem;
typedef struct {
ALLink freeList;
ALLink allocList;
s32 eventCount;
} ALEventQueue;
void alEvtqNew(ALEventQueue *evtq, ALEventListItem *items,
s32 itemCount);
ALMicroTime alEvtqNextEvent(ALEventQueue *evtq, ALEvent *evt);
void alEvtqPostEvent(ALEventQueue *evtq, ALEvent *evt,
ALMicroTime delta);
void alEvtqFlush(ALEventQueue *evtq);
void alEvtqFlushType(ALEventQueue *evtq, s16 type);
#define AL_PHASE_ATTACK 0
#define AL_PHASE_NOTEON 0
#define AL_PHASE_DECAY 1
#define AL_PHASE_SUSTAIN 2
#define AL_PHASE_RELEASE 3
#define AL_PHASE_SUSTREL 4
typedef struct ALVoiceState_s {
struct ALVoiceState_s *next;/* MUST be first */
ALVoice voice;
ALSound *sound;
ALMicroTime envEndTime; /* time of envelope segment end */
f32 pitch; /* currect pitch ratio */
f32 vibrato; /* current value of the vibrato */
u8 envGain; /* current envelope gain */
u8 channel; /* channel assignment */
u8 key; /* note on key number */
u8 velocity; /* note on velocity */
u8 envPhase; /* what envelope phase */
u8 phase;
u8 tremelo; /* current value of the tremelo */
u8 flags; /* bit 0 tremelo flag
bit 1 vibrato flag */
} ALVoiceState;
typedef struct {
ALInstrument *instrument; /* instrument assigned to this chan */
s16 bendRange; /* pitch bend range in cents */
ALFxId fxId; /* type of fx assigned to this chan */
ALPan pan; /* overall pan for this chan */
u8 priority; /* priority for this chan */
u8 vol; /* current volume for this chan */
u8 unkA;
u8 fxmix; /* current fx mix for this chan */
u8 sustain; /* current sustain pedal state */
f32 pitchBend; /* current pitch bend val in cents */
} ALChanState;
typedef struct ALSeq_s {
u8 *base; /* ptr to start of sequence file */
u8 *trackStart; /* ptr to first MIDI event */
u8 *curPtr; /* ptr to next event to read */
s32 lastTicks; /* MIDI ticks for last event */
s32 len; /* length of sequence in bytes */
f32 qnpt; /* qrter notes / tick (1/division) */
s16 division; /* ticks per quarter note */
s16 lastStatus; /* for running status */
} ALSeq;
typedef struct {
u32 trackOffset[16];
u32 division;
} ALCMidiHdr;
typedef struct ALCSeq_s {
ALCMidiHdr *base; /* ptr to start of sequence file */
u32 validTracks; /* set of flags, showing valid tracks */
f32 qnpt; /* qrter notes / tick (1/division) */
u32 lastTicks; /* keep track of ticks incase app wants */
u32 lastDeltaTicks; /* number of delta ticks of last event */
u32 deltaFlag; /* flag: set if delta's not subtracted */
u8 *curLoc[16]; /* ptr to current track location, */
/* may point to next event, or may point */
/* to a backup code */
u8 *curBUPtr[16]; /* ptr to next event if in backup mode */
u8 curBULen[16]; /* if > 0, then in backup mode */
u8 lastStatus[16]; /* for running status */
u32 evtDeltaTicks[16]; /* delta time to next event */
} ALCSeq;
typedef struct {
u32 validTracks;
s32 lastTicks;
u32 lastDeltaTicks;
u8 *curLoc[16];
u8 *curBUPtr[16];
u8 curBULen[16];
u8 lastStatus[16];
u32 evtDeltaTicks[16];
} ALCSeqMarker;
#define NO_SOUND_ERR_MASK 0x01
#define NOTE_OFF_ERR_MASK 0x02
#define NO_VOICE_ERR_MASK 0x04
typedef struct {
s32 maxVoices; /* max number of voices to alloc */
s32 maxEvents; /* max internal events to support */
u8 maxChannels; /* max MIDI channels to support (16)*/
u8 debugFlags; /* control which error get reported */
ALHeap *heap; /* ptr to initialized heap */
void *initOsc;
void *updateOsc;
void *stopOsc;
} ALSeqpConfig;
typedef ALMicroTime (*ALOscInit)(void **oscState,f32 *initVal, u8 oscType,
u8 oscRate, u8 oscDepth, u8 oscDelay);
typedef ALMicroTime (*ALOscUpdate)(void *oscState, f32 *updateVal);
typedef void (*ALOscStop)(void *oscState);
typedef struct {
ALPlayer node; /* note: must be first in structure */
ALSynth *drvr; /* reference to the client driver */
ALSeq *target; /* current sequence */
ALMicroTime curTime;
ALBank *bank; /* current ALBank */
s32 uspt; /* microseconds per tick */
s32 nextDelta; /* microseconds to next callback */
s32 state;
u16 chanMask; /* active channels */
s16 vol; /* overall sequence volume */
u8 maxChannels; /* number of MIDI channels */
u8 debugFlags; /* control which error get reported */
ALEvent nextEvent;
ALEventQueue evtq;
ALMicroTime frameTime;
ALChanState *chanState; /* 16 channels for MIDI */
ALVoiceState *vAllocHead; /* list head for allocated voices */
ALVoiceState *vAllocTail; /* list tail for allocated voices */
ALVoiceState *vFreeList; /* list of free voice state structs */
ALOscInit initOsc;
ALOscUpdate updateOsc;
ALOscStop stopOsc;
ALSeqMarker *loopStart;
ALSeqMarker *loopEnd;
s32 loopCount; /* -1 = loop forever, 0 = no loop */
} ALSeqPlayer;
typedef struct {
ALPlayer node; /* note: must be first in structure */
ALSynth *drvr; /* reference to the client driver */
ALCSeq *target; /* current sequence */
ALMicroTime curTime;
ALBank *bank; /* current ALBank */
s32 uspt; /* microseconds per tick */
s32 nextDelta; /* microseconds to next callback */
s32 state;
u16 chanMask; /* active channels */
s16 vol; /* overall sequence volume */
u8 maxChannels; /* number of MIDI channels */
u8 debugFlags; /* control which error get reported */
ALEvent nextEvent;
ALEventQueue evtq;
ALMicroTime frameTime;
ALChanState *chanState; /* 16 channels for MIDI */
ALVoiceState *vAllocHead; /* list head for allocated voices */
ALVoiceState *vAllocTail; /* list tail for allocated voices */
ALVoiceState *vFreeList; /* list of free voice state structs */
ALOscInit initOsc;
ALOscUpdate updateOsc;
ALOscStop stopOsc;
} ALCSPlayer;
/*
* Sequence data representation routines
*/
void alSeqNew(ALSeq *seq, u8 *ptr, s32 len);
void alSeqNextEvent(ALSeq *seq, ALEvent *event);
s32 alSeqGetTicks(ALSeq *seq);
f32 alSeqTicksToSec(ALSeq *seq, s32 ticks, u32 tempo);
u32 alSeqSecToTicks(ALSeq *seq, f32 sec, u32 tempo);
void alSeqNewMarker(ALSeq *seq, ALSeqMarker *m, u32 ticks);
void alSeqSetLoc(ALSeq *seq, ALSeqMarker *marker);
void alSeqGetLoc(ALSeq *seq, ALSeqMarker *marker);
/*
* Compact Sequence data representation routines
*/
void alCSeqNew(ALCSeq *seq, u8 *ptr);
void alCSeqNextEvent(ALCSeq *seq,ALEvent *evt);
s32 alCSeqGetTicks(ALCSeq *seq);
f32 alCSeqTicksToSec(ALCSeq *seq, s32 ticks, u32 tempo);
u32 alCSeqSecToTicks(ALCSeq *seq, f32 sec, u32 tempo);
void alCSeqNewMarker(ALCSeq *seq, ALCSeqMarker *m, u32 ticks);
void alCSeqSetLoc(ALCSeq *seq, ALCSeqMarker *marker);
void alCSeqGetLoc(ALCSeq *seq, ALCSeqMarker *marker);
/*
* Sequence Player routines
*/
f32 alCents2Ratio(s32 cents);
void alSeqpNew(ALSeqPlayer *seqp, ALSeqpConfig *config);
void alSeqpDelete(ALSeqPlayer *seqp);
void alSeqpSetSeq(ALSeqPlayer *seqp, ALSeq *seq);
ALSeq *alSeqpGetSeq(ALSeqPlayer *seqp);
void alSeqpPlay(ALSeqPlayer *seqp);
void alSeqpStop(ALSeqPlayer *seqp);
s32 alSeqpGetState(ALSeqPlayer *seqp);
void alSeqpSetBank(ALSeqPlayer *seqp, ALBank *b);
void alSeqpSetTempo(ALSeqPlayer *seqp, s32 tempo);
s32 alSeqpGetTempo(ALSeqPlayer *seqp);
s16 alSeqpGetVol(ALSeqPlayer *seqp); /* Master volume control */
void alSeqpSetVol(ALSeqPlayer *seqp, s16 vol);
void alSeqpLoop(ALSeqPlayer *seqp, ALSeqMarker *start, ALSeqMarker *end, s32 count);
void alSeqpSetChlProgram(ALSeqPlayer *seqp, u8 chan, u8 prog);
s32 alSeqpGetChlProgram(ALSeqPlayer *seqp, u8 chan);
void alSeqpSetChlFXMix(ALSeqPlayer *seqp, u8 chan, u8 fxmix);
u8 alSeqpGetChlFXMix(ALSeqPlayer *seqp, u8 chan);
void alSeqpSetChlVol(ALSeqPlayer *seqp, u8 chan, u8 vol);
u8 alSeqpGetChlVol(ALSeqPlayer *seqp, u8 chan);
void alSeqpSetChlPan(ALSeqPlayer *seqp, u8 chan, ALPan pan);
ALPan alSeqpGetChlPan(ALSeqPlayer *seqp, u8 chan);
void alSeqpSetChlPriority(ALSeqPlayer *seqp, u8 chan, u8 priority);
u8 alSeqpGetChlPriority(ALSeqPlayer *seqp, u8 chan);
void alSeqpSendMidi(ALSeqPlayer *seqp, s32 ticks, u8 status, u8 byte1, u8 byte2);
/* Maintain backwards compatibility with old routine names. */
#define alSeqpSetProgram alSeqpSetChlProgram
#define alSeqpGetProgram alSeqpGetChlProgram
#define alSeqpSetFXMix alSeqpSetChlFXMix
#define alSeqpGetFXMix alSeqpGetChlFXMix
#define alSeqpSetPan alSeqpSetChlPan
#define alSeqpGetPan alSeqpGetChlPan
#define alSeqpSetChannelPriority alSeqpSetChlPriority
#define alSeqpGetChannelPriority alSeqpGetChlPriority
/*
* Compressed Sequence Player routines
*/
void alCSPNew(ALCSPlayer *seqp, ALSeqpConfig *config);
void alCSPDelete(ALCSPlayer *seqp);
void alCSPSetSeq(ALCSPlayer *seqp, ALCSeq *seq);
ALCSeq *alCSPGetSeq(ALCSPlayer *seqp);
void alCSPPlay(ALCSPlayer *seqp);
void alCSPStop(ALCSPlayer *seqp);
s32 alCSPGetState(ALCSPlayer *seqp);
void alCSPSetBank(ALCSPlayer *seqp, ALBank *b);
void alCSPSetTempo(ALCSPlayer *seqp, s32 tempo);
s32 alCSPGetTempo(ALCSPlayer *seqp);
s16 alCSPGetVol(ALCSPlayer *seqp);
void alCSPSetVol(ALCSPlayer *seqp, s16 vol);
void alCSPSetChlProgram(ALCSPlayer *seqp, u8 chan, u8 prog);
s32 alCSPGetChlProgram(ALCSPlayer *seqp, u8 chan);
void alCSPSetChlFXMix(ALCSPlayer *seqp, u8 chan, u8 fxmix);
u8 alCSPGetChlFXMix(ALCSPlayer *seqp, u8 chan);
void alCSPSetChlPan(ALCSPlayer *seqp, u8 chan, ALPan pan);
ALPan alCSPGetChlPan(ALCSPlayer *seqp, u8 chan);
void alCSPSetChlVol(ALCSPlayer *seqp, u8 chan, u8 vol);
u8 alCSPGetChlVol(ALCSPlayer *seqp, u8 chan);
void alCSPSetChlPriority(ALCSPlayer *seqp, u8 chan, u8 priority);
u8 alCSPGetChlPriority(ALCSPlayer *seqp, u8 chan);
void alCSPSendMidi(ALCSPlayer *seqp, s32 ticks, u8 status,
u8 byte1, u8 byte2);
/* Maintain backwards compatibility with old routine names. */
#define alCSPSetProgram alCSPSetChlProgram
#define alCSPGetProgram alCSPGetChlProgram
#define alCSPSetFXMix alCSPSetChlFXMix
#define alCSPGetFXMix alCSPGetChlFXMix
#define alCSPSetPan alCSPSetChlPan
#define alCSPGetPan alCSPGetChlPan
#define alCSPSetChannelPriority alCSPSetChlPriority
#define alCSPGetChannelPriority alCSPGetChlPriority
/***********************************************************************
* Sound Player stuff
***********************************************************************/
typedef struct {
s32 maxSounds;
s32 maxEvents;
ALHeap *heap;
} ALSndpConfig;
typedef struct {
ALPlayer node; /* note: must be first in structure */
ALEventQueue evtq;
ALEvent nextEvent;
ALSynth *drvr; /* reference to the client driver */
s32 target;
void *sndState;
s32 maxSounds;
ALMicroTime frameTime;
ALMicroTime nextDelta; /* microseconds to next callback */
ALMicroTime curTime;
} ALSndPlayer;
typedef s16 ALSndId;
void alSndpNew(ALSndPlayer *sndp, ALSndpConfig *c);
void alSndpDelete(ALSndPlayer *sndp);
ALSndId alSndpAllocate(ALSndPlayer *sndp, ALSound *sound);
void alSndpDeallocate(ALSndPlayer *sndp, ALSndId id);
void alSndpSetSound(ALSndPlayer *sndp, ALSndId id);
ALSndId alSndpGetSound(ALSndPlayer *sndp);
void alSndpPlay(ALSndPlayer *sndp);
void alSndpPlayAt(ALSndPlayer *sndp, ALMicroTime delta);
void alSndpStop(ALSndPlayer *sndp);
void alSndpSetVol(ALSndPlayer *sndp, s16 vol);
void alSndpSetPitch(ALSndPlayer *sndp, f32 pitch);
void alSndpSetPan(ALSndPlayer *sndp, ALPan pan);
void alSndpSetPriority(ALSndPlayer *sndp, ALSndId id, u8 priority);
void alSndpSetFXMix(ALSndPlayer *sndp, u8 mix);
s32 alSndpGetState(ALSndPlayer *sndp);
#ifndef _FINALROM
void alParseAbiCL(Acmd *cmdList, u32 nbytes);
#endif
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !__LIB_AUDIO__ */
-100
View File
@@ -1,100 +0,0 @@
#ifndef _MBI_H_
#define _MBI_H_
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.136 $
* $Date: 1999/01/05 13:04:00 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/mbi.h,v $
*
**************************************************************************/
/*
* Header file for the Media Binary Interface
*
* NOTE: This file is included by the RSP microcode, so any C-specific
* constructs must be bracketed by #ifdef _LANGUAGE_C
*
*/
/*
* the SHIFT macros are used to build display list commands, inserting
* bit-fields into a 32-bit word. They take a value, a shift amount,
* and a width.
*
* For the left shift, the lower bits of the value are masked,
* then shifted left.
*
* For the right shift, the value is shifted right, then the lower bits
* are masked.
*
* (NOTE: _SHIFTL(v, 0, 32) won't work, just use an assignment)
*
*/
#define _SHIFTL(v, s, w) \
((unsigned int) (((unsigned int)(v) & ((0x01 << (w)) - 1)) << (s)))
#define _SHIFTR(v, s, w) \
((unsigned int)(((unsigned int)(v) >> (s)) & ((0x01 << (w)) - 1)))
#define _SHIFT _SHIFTL /* old, for compatibility only */
#define G_ON (1)
#define G_OFF (0)
/**************************************************************************
*
* Graphics Binary Interface
*
**************************************************************************/
#include <PR/gbi.h>
/**************************************************************************
*
* Audio Binary Interface
*
**************************************************************************/
#include <PR/abi.h>
/**************************************************************************
*
* Task list
*
**************************************************************************/
#define M_GFXTASK 1
#define M_AUDTASK 2
#define M_VIDTASK 3
#define M_HVQTASK 6
#define M_HVQMTASK 7
/**************************************************************************
*
* Segment macros and definitions
*
**************************************************************************/
#define NUM_SEGMENTS (16)
#define SEGMENT_OFFSET(a) ((unsigned int)(a) & 0x00ffffff)
#define SEGMENT_NUMBER(a) (((unsigned int)(a) << 4) >> 28)
#define SEGMENT_ADDR(num, off) (((num) << 24) + (off))
#ifndef NULL
#define NULL 0
#endif
#endif /* !_MBI_H_ */
-108
View File
@@ -1,108 +0,0 @@
/*====================================================================
* os.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os.h,v $
$Revision: 1.168 $
$Date: 2000/06/15 06:24:52 $
*---------------------------------------------------------------------*/
#ifndef _OS_H_
#define _OS_H_
#include <PR/os_thread.h>
#include <PR/os_message.h>
#include <PR/os_exception.h>
#include <PR/os_tlb.h>
#include <PR/os_pi.h>
#include <PR/os_vi.h>
#include <PR/os_ai.h>
#include <PR/os_si.h>
#include <PR/os_time.h>
#include <PR/os_cont.h>
#include <PR/os_pfs.h>
#include <PR/os_gbpak.h>
#include <PR/os_voice.h>
#include <PR/os_cache.h>
#include <PR/os_debug.h>
#include <PR/os_error.h>
#include <PR/os_gio.h>
#include <PR/os_reg.h>
#include <PR/os_system.h>
#include <PR/os_eeprom.h>
#include <PR/os_flash.h>
#include <PR/os_host.h>
#include <PR/os_convert.h>
#include <PR/os_rdp.h>
#include <PR/os_rsp.h>
#include <PR/os_motor.h>
#include <PR/os_libc.h>
#include <PR/os_version.h>
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
/**************************************************************************
*
* Global definitions
*
*/
/*
* Stack size for I/O device managers: PIM (PI Manager), VIM (VI Manager),
* SIM (SI Manager)
*
*/
#define OS_PIM_STACKSIZE 4096
#define OS_VIM_STACKSIZE 4096
#define OS_SIM_STACKSIZE 4096
#define OS_MIN_STACKSIZE 72
/*
* Leo Disk
*/
/* transfer mode */
#define LEO_BLOCK_MODE 1
#define LEO_TRACK_MODE 2
#define LEO_SECTOR_MODE 3
/*
* Boot addresses
*/
#define BOOT_ADDRESS_ULTRA 0x80000400
#define BOOT_ADDRESS_COSIM 0x80002000
#define BOOT_ADDRESS_EMU 0x20010000
#define BOOT_ADDRESS_INDY 0x88100000
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_H */
-92
View File
@@ -1,92 +0,0 @@
/*====================================================================
* os_ai.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_ai.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:04 $
*---------------------------------------------------------------------*/
#ifndef _OS_AI_H_
#define _OS_AI_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Audio interface (Ai) */
extern u32 osAiGetStatus(void);
extern u32 osAiGetLength(void);
extern s32 osAiSetFrequency(u32);
extern s32 osAiSetNextBuffer(void *, u32);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_AI_H_ */
-96
View File
@@ -1,96 +0,0 @@
/*====================================================================
* os_cache.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_cache.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:04 $
*---------------------------------------------------------------------*/
#ifndef _OS_CACHE_H_
#define _OS_CACHE_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
#define OS_DCACHE_ROUNDUP_ADDR(x) (void *)(((((u32)(x)+0xf)/0x10)*0x10))
#define OS_DCACHE_ROUNDUP_SIZE(x) (u32)(((((u32)(x)+0xf)/0x10)*0x10))
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Cache operations and macros */
extern void osInvalDCache(void *, s32);
extern void osInvalICache(void *, s32);
extern void osWritebackDCache(void *, s32);
extern void osWritebackDCacheAll(void);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_CACHE_H_ */
-207
View File
@@ -1,207 +0,0 @@
/*====================================================================
* os_cont.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_cont.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:05 $
*---------------------------------------------------------------------*/
#ifndef _OS_CONT_H_
#define _OS_CONT_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include "os_message.h"
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
/*
* Structure for controllers
*/
typedef struct {
u16 type; /* Controller Type */
u8 status; /* Controller status */
u8 errno;
}OSContStatus;
typedef struct {
u16 button;
s8 stick_x; /* -80 <= stick_x <= 80 */
s8 stick_y; /* -80 <= stick_y <= 80 */
u8 errno;
} OSContPad;
typedef struct {
void *address; /* Ram pad Address: 11 bits */
u8 databuffer[32]; /* address of the data buffer */
u8 addressCrc; /* CRC code for address */
u8 dataCrc; /* CRC code for data */
u8 errno;
} OSContRamIo;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/*
* Controllers number
*/
#ifndef _HW_VERSION_1
#define MAXCONTROLLERS 4
#else
#define MAXCONTROLLERS 6
#endif
/* controller errors */
#define CONT_NO_RESPONSE_ERROR 0x8
#define CONT_OVERRUN_ERROR 0x4
#ifdef _HW_VERSION_1
#define CONT_FRAME_ERROR 0x2
#define CONT_COLLISION_ERROR 0x1
#endif
/* Controller type */
#define CONT_ABSOLUTE 0x0001
#define CONT_RELATIVE 0x0002
#define CONT_JOYPORT 0x0004
#define CONT_EEPROM 0x8000
#define CONT_EEP16K 0x4000
#define CONT_TYPE_MASK 0x1f07
#define CONT_TYPE_NORMAL 0x0005
#define CONT_TYPE_MOUSE 0x0002
#define CONT_TYPE_VOICE 0x0100
/* Controller status */
#define CONT_CARD_ON 0x01
#define CONT_CARD_PULL 0x02
#define CONT_ADDR_CRC_ER 0x04
#define CONT_EEPROM_BUSY 0x80
/* Buttons */
#define CONT_A 0x8000
#define CONT_B 0x4000
#define CONT_G 0x2000
#define CONT_START 0x1000
#define CONT_UP 0x0800
#define CONT_DOWN 0x0400
#define CONT_LEFT 0x0200
#define CONT_RIGHT 0x0100
#define CONT_L 0x0020
#define CONT_R 0x0010
#define CONT_E 0x0008
#define CONT_D 0x0004
#define CONT_C 0x0002
#define CONT_F 0x0001
/* Nintendo's official button names */
#define A_BUTTON CONT_A
#define B_BUTTON CONT_B
#define L_TRIG CONT_L
#define R_TRIG CONT_R
#define Z_TRIG CONT_G
#define START_BUTTON CONT_START
#define U_JPAD CONT_UP
#define L_JPAD CONT_LEFT
#define R_JPAD CONT_RIGHT
#define D_JPAD CONT_DOWN
#define U_CBUTTONS CONT_E
#define L_CBUTTONS CONT_C
#define R_CBUTTONS CONT_F
#define D_CBUTTONS CONT_D
/* Controller error number */
#define CONT_ERR_NO_CONTROLLER PFS_ERR_NOPACK /* 1 */
#define CONT_ERR_CONTRFAIL CONT_OVERRUN_ERROR /* 4 */
#define CONT_ERR_INVALID PFS_ERR_INVALID /* 5 */
#define CONT_ERR_DEVICE PFS_ERR_DEVICE /* 11 */
#define CONT_ERR_NOT_READY 12
#define CONT_ERR_VOICE_MEMORY 13
#define CONT_ERR_VOICE_WORD 14
#define CONT_ERR_VOICE_NO_RESPONSE 15
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Controller interface */
extern s32 osContInit(OSMesgQueue *, u8 *, OSContStatus *);
extern s32 osContReset(OSMesgQueue *, OSContStatus *);
extern s32 osContStartQuery(OSMesgQueue *);
extern s32 osContStartReadData(OSMesgQueue *);
#ifndef _HW_VERSION_1
extern s32 osContSetCh(u8);
#endif
extern void osContGetQuery(OSContStatus *);
extern void osContGetReadData(OSContPad *);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_CONT_H_ */
-111
View File
@@ -1,111 +0,0 @@
/*====================================================================
* os_convert.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_convert.h,v $
$Revision: 1.2 $
$Date: 1999/04/21 02:53:11 $
*---------------------------------------------------------------------*/
#ifndef _OS_CONVERT_H_
#define _OS_CONVERT_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#define OS_CLOCK_RATE 62500000LL
#define OS_CPU_COUNTER (OS_CLOCK_RATE*3/4)
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
#define OS_NSEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625000LL))/(1000000000LL/15625000LL))
#define OS_USEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625LL))/(1000000LL/15625LL))
#define OS_CYCLES_TO_NSEC(c) (((u64)(c)*(1000000000LL/15625000LL))/(OS_CPU_COUNTER/15625000LL))
#define OS_CYCLES_TO_USEC(c) (((u64)(c)*(1000000LL/15625LL))/(OS_CPU_COUNTER/15625LL))
/* OS_K?_TO_PHYSICAL macro bug fix for CodeWarrior */
#ifndef __MWERKS__
#define OS_K0_TO_PHYSICAL(x) (u32)(((char *)(x)-0x80000000))
#define OS_K1_TO_PHYSICAL(x) (u32)(((char *)(x)-0xa0000000))
#else
#define OS_K0_TO_PHYSICAL(x) ((char *)(x)-0x80000000)
#define OS_K1_TO_PHYSICAL(x) ((char *)(x)-0xa0000000)
#endif
#define OS_PHYSICAL_TO_K0(x) (void *)(((u32)(x)+0x80000000))
#define OS_PHYSICAL_TO_K1(x) (void *)(((u32)(x)+0xa0000000))
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Address translation routines and macros */
extern u32 osVirtualToPhysical(void *);
extern void * osPhysicalToVirtual(u32);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_CONVERT_H_ */
-117
View File
@@ -1,117 +0,0 @@
/*====================================================================
* os_debug.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_debug.h,v $
$Revision: 1.4 $
$Date: 1999/06/30 03:04:08 $
*---------------------------------------------------------------------*/
#ifndef _OS_DEBUG_H_
#define _OS_DEBUG_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
/*
* Structure for Profiler
*/
typedef struct {
u16 *histo_base; /* histogram base */
u32 histo_size; /* histogram size */
u32 *text_start; /* start of text segment */
u32 *text_end; /* end of text segment */
} OSProf;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/*
* Profiler constants
*/
#define PROF_MIN_INTERVAL 50 /* microseconds */
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Profiler Interface */
extern void osProfileInit(OSProf *, u32 profcnt);
extern void osProfileStart(u32);
extern void osProfileFlush(void);
extern void osProfileStop(void);
/* Thread Profiler Interface */
extern void osThreadProfileClear(OSId);
extern void osThreadProfileInit(void);
extern void osThreadProfileStart(void);
extern void osThreadProfileStop(void);
extern u32 osThreadProfileReadCount(OSId);
extern u32 osThreadProfileReadCountTh(OSThread*);
extern OSTime osThreadProfileReadTime(OSId);
extern OSTime osThreadProfileReadTimeTh(OSThread*);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_DEBUG_H_ */
-107
View File
@@ -1,107 +0,0 @@
/*====================================================================
* os_eeprom.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_eeprom.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:06 $
*---------------------------------------------------------------------*/
#ifndef _OS_EEPROM_H_
#define _OS_EEPROM_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include "os_message.h"
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/* EEPROM TYPE */
#define EEPROM_TYPE_4K 0x01
#define EEPROM_TYPE_16K 0x02
/* definition for EEPROM */
#define EEPROM_MAXBLOCKS 64
#define EEP16K_MAXBLOCKS 256
#define EEPROM_BLOCK_SIZE 8
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* EEPROM interface */
extern s32 osEepromProbe(OSMesgQueue *);
extern s32 osEepromRead(OSMesgQueue *, u8, u8 *);
extern s32 osEepromWrite(OSMesgQueue *, u8, u8 *);
extern s32 osEepromLongRead(OSMesgQueue *, u8, u8 *, int);
extern s32 osEepromLongWrite(OSMesgQueue *, u8, u8 *, int);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_EEPROM_H_ */
-86
View File
@@ -1,86 +0,0 @@
/*====================================================================
* os_error.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_error.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:06 $
*---------------------------------------------------------------------*/
#ifndef _OS_ERROR_H_
#define _OS_ERROR_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_ERROR_H_ */
-119
View File
@@ -1,119 +0,0 @@
/*====================================================================
* os_exception.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_exception.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:07 $
*---------------------------------------------------------------------*/
#ifndef _OS_EXCEPTION_H_
#define _OS_EXCEPTION_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
typedef u32 OSIntMask;
typedef u32 OSHWIntr;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/* Flags for debugging purpose */
#define OS_FLAG_CPU_BREAK 1 /* Break exception has occurred */
#define OS_FLAG_FAULT 2 /* CPU fault has occurred */
/* Interrupt masks */
#define OS_IM_NONE 0x00000001
#define OS_IM_SW1 0x00000501
#define OS_IM_SW2 0x00000601
#define OS_IM_CART 0x00000c01
#define OS_IM_PRENMI 0x00001401
#define OS_IM_RDBWRITE 0x00002401
#define OS_IM_RDBREAD 0x00004401
#define OS_IM_COUNTER 0x00008401
#define OS_IM_CPU 0x0000ff01
#define OS_IM_SP 0x00010401
#define OS_IM_SI 0x00020401
#define OS_IM_AI 0x00040401
#define OS_IM_VI 0x00080401
#define OS_IM_PI 0x00100401
#define OS_IM_DP 0x00200401
#define OS_IM_ALL 0x003fff01
#define RCP_IMASK 0x003f0000
#define RCP_IMASKSHIFT 16
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Interrupt operations */
extern OSIntMask osGetIntMask(void);
extern OSIntMask osSetIntMask(OSIntMask);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_EXCEPTION_H_ */
-71
View File
@@ -1,71 +0,0 @@
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo.
$RCSfile: os_flash.h,v $
$Revision: 1.1 $
$Date: 2000/06/15 06:24:55 $
*---------------------------------------------------------------------*/
#ifndef _OS_FLASH_H_
#define _OS_FLASH_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/*
* defines for FLASH
*/
#define FLASH_START_ADDR 0x08000000
#define FLASH_SIZE 0x20000
#define FLASH_LATENCY 0x5
#define FLASH_PULSE 0x0c
#define FLASH_PAGE_SIZE 0xf
#define FLASH_REL_DURATION 0x2
#define DEVICE_TYPE_FLASH 8
#define FLASH_VERSION_MX_PROTO_A 0x00c20000
#define FLASH_VERSION_MX_A 0x00c20001
#define FLASH_VERSION_MX_C 0x00c2001e
#define FLASH_VERSION_MX_B_AND_D 0x00c2001d
#define FLASH_VERSION_MEI 0x003200f1
#define OLD_FLASH 0
#define NEW_FLASH 1
/* OLD_FLASH is MX_PROTO_A, MX_A and MX_C */
/* NEW_FLASH is MX_B_AND_D and MATSUSHITA flash */
#define FLASH_STATUS_ERASE_BUSY 2
#define FLASH_STATUS_ERASE_ERROR -1
#define FLASH_STATUS_ERASE_OK 0
extern OSPiHandle *osFlashReInit(u8 latency, u8 pulse,
u8 page_size, u8 rel_duration, u32 start);
extern OSPiHandle *osFlashInit(void);
extern void osFlashReadStatus(u8 *flash_status);
extern void osFlashReadId(u32 *flash_type, u32 *flash_maker);
extern void osFlashClearStatus(void);
extern s32 osFlashAllErase(void);
extern s32 osFlashSectorErase(u32 page_num);
extern s32 osFlashWriteBuffer(OSIoMesg *mb, s32 priority,
void *dramAddr, OSMesgQueue *mq);
extern s32 osFlashWriteArray(u32 page_num);
extern s32 osFlashReadArray(OSIoMesg *mb, s32 priority, u32 page_num,
void *dramAddr, u32 n_pages, OSMesgQueue *mq);
extern void osFlashChange(u32 flash_num);
extern void osFlashAllEraseThrough(void);
extern void osFlashSectorEraseThrough(u32 page_num);
extern s32 osFlashCheckEraseEnd(void);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_FLASH_H_ */
-107
View File
@@ -1,107 +0,0 @@
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo.
$RCSfile: os_gbpak.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:07 $
*---------------------------------------------------------------------*/
#ifndef _OS_GBPAK_H_
#define _OS_GBPAK_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include "os_message.h"
#include "os_pfs.h"
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
typedef struct {
u16 fixed1;
u16 start_address;
u8 nintendo_chr[0x30];
u8 game_title[16];
u16 company_code;
u8 body_code;
u8 cart_type;
u8 rom_size;
u8 ram_size;
u8 country_code;
u8 fixed2;
u8 version;
u8 isum;
u16 sum;
} OSGbpakId;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/* definition for 64GB-PAK */
#define OS_GBPAK_POWER 0x01
#define OS_GBPAK_RSTB_DETECTION 0x04
#define OS_GBPAK_RSTB_STATUS 0x08
#define OS_GBPAK_GBCART_PULL 0x40
#define OS_GBPAK_GBCART_ON 0x80
#define OS_GBPAK_POWER_OFF 0x00 /* power of 64GB-PAK */
#define OS_GBPAK_POWER_ON 0x01
#define OS_GBPAK_ROM_ID_SIZE 0x50 /* ID size of GB cartridge */
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* 64GB-PAK */
extern s32 osGbpakInit(OSMesgQueue *, OSPfs *, int);
extern s32 osGbpakPower(OSPfs *, s32);
extern s32 osGbpakGetStatus(OSPfs *, u8 *);
extern s32 osGbpakReadWrite(OSPfs *, u16, u16, u8 *, u16);
extern s32 osGbpakReadId(OSPfs *, OSGbpakId *, u8 *);
extern s32 osGbpakCheckConnector(OSPfs *, u8 *);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_GBPAK_H_ */
-86
View File
@@ -1,86 +0,0 @@
/*====================================================================
* os_gio.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_gio.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:08 $
*---------------------------------------------------------------------*/
#ifndef _OS_GIO_H_
#define _OS_GIO_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_GIO_H_ */
-161
View File
@@ -1,161 +0,0 @@
/*====================================================================
* os_host.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_host.h,v $
$Revision: 1.3 $
$Date: 1999/06/24 09:23:06 $
*---------------------------------------------------------------------*/
#ifndef _OS_HOST_H_
#define _OS_HOST_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
extern void __osInitialize_common(void);
#if defined(_FINALROM)
#define osInitialize() __osInitialize_common()
#else
/* PARTNER-N64 */
#if defined(PTN64)
extern void __osInitialize_kmc(void);
#define osReadHost osReadHost_pt
#define osWriteHost osWriteHost_pt
#define osInitialize() \
{ \
__osInitialize_common(); \
__osInitialize_kmc(); \
}
/* MONEGI SMART PACK A */
#elif defined(MWN64)
extern void __osInitialize_msp(void);
#define osReadHost osReadHost_pt
#define osWriteHost osWriteHost_pt
#define osInitialize() \
{ \
__osInitialize_common(); \
__osInitialize_msp(); \
}
/* IS-Viewer(for Debugger) */
#elif defined(ISV64)
extern void __osInitialize_isv(void);
#define osInitialize() \
{ \
__osInitialize_common(); \
__osInitialize_isv(); \
}
/* Emulation board for INDY */
#elif defined(EMU64)
extern void __osInitialize_emu(void);
#define osInitialize() \
{ \
__osInitialize_common(); \
__osInitialize_emu(); \
}
#else
/* Default (auto detect) */
extern void __osInitialize_autodetect(void);
extern void __osInitialize_msp(void);
extern void __osInitialize_kmc(void);
extern void __osInitialize_isv(void);
extern void __osInitialize_emu(void);
#define osInitialize() \
{ \
__osInitialize_common(); \
__osInitialize_autodetect(); \
}
#endif
#endif /* _FINAL_ROM */
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Game <> Host data transfer functions */
extern s32 osTestHost(void);
extern void osReadHost(void *, u32);
extern void osWriteHost(void *, u32);
extern void osAckRamromRead(void);
extern void osAckRamromWrite(void);
/* RDB port operations */
extern void osInitRdb(u8 *sendBuf, u32 sendSize);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_HOST_H_ */
-49
View File
@@ -1,49 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_internal.h,v $
$Revision: 1.20 $
$Date: 1998/10/09 08:01:09 $
*---------------------------------------------------------------------*/
#ifndef _OS_INTERNAL_H_
#define _OS_INTERNAL_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
#include "os_internal_reg.h"
#include "os_internal_exception.h"
#include "os_internal_tlb.h"
#include "os_internal_si.h"
#include "os_internal_rsp.h"
#include "os_internal_error.h"
#include "os_internal_gio.h"
#include "os_internal_thread.h"
#include "os_internal_debug.h"
#include "os_internal_host.h"
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_INTERNAL_H */
-43
View File
@@ -1,43 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_internal_debug.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:09 $
*---------------------------------------------------------------------*/
#ifndef _OS_INTERNAL_DEBUG_H_
#define _OS_INTERNAL_DEBUG_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* Debug port */
extern void __osSyncPutChars(int, int, const char *);
extern int __osAtomicDec(unsigned int *p);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_INTERNAL_DEBUG_H */
-45
View File
@@ -1,45 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_internal_error.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:10 $
*---------------------------------------------------------------------*/
#ifndef _OS_INTERNAL_ERROR_H_
#define _OS_INTERNAL_ERROR_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* Error handling */
extern void __osError(s16, s16, ...);
extern OSThread * __osGetCurrFaultedThread(void);
extern OSThread * __osGetNextFaultedThread(OSThread *);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_INTERNAL_ERROR_H */
-49
View File
@@ -1,49 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_internal_exception.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:10 $
*---------------------------------------------------------------------*/
#ifndef _OS_INTERNAL_EXCEPTION_H_
#define _OS_INTERNAL_EXCEPTION_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* Routine for HW interrupt "handler" */
extern void __osSetHWIntrRoutine(OSHWIntr interrupt,
s32 (*handler)(void)); // no stackEnd
extern void __osGetHWIntrRoutine(OSHWIntr interrupt,
s32 (**handler)(void), void **stackEnd);
/* Routine for global interrupt mask */
extern void __osSetGlobalIntMask(OSHWIntr);
extern void __osResetGlobalIntMask(OSHWIntr);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_INTERNAL_EXCEPTION_H */
-45
View File
@@ -1,45 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_internal_gio.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:11 $
*---------------------------------------------------------------------*/
#ifndef _OS_INTERNAL_GIO_H_
#define _OS_INTERNAL_GIO_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* Development board functions */
extern void __osGIOInit(s32);
extern void __osGIOInterrupt(s32);
extern void __osGIORawInterrupt(s32);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_INTERNAL_GIO_H */
-42
View File
@@ -1,42 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_internal_host.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:11 $
*---------------------------------------------------------------------*/
#ifndef _OS_INTERNAL_HOST_H_
#define _OS_INTERNAL_HOST_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* routine for rdb port */
extern u32 __osRdbSend(u8 *buf, u32 size, u32 type);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_INTERNAL_HOST_H */
-59
View File
@@ -1,59 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_internal_reg.h,v $
$Revision: 1.2 $
$Date: 1999/03/10 12:19:14 $
*---------------------------------------------------------------------*/
#ifndef _OS_INTERNAL_REG_H_
#define _OS_INTERNAL_REG_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* Routines to get/fetch coprocessor 0 registers */
extern u32 __osGetCause(void);
extern void __osSetCause(u32);
extern u32 __osGetCompare(void);
extern void __osSetCompare(u32);
extern u32 __osGetConfig(void);
extern void __osSetConfig(u32);
extern void __osSetCount(u32);
extern u32 __osGetSR(void);
extern void __osSetSR(u32);
extern u32 __osDisableInt(void);
extern void __osRestoreInt(u32);
extern u32 __osGetWatchLo(void);
extern void __osSetWatchLo(u32);
/* Routines to get/set floating-point control and status register */
extern u32 __osSetFpcCsr(u32);
extern u32 __osGetFpcCsr(void);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_INTERNAL_REG_H */
-48
View File
@@ -1,48 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_internal_rsp.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:12 $
*---------------------------------------------------------------------*/
#ifndef _OS_INTERNAL_RSP_H_
#define _OS_INTERNAL_RSP_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* Signal processor interface (Sp) */
extern u32 __osSpGetStatus(void);
extern void __osSpSetStatus(u32);
extern s32 __osSpSetPc(u32);
extern s32 __osSpRawWriteIo(u32, u32);
extern s32 __osSpRawReadIo(u32, u32 *);
extern s32 __osSpRawStartDma(s32, u32, void *, u32);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_INTERNAL_RSP_H */
-46
View File
@@ -1,46 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_internal_si.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:13 $
*---------------------------------------------------------------------*/
#ifndef _OS_INTERNAL_SI_H_
#define _OS_INTERNAL_SI_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* Serial interface (Si) */
extern u32 __osSiGetStatus(void);
extern s32 __osSiRawWriteIo(u32, u32);
extern s32 __osSiRawReadIo(u32, u32 *);
extern s32 __osSiRawStartDma(s32, void *);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_INTERNAL_SI_H */
-43
View File
@@ -1,43 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_internal_thread.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:13 $
*---------------------------------------------------------------------*/
#ifndef _OS_INTERNAL_THREAD_H_
#define _OS_INTERNAL_THREAD_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* For debugger use */
extern OSThread * __osGetActiveQueue(void);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_INTERNAL_THREAD_H */
-47
View File
@@ -1,47 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_internal_tlb.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:14 $
*---------------------------------------------------------------------*/
#ifndef _OS_INTERNAL_TLB_H_
#define _OS_INTERNAL_TLB_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/os.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* Routines for fetch TLB info */
extern u32 __osGetTLBASID(void);
extern u32 __osGetTLBPageMask(s32);
extern u32 __osGetTLBHi(s32);
extern u32 __osGetTLBLo0(s32);
extern u32 __osGetTLBLo1(s32);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_INTERNAL_TLB_H */
-100
View File
@@ -1,100 +0,0 @@
/*====================================================================
* os_libc.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_libc.h,v $
$Revision: 1.3 $
$Date: 1999/07/13 01:43:47 $
*---------------------------------------------------------------------*/
#ifndef _OS_LIBC_H_
#define _OS_LIBC_H_
#include "os_pfs.h"
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* byte string operations */
extern void bcopy(const void *, void *, int);
extern int bcmp(const void *, const void *, int);
extern void bzero(void *, int);
/* Printf */
extern int sprintf(char *s, const char *fmt, ...);
extern void osSyncPrintf(const char *fmt, ...);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_LIBC_H_ */
-163
View File
@@ -1,163 +0,0 @@
/*====================================================================
* os_message.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_message.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:15 $
*---------------------------------------------------------------------*/
#ifndef _OS_MESSAGE_H_
#define _OS_MESSAGE_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
typedef u32 OSEvent;
/*
* Structure for message
*/
typedef void * OSMesg;
/*
* Structure for message queue
*/
typedef struct OSMesgQueue_s {
OSThread *mtqueue; /* Queue to store threads blocked
on empty mailboxes (receive) */
OSThread *fullqueue; /* Queue to store threads blocked
on full mailboxes (send) */
s32 validCount; /* Contains number of valid message */
s32 first; /* Points to first valid message */
s32 msgCount; /* Contains total # of messages */
OSMesg *msg; /* Points to message buffer array */
} OSMesgQueue;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/* Events */
#ifdef _FINALROM
#define OS_NUM_EVENTS 15
#else
#define OS_NUM_EVENTS 23
#endif
#define OS_EVENT_SW1 0 /* CPU SW1 interrupt */
#define OS_EVENT_SW2 1 /* CPU SW2 interrupt */
#define OS_EVENT_CART 2 /* Cartridge interrupt: used by rmon */
#define OS_EVENT_COUNTER 3 /* Counter int: used by VI/Timer Mgr */
#define OS_EVENT_SP 4 /* SP task done interrupt */
#define OS_EVENT_SI 5 /* SI (controller) interrupt */
#define OS_EVENT_AI 6 /* AI interrupt */
#define OS_EVENT_VI 7 /* VI interrupt: used by VI/Timer Mgr */
#define OS_EVENT_PI 8 /* PI interrupt: used by PI Manager */
#define OS_EVENT_DP 9 /* DP full sync interrupt */
#define OS_EVENT_CPU_BREAK 10 /* CPU breakpoint: used by rmon */
#define OS_EVENT_SP_BREAK 11 /* SP breakpoint: used by rmon */
#define OS_EVENT_FAULT 12 /* CPU fault event: used by rmon */
#define OS_EVENT_THREADSTATUS 13 /* CPU thread status: used by rmon */
#define OS_EVENT_PRENMI 14 /* Pre NMI interrupt */
#ifndef _FINALROM
#define OS_EVENT_RDB_READ_DONE 15 /* RDB read ok event: used by rmon */
#define OS_EVENT_RDB_LOG_DONE 16 /* read of log data complete */
#define OS_EVENT_RDB_DATA_DONE 17 /* read of hostio data complete */
#define OS_EVENT_RDB_REQ_RAMROM 18 /* host needs ramrom access */
#define OS_EVENT_RDB_FREE_RAMROM 19 /* host is done with ramrom access */
#define OS_EVENT_RDB_DBG_DONE 20
#define OS_EVENT_RDB_FLUSH_PROF 21
#define OS_EVENT_RDB_ACK_PROF 22
#endif
/* Flags to turn blocking on/off when sending/receiving message */
#define OS_MESG_NOBLOCK 0
#define OS_MESG_BLOCK 1
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/* Get count of valid messages in queue */
#define MQ_GET_COUNT(mq) ((mq)->validCount)
/* Figure out if message queue is empty or full */
#define MQ_IS_EMPTY(mq) (MQ_GET_COUNT(mq) == 0)
#define MQ_IS_FULL(mq) (MQ_GET_COUNT(mq) >= (mq)->msgCount)
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Message operations */
extern void osCreateMesgQueue(OSMesgQueue *, OSMesg *, s32);
extern s32 osSendMesg(OSMesgQueue *, OSMesg, s32);
extern s32 osJamMesg(OSMesgQueue *, OSMesg, s32);
extern s32 osRecvMesg(OSMesgQueue *, OSMesg *, s32);
/* Event operations */
extern void osSetEventMesg(OSEvent, OSMesgQueue *, OSMesg);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_MESSAGE_H_ */
-75
View File
@@ -1,75 +0,0 @@
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo.
$RCSfile: os_motor.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:15 $
*---------------------------------------------------------------------*/
#ifndef _OS_MOTOR_H_
#define _OS_MOTOR_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include "os_message.h"
#include "os_pfs.h"
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Rumble PAK interface */
extern s32 osMotorInit(OSMesgQueue *, OSPfs *, int);
extern s32 osMotorStop(OSPfs *);
extern s32 osMotorStart(OSPfs *);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_MOTOR_H_ */
-174
View File
@@ -1,174 +0,0 @@
/*====================================================================
* os_pfs.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_pfs.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:16 $
*---------------------------------------------------------------------*/
#ifndef _OS_PFS_H_
#define _OS_PFS_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include "os_message.h"
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
/*
* Structure for file system
*/
typedef struct {
int status;
OSMesgQueue *queue;
int channel;
u8 id[32];
u8 label[32];
int version;
int dir_size;
int inode_table; /* block location */
int minode_table; /* mirrioring inode_table */
int dir_table; /* block location */
int inode_start_page; /* page # */
u8 banks;
u8 activebank;
} OSPfs;
typedef struct {
u32 file_size; /* bytes */
u32 game_code;
u16 company_code;
char ext_name[4];
char game_name[16];
} OSPfsState;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/* File System size */
#define OS_PFS_VERSION 0x0200
#define OS_PFS_VERSION_HI (OS_PFS_VERSION >> 8)
#define OS_PFS_VERSION_LO (OS_PFS_VERSION & 255)
#define PFS_FILE_NAME_LEN 16
#define PFS_FILE_EXT_LEN 4
#define BLOCKSIZE 32 /* bytes */
#define PFS_ONE_PAGE 8 /* blocks */
#define PFS_MAX_BANKS 62
/* File System flag */
#define PFS_READ 0
#define PFS_WRITE 1
#define PFS_CREATE 2
/* File System status */
#define PFS_INITIALIZED 0x1
#define PFS_CORRUPTED 0x2 /* File system was corrupted */
#define PFS_ID_BROKEN 0x4
#define PFS_MOTOR_INITIALIZED 0x8
#define PFS_GBPAK_INITIALIZED 0x10
/* File System error number */
#define PFS_ERR_NOPACK 1 /* no memory card is plugged or */
#define PFS_ERR_NEW_PACK 2 /* ram pack has been changed to a */
/* different one */
#define PFS_ERR_INCONSISTENT 3 /* need to run Pfschecker */
#define PFS_ERR_CONTRFAIL CONT_OVERRUN_ERROR
#define PFS_ERR_INVALID 5 /* invalid parameter or file not exist*/
#define PFS_ERR_BAD_DATA 6 /* the data read from pack are bad*/
#define PFS_DATA_FULL 7 /* no free pages on ram pack */
#define PFS_DIR_FULL 8 /* no free directories on ram pack*/
#define PFS_ERR_EXIST 9 /* file exists */
#define PFS_ERR_ID_FATAL 10 /* dead ram pack */
#define PFS_ERR_DEVICE 11 /* wrong device type*/
#define PFS_ERR_NO_GBCART 12 /* no gb cartridge (64GB-PAK) */
#define PFS_ERR_NEW_GBCART 13 /* gb cartridge may be changed */
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* file system interface */
extern s32 osPfsInitPak(OSMesgQueue *, OSPfs *, int);
extern s32 osPfsRepairId(OSPfs *);
extern s32 osPfsInit(OSMesgQueue *, OSPfs *, int);
extern s32 osPfsReFormat(OSPfs *, OSMesgQueue *, int);
extern s32 osPfsChecker(OSPfs *);
extern s32 osPfsAllocateFile(OSPfs *, u16, u32, u8 *, u8 *, int, s32 *);
extern s32 osPfsFindFile(OSPfs *, u16, u32, u8 *, u8 *, s32 *);
extern s32 osPfsDeleteFile(OSPfs *, u16, u32, u8 *, u8 *);
extern s32 osPfsReadWriteFile(OSPfs *, s32, u8, int, int, u8 *);
extern s32 osPfsFileState(OSPfs *, s32, OSPfsState *);
extern s32 osPfsGetLabel(OSPfs *, u8 *, int *);
extern s32 osPfsSetLabel(OSPfs *, u8 *);
extern s32 osPfsIsPlug(OSMesgQueue *, u8 *);
extern s32 osPfsFreeBlocks(OSPfs *, s32 *);
extern s32 osPfsNumFiles(OSPfs *, s32 *, s32 *);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_PFS_H_ */
-228
View File
@@ -1,228 +0,0 @@
/*====================================================================
* os_pi.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_pi.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:16 $
*---------------------------------------------------------------------*/
#ifndef _OS_PI_H_
#define _OS_PI_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include "os_thread.h"
#include "os_message.h"
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
/*
* Structure for Enhanced PI interface
*/
/*
* OSTranxInfo is set up for Leo Disk DMA. This info will be maintained
* by exception handler. This is how the PIMGR and the ISR communicate.
*/
typedef struct {
u32 errStatus; /* error status */
void *dramAddr; /* RDRAM buffer address (DMA) */
void *C2Addr; /* C2 buffer address */
u32 sectorSize; /* size of transfering sector */
u32 C1ErrNum; /* total # of C1 errors */
u32 C1ErrSector[4]; /* error sectors */
} __OSBlockInfo;
typedef struct {
u32 cmdType; /* for disk only */
u16 transferMode; /* Block, Track, or sector? */
u16 blockNum; /* which block is transfering */
s32 sectorNum; /* which sector is transfering */
u32 devAddr; /* Device buffer address */
u32 bmCtlShadow; /* asic bm_ctl(510) register shadow ram */
u32 seqCtlShadow; /* asic seq_ctl(518) register shadow ram */
__OSBlockInfo block[2]; /* bolck transfer info */
} __OSTranxInfo;
typedef struct OSPiHandle_s {
struct OSPiHandle_s *next; /* point to next handle on the table */
u8 type; /* DEVICE_TYPE_BULK for disk */
u8 latency; /* domain latency */
u8 pageSize; /* domain page size */
u8 relDuration; /* domain release duration */
u8 pulse; /* domain pulse width */
u8 domain; /* which domain */
u32 baseAddress; /* Domain address */
u32 speed; /* for roms only */
/* The following are "private" elements" */
__OSTranxInfo transferInfo; /* for disk only */
} OSPiHandle;
typedef struct {
u8 type;
u32 address;
} OSPiInfo;
/*
* Structure for I/O message block
*/
typedef struct {
u16 type; /* Message type */
u8 pri; /* Message priority (High or Normal) */
u8 status; /* Return status */
OSMesgQueue *retQueue; /* Return message queue to notify I/O
* completion */
} OSIoMesgHdr;
typedef struct {
OSIoMesgHdr hdr; /* Message header */
void * dramAddr; /* RDRAM buffer address (DMA) */
u32 devAddr; /* Device buffer address (DMA) */
u32 size; /* DMA transfer size in bytes */
OSPiHandle *piHandle; /* PI device handle */
} OSIoMesg;
/*
* Structure for device manager block
*/
typedef struct {
s32 active; /* Status flag */
OSThread *thread; /* Calling thread */
OSMesgQueue *cmdQueue; /* Command queue */
OSMesgQueue *evtQueue; /* Event queue */
OSMesgQueue *acsQueue; /* Access queue */
/* Raw DMA routine */
s32 (*dma)(s32, u32, void *, u32);
s32 (*edma)(OSPiHandle *, s32, u32, void *, u32);
} OSDevMgr;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/* Flags to indicate direction of data transfer */
#define OS_READ 0 /* device -> RDRAM */
#define OS_WRITE 1 /* device <- RDRAM */
#define OS_OTHERS 2 /* for Leo disk only */
/*
* I/O message types
*/
#define OS_MESG_TYPE_BASE (10)
#define OS_MESG_TYPE_LOOPBACK (OS_MESG_TYPE_BASE+0)
#define OS_MESG_TYPE_DMAREAD (OS_MESG_TYPE_BASE+1)
#define OS_MESG_TYPE_DMAWRITE (OS_MESG_TYPE_BASE+2)
#define OS_MESG_TYPE_VRETRACE (OS_MESG_TYPE_BASE+3)
#define OS_MESG_TYPE_COUNTER (OS_MESG_TYPE_BASE+4)
#define OS_MESG_TYPE_EDMAREAD (OS_MESG_TYPE_BASE+5)
#define OS_MESG_TYPE_EDMAWRITE (OS_MESG_TYPE_BASE+6)
/*
* I/O message priority
*/
#define OS_MESG_PRI_NORMAL 0
#define OS_MESG_PRI_HIGH 1
/*
* PI/EPI
*/
#define PI_DOMAIN1 0
#define PI_DOMAIN2 1
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
extern OSPiHandle *__osPiTable; /* The head of OSPiHandle link list */
/**************************************************************************
*
* Function prototypes
*
*/
/* Peripheral interface (Pi) */
extern u32 osPiGetStatus(void);
extern s32 osPiGetDeviceType(void);
extern s32 osPiWriteIo(u32, u32);
extern s32 osPiReadIo(u32, u32 *);
extern s32 osPiStartDma(OSIoMesg *, s32, s32, u32, void *, u32,
OSMesgQueue *);
extern void osCreatePiManager(OSPri, OSMesgQueue *, OSMesg *, s32);
extern s32 osEPiRawStartDma(OSPiHandle *, s32 , u32 , void *, u32 );
/* Enhanced PI interface */
extern OSPiHandle *osCartRomInit(void);
extern OSPiHandle *osLeoDiskInit(void);
extern OSPiHandle *osDriveRomInit(void);
extern s32 osEPiDeviceType(OSPiHandle *, OSPiInfo *);
extern s32 osEPiWriteIo(OSPiHandle *, u32 , u32 );
extern s32 osEPiReadIo(OSPiHandle *, u32 , u32 *);
extern s32 osEPiStartDma(OSPiHandle *, OSIoMesg *, s32);
extern s32 osEPiLinkHandle(OSPiHandle *);
extern s32 osPiRawStartDma(s32, u32, void *, u32);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_PI_H_ */
-92
View File
@@ -1,92 +0,0 @@
/*====================================================================
* os_rdp.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_rdp.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:16 $
*---------------------------------------------------------------------*/
#ifndef _OS_RDP_H_
#define _OS_RDP_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Display processor interface (Dp) */
extern u32 osDpGetStatus(void);
extern void osDpSetStatus(u32);
extern void osDpGetCounters(u32 *);
extern s32 osDpSetNextBuffer(void *, u64);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_RDP_H_ */
-90
View File
@@ -1,90 +0,0 @@
/*====================================================================
* os_reg.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_reg.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:17 $
*---------------------------------------------------------------------*/
#ifndef _OS_REG_H_
#define _OS_REG_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Miscellaneous operations */
extern u32 osGetCount(void);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_REG_H_ */
-86
View File
@@ -1,86 +0,0 @@
/*====================================================================
* os_rsp.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_rsp.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:17 $
*---------------------------------------------------------------------*/
#ifndef _OS_RSP_H_
#define _OS_RSP_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_RSP_H_ */
-86
View File
@@ -1,86 +0,0 @@
/*====================================================================
* os_si.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_si.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:18 $
*---------------------------------------------------------------------*/
#ifndef _OS_SI_H_
#define _OS_SI_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_SI_H_ */
-118
View File
@@ -1,118 +0,0 @@
/*====================================================================
* os_system.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_system.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:18 $
*---------------------------------------------------------------------*/
#ifndef _OS_SYSTEM_H_
#define _OS_SYSTEM_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/*
* Values for osTvType
*/
#define OS_TV_PAL 0
#define OS_TV_NTSC 1
#define OS_TV_MPAL 2
/*
* Size of buffer the retains contents after NMI
*/
#define OS_APP_NMI_BUFSIZE 64
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
extern s32 osRomType; /* Bulk or cartridge ROM. 0=cartridge 1=bulk */
extern void *osRomBase; /* Rom base address of the game image */
extern s32 osTvType; /* 0 = PAL, 1 = NTSC, 2 = MPAL */
extern s32 osResetType; /* 0 = cold reset, 1 = NMI */
extern s32 osCicId;
extern s32 osVersion;
extern u32 osMemSize; /* Memory Size */
extern s32 osAppNMIBuffer[];
extern u64 osClockRate;
extern OSIntMask __OSGlobalIntMask; /* global interrupt mask */
/**************************************************************************
*
* Function prototypes
*
*/
extern void osInitialize(void);
extern void osExit(void);
extern u32 osGetMemSize(void);
/* pre-NMI */
extern s32 osAfterPreNMI(void);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_SYSTEM_H_ */
-154
View File
@@ -1,154 +0,0 @@
/*====================================================================
* os_thread.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_thread.h,v $
$Revision: 1.3 $
$Date: 1999/06/15 12:39:40 $
*---------------------------------------------------------------------*/
#ifndef _OS_THREAD_H_
#define _OS_THREAD_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
typedef s32 OSPri;
typedef s32 OSId;
typedef union { struct { f32 f_odd; f32 f_even; } f; f64 d; } __OSfp;
typedef struct {
u64 at, v0, v1, a0, a1, a2, a3;
u64 t0, t1, t2, t3, t4, t5, t6, t7;
u64 s0, s1, s2, s3, s4, s5, s6, s7;
u64 t8, t9, gp, sp, s8, ra;
u64 lo, hi;
u32 sr, pc, cause, badvaddr, rcp;
u32 fpcsr;
__OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14;
__OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30;
} __OSThreadContext;
typedef struct {
u32 flag;
u32 count;
u64 time;
} __OSThreadprofile_s;
typedef struct OSThread_s {
struct OSThread_s *next; /* run/mesg queue link */
OSPri priority; /* run/mesg queue priority */
struct OSThread_s **queue; /* queue thread is on */
struct OSThread_s *tlnext; /* all threads queue link */
u16 state; /* OS_STATE_* */
u16 flags; /* flags for rmon */
OSId id; /* id for debugging */
int fp; /* thread has used fp unit */
__OSThreadprofile_s *thprof; /* workarea for thread profiler */
__OSThreadContext context; /* register/interrupt mask */
} OSThread;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/* Thread states */
#define OS_STATE_STOPPED 1
#define OS_STATE_RUNNABLE 2
#define OS_STATE_RUNNING 4
#define OS_STATE_WAITING 8
/* Recommended thread priorities for the system threads */
#define OS_PRIORITY_MAX 255
#define OS_PRIORITY_VIMGR 254
#define OS_PRIORITY_RMON 250
#define OS_PRIORITY_RMONSPIN 200
#define OS_PRIORITY_PIMGR 150
#define OS_PRIORITY_SIMGR 140
#define OS_PRIORITY_APPMAX 127
#define OS_PRIORITY_IDLE 0 /* Must be 0 */
/* for thread profiler */
#define THPROF_IDMAX 64
#define THPROF_STACKSIZE 256
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Thread operations */
extern void osCreateThread(OSThread *, OSId, void (*)(void *),
void *, void *, OSPri);
extern void osDestroyThread(OSThread *);
extern void osYieldThread(void);
extern void osStartThread(OSThread *);
extern void osStopThread(OSThread *);
extern OSId osGetThreadId(OSThread *);
extern void osSetThreadPri(OSThread *, OSPri);
extern OSPri osGetThreadPri(OSThread *);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_THREAD_H_ */
-114
View File
@@ -1,114 +0,0 @@
/*====================================================================
* os_time.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_time.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:19 $
*---------------------------------------------------------------------*/
#ifndef _OS_TIME_H_
#define _OS_TIME_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include "os_message.h"
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
/*
* Structure for time value
*/
typedef u64 OSTime;
/*
* Structure for interval timer
*/
typedef struct OSTimer_s {
struct OSTimer_s *next; /* point to next timer in list */
struct OSTimer_s *prev; /* point to previous timer in list */
OSTime interval; /* duration set by user */
OSTime value; /* time remaining before */
/* timer fires */
OSMesgQueue *mq; /* Message Queue */
OSMesg msg; /* Message to send */
} OSTimer;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Timer interface */
extern OSTime osGetTime(void);
extern void osSetTime(OSTime);
extern int osSetTimer(OSTimer *, OSTime, OSTime,
OSMesgQueue *, OSMesg);
extern int osStopTimer(OSTimer *);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_TIME_H_ */
-107
View File
@@ -1,107 +0,0 @@
/*====================================================================
* os_tlb.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_tlb.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:20 $
*---------------------------------------------------------------------*/
#ifndef _OS_TLB_H_
#define _OS_TLB_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
typedef u32 OSPageMask;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/*
* Page size argument for TLB routines
*/
#define OS_PM_4K 0x0000000
#define OS_PM_16K 0x0006000
#define OS_PM_64K 0x001e000
#define OS_PM_256K 0x007e000
#define OS_PM_1M 0x01fe000
#define OS_PM_4M 0x07fe000
#define OS_PM_16M 0x1ffe000
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* TLB management routines */
extern void osMapTLB(s32, OSPageMask, void *, u32, u32, s32);
extern void osMapTLBRdb(void);
extern void osUnmapTLB(s32);
extern void osUnmapTLBAll(void);
extern void osSetTLBASID(s32);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_TLB_H_ */
-16
View File
@@ -1,16 +0,0 @@
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo.
$RCSfile: os_version.h,v $
$Revision: 1.2 $
$Date: 1999/06/17 01:33:01 $
*---------------------------------------------------------------------*/
#ifndef _OS_VERSION_H_
#define _OS_VERSION_H_
#define OS_MAJOR_VERSION "2.0K" /* major version */
#define OS_MINOR_VERSION 0 /* patch level */
#endif /* !_OS_VERSION_H_ */
-298
View File
@@ -1,298 +0,0 @@
/*====================================================================
* os_vi.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_vi.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:20 $
*---------------------------------------------------------------------*/
#ifndef _OS_VI_H_
#define _OS_VI_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include "os_thread.h"
#include "os_message.h"
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
/*
* Structure to store VI register values that remain the same between 2 fields
*/
typedef struct {
u32 ctrl;
u32 width;
u32 burst;
u32 vSync;
u32 hSync;
u32 leap;
u32 hStart;
u32 xScale;
u32 vCurrent;
} OSViCommonRegs;
/*
* Structure to store VI register values that change between fields
*/
typedef struct {
u32 origin;
u32 yScale;
u32 vStart;
u32 vBurst;
u32 vIntr;
} OSViFieldRegs;
/*
* Structure for VI mode
*/
typedef struct {
u8 type; /* Mode type */
OSViCommonRegs comRegs; /* Common registers for both fields */
OSViFieldRegs fldRegs[2]; /* Registers for Field 1 & 2 */
} OSViMode;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/*
* Video Interface (VI) mode type
*/
#define OS_VI_NTSC_LPN1 0 /* NTSC */
#define OS_VI_NTSC_LPF1 1
#define OS_VI_NTSC_LAN1 2
#define OS_VI_NTSC_LAF1 3
#define OS_VI_NTSC_LPN2 4
#define OS_VI_NTSC_LPF2 5
#define OS_VI_NTSC_LAN2 6
#define OS_VI_NTSC_LAF2 7
#define OS_VI_NTSC_HPN1 8
#define OS_VI_NTSC_HPF1 9
#define OS_VI_NTSC_HAN1 10
#define OS_VI_NTSC_HAF1 11
#define OS_VI_NTSC_HPN2 12
#define OS_VI_NTSC_HPF2 13
#define OS_VI_PAL_LPN1 14 /* PAL */
#define OS_VI_PAL_LPF1 15
#define OS_VI_PAL_LAN1 16
#define OS_VI_PAL_LAF1 17
#define OS_VI_PAL_LPN2 18
#define OS_VI_PAL_LPF2 19
#define OS_VI_PAL_LAN2 20
#define OS_VI_PAL_LAF2 21
#define OS_VI_PAL_HPN1 22
#define OS_VI_PAL_HPF1 23
#define OS_VI_PAL_HAN1 24
#define OS_VI_PAL_HAF1 25
#define OS_VI_PAL_HPN2 26
#define OS_VI_PAL_HPF2 27
#define OS_VI_MPAL_LPN1 28 /* MPAL - mainly Brazil */
#define OS_VI_MPAL_LPF1 29
#define OS_VI_MPAL_LAN1 30
#define OS_VI_MPAL_LAF1 31
#define OS_VI_MPAL_LPN2 32
#define OS_VI_MPAL_LPF2 33
#define OS_VI_MPAL_LAN2 34
#define OS_VI_MPAL_LAF2 35
#define OS_VI_MPAL_HPN1 36
#define OS_VI_MPAL_HPF1 37
#define OS_VI_MPAL_HAN1 38
#define OS_VI_MPAL_HAF1 39
#define OS_VI_MPAL_HPN2 40
#define OS_VI_MPAL_HPF2 41
#define OS_VI_FPAL_LPN1 42 /* FPAL - Full screen PAL */
#define OS_VI_FPAL_LPF1 43
#define OS_VI_FPAL_LAN1 44
#define OS_VI_FPAL_LAF1 45
#define OS_VI_FPAL_LPN2 46
#define OS_VI_FPAL_LPF2 47
#define OS_VI_FPAL_LAN2 48
#define OS_VI_FPAL_LAF2 49
#define OS_VI_FPAL_HPN1 50
#define OS_VI_FPAL_HPF1 51
#define OS_VI_FPAL_HAN1 52
#define OS_VI_FPAL_HAF1 53
#define OS_VI_FPAL_HPN2 54
#define OS_VI_FPAL_HPF2 55
/*
* Video Interface (VI) special features
*/
#define OS_VI_GAMMA_ON 0x0001
#define OS_VI_GAMMA_OFF 0x0002
#define OS_VI_GAMMA_DITHER_ON 0x0004
#define OS_VI_GAMMA_DITHER_OFF 0x0008
#define OS_VI_DIVOT_ON 0x0010
#define OS_VI_DIVOT_OFF 0x0020
#define OS_VI_DITHER_FILTER_ON 0x0040
#define OS_VI_DITHER_FILTER_OFF 0x0080
/*
* Video Interface (VI) mode attribute bit
*/
#define OS_VI_BIT_NONINTERLACE 0x0001 /* lo-res */
#define OS_VI_BIT_INTERLACE 0x0002 /* lo-res */
#define OS_VI_BIT_NORMALINTERLACE 0x0004 /* hi-res */
#define OS_VI_BIT_DEFLICKINTERLACE 0x0008 /* hi-res */
#define OS_VI_BIT_ANTIALIAS 0x0010
#define OS_VI_BIT_POINTSAMPLE 0x0020
#define OS_VI_BIT_16PIXEL 0x0040
#define OS_VI_BIT_32PIXEL 0x0080
#define OS_VI_BIT_LORES 0x0100
#define OS_VI_BIT_HIRES 0x0200
#define OS_VI_BIT_NTSC 0x0400
#define OS_VI_BIT_PAL 0x0800
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
extern OSViMode osViModeTable[]; /* Global VI mode table */
extern OSViMode osViModeNtscLpn1; /* Individual VI NTSC modes */
extern OSViMode osViModeNtscLpf1;
extern OSViMode osViModeNtscLan1;
extern OSViMode osViModeNtscLaf1;
extern OSViMode osViModeNtscLpn2;
extern OSViMode osViModeNtscLpf2;
extern OSViMode osViModeNtscLan2;
extern OSViMode osViModeNtscLaf2;
extern OSViMode osViModeNtscHpn1;
extern OSViMode osViModeNtscHpf1;
extern OSViMode osViModeNtscHan1;
extern OSViMode osViModeNtscHaf1;
extern OSViMode osViModeNtscHpn2;
extern OSViMode osViModeNtscHpf2;
extern OSViMode osViModePalLpn1; /* Individual VI PAL modes */
extern OSViMode osViModePalLpf1;
extern OSViMode osViModePalLan1;
extern OSViMode osViModePalLaf1;
extern OSViMode osViModePalLpn2;
extern OSViMode osViModePalLpf2;
extern OSViMode osViModePalLan2;
extern OSViMode osViModePalLaf2;
extern OSViMode osViModePalHpn1;
extern OSViMode osViModePalHpf1;
extern OSViMode osViModePalHan1;
extern OSViMode osViModePalHaf1;
extern OSViMode osViModePalHpn2;
extern OSViMode osViModePalHpf2;
extern OSViMode osViModeMpalLpn1; /* Individual VI MPAL modes */
extern OSViMode osViModeMpalLpf1;
extern OSViMode osViModeMpalLan1;
extern OSViMode osViModeMpalLaf1;
extern OSViMode osViModeMpalLpn2;
extern OSViMode osViModeMpalLpf2;
extern OSViMode osViModeMpalLan2;
extern OSViMode osViModeMpalLaf2;
extern OSViMode osViModeMpalHpn1;
extern OSViMode osViModeMpalHpf1;
extern OSViMode osViModeMpalHan1;
extern OSViMode osViModeMpalHaf1;
extern OSViMode osViModeMpalHpn2;
extern OSViMode osViModeMpalHpf2;
extern OSViMode osViModeFpalLpn1; /* Individual VI FPAL modes */
extern OSViMode osViModeFpalLpf1;
extern OSViMode osViModeFpalLan1;
extern OSViMode osViModeFpalLaf1;
extern OSViMode osViModeFpalLpn2;
extern OSViMode osViModeFpalLpf2;
extern OSViMode osViModeFpalLan2;
extern OSViMode osViModeFpalLaf2;
extern OSViMode osViModeFpalHpn1;
extern OSViMode osViModeFpalHpf1;
extern OSViMode osViModeFpalHan1;
extern OSViMode osViModeFpalHaf1;
extern OSViMode osViModeFpalHpn2;
extern OSViMode osViModeFpalHpf2;
/**************************************************************************
*
* Function prototypes
*
*/
/* Video interface (Vi) */
extern u32 osViGetStatus(void);
extern u32 osViGetCurrentMode(void);
extern u32 osViGetCurrentLine(void);
extern u32 osViGetCurrentField(void);
extern void *osViGetCurrentFramebuffer(void);
extern void *osViGetNextFramebuffer(void);
extern void osViSetXScale(f32);
extern void osViSetYScale(f32);
extern void osViExtendVStart(u32);
extern void osViSetSpecialFeatures(u32);
extern void osViSetMode(OSViMode *);
extern void osViSetEvent(OSMesgQueue *, OSMesg, u32);
extern void osViSwapBuffer(void *);
extern void osViBlack(u8);
extern void osViFade(u8, u16);
extern void osViRepeatLine(u8);
extern void osCreateViManager(OSPri);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_VI_H_ */
-108
View File
@@ -1,108 +0,0 @@
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo.
$RCSfile: os_voice.h,v $
$Revision: 1.2 $
$Date: 1999/07/13 08:36:42 $
*---------------------------------------------------------------------*/
#ifndef _OS_VOICE_H_
#define _OS_VOICE_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
typedef struct { /* Voice Recognition System */
OSMesgQueue *__mq; /* SI Message Queue */
int __channel; /* Controller Port # */
s32 __mode;
u8 cmd_status; /* Command Status */
} OSVoiceHandle;
typedef struct { /* Voice Recognition System */
u16 warning;
u16 answer_num; /* 0...5 */
u16 voice_level;
u16 voice_sn;
u16 voice_time;
u16 answer[5];
u16 distance[5];
} OSVoiceData;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/* definition for Voice Recognition System */
#define VOICE_WARN_TOO_SMALL 0x0400
#define VOICE_WARN_TOO_LARGE 0x0800
#define VOICE_WARN_NOT_FIT 0x4000
#define VOICE_WARN_TOO_NOISY 0x8000
#define VOICE_STATUS_READY 0
#define VOICE_STATUS_START 1
#define VOICE_STATUS_CANCEL 3
#define VOICE_STATUS_BUSY 5
#define VOICE_STATUS_END 7
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Voice Recognition System */
extern s32 osVoiceInit(OSMesgQueue *, OSVoiceHandle *, int);
extern s32 osVoiceCheckWord(u8 *data);
extern s32 osVoiceClearDictionary(OSVoiceHandle *, u8);
extern s32 osVoiceControlGain(OSVoiceHandle *, s32, s32);
extern s32 osVoiceSetWord(OSVoiceHandle *, u8 *);
extern s32 osVoiceStartReadData(OSVoiceHandle *);
extern s32 osVoiceStopReadData(OSVoiceHandle *);
extern s32 osVoiceGetReadData(OSVoiceHandle *, OSVoiceData *);
extern s32 osVoiceMaskDictionary(OSVoiceHandle *, u8 *, int);
extern void osVoiceCountSyllables(u8 *, u32 *);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_VOICE_H_ */
-113
View File
@@ -1,113 +0,0 @@
#ifndef _RAMROM_H
#define _RAMROM_H
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.20 $
* $Date: 1997/02/11 08:26:47 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/ramrom.h,v $
*
**************************************************************************/
/*
* Defines for the GIO card in the Nintendo Development Station
*
* The RAM on the GIO card acts as ROM for the game
* Interrupts available between the game and the Indy host
*
* The last part of the ramrom is used for communication between
* game and host. There are 6 4K buffers defined:
* log, printf, rmon to indy, rmon from indy, app to indy, app from indy
* The last 8 bytes of the buffer are used in the emulator environment
*/
#define RAMROM_SIZE (0x1000000)
#define RAMROM_BUF_SIZE (4096)
#define RAMROM_MSG_SIZE (RAMROM_BUF_SIZE*6)
#define RAMROM_MSG_ADDR (RAMROM_SIZE - RAMROM_MSG_SIZE)
#define RAMROM_MSG_HDR_SIZE (3*sizeof(long))
#define RAMROM_USER_DATA_SIZE (RAMROM_MSG_SIZE-RAMROM_MSG_HDR_SIZE)
#define RAMROM_APP_READ_ADDR (RAMROM_MSG_ADDR + (0*RAMROM_BUF_SIZE))
#define RAMROM_APP_WRITE_ADDR (RAMROM_MSG_ADDR + (1*RAMROM_BUF_SIZE))
#define RAMROM_RMON_READ_ADDR (RAMROM_MSG_ADDR + (2*RAMROM_BUF_SIZE))
#define RAMROM_RMON_WRITE_ADDR (RAMROM_MSG_ADDR + (3*RAMROM_BUF_SIZE))
#define RAMROM_PRINTF_ADDR (RAMROM_MSG_ADDR + (4*RAMROM_BUF_SIZE))
#define RAMROM_LOG_ADDR (RAMROM_MSG_ADDR + (5*RAMROM_BUF_SIZE))
/*#define RAMROM_GIO_INTERRUPT (RAMROM_MSG_ADDR + RAMROM_MSG_SIZE - 4)*/
/*
* For the initial round of PIF bringup, we will load in a bootstrap loader
* 0x400 bytes into the ramrom, and the rom will be loaded at 0x2000
*/
#ifndef _HW_VERSION_1
#define RAMROM_BOOTSTRAP_OFFSET 0x40
#define RAMROM_GAME_OFFSET 0x1000
#define RAMROM_FONTDATA_OFFSET 0xb70
#define RAMROM_FONTDATA_SIZE 1152
#else
#define RAMROM_BOOTSTRAP_OFFSET 0x400
#define RAMROM_GAME_OFFSET 0x2000
#endif
#define RAMROM_CLOCKRATE_OFFSET 0x4
#define RAMROM_CLOCKRATE_MASK 0xfffffff0
#define RAMROM_BOOTADDR_OFFSET 0x8
#define RAMROM_RELEASE_OFFSET 0xc
/*
* Second version of the PIF jumps to location 0x1000, and we'll put a jump to
* location 0x400 into the ramrom (for backwards compatibility).
*/
#define RAMROM_PIF2BOOTSTRAP_OFFSET 0x1000
typedef struct {
long type;
long length; /* in bytes of userdata */
long magic;
char userdata[RAMROM_USER_DATA_SIZE];
} RamRomBuffer;
/*
* Interrupt values (must fit in 6 bits!)
* values are used for both request & response
* Transactions initiated by the host start with HOST
* and those initiated by the target start with GAME.
*/
#define HOST_PIACCESS_REQ 1
#define HOST_DBG_CMD_READY 2
#define GAME_DBG_DATA_SEND 3
#define HOST_DBG_DATA_ACK 4
#define GAME_PRINTF_SEND 5
#define HOST_PRINTF_ACK 6
#define GAME_LOG_SEND 7
#define HOST_LOG_ACK 8
#define HOST_APP_CMD_READY 9
#define GAME_APP_DATA_READY 10
#define HOST_PROF_REQ 11
#define GAME_PROF_SEND 12
#define HOST_PROF_ACK 13
#define GAME_FAULT_SEND 14
#define HOST_FAULT_ACK 15
#define GAME_EXIT 16
#define HOST_DATA_ACK 17
#ifdef _EMULATOR
void __RamRomInit(int key, void *romaddr);
void __RamRomDestroy(int key);
#endif /* _EMULATOR */
#endif /* !_RAMROM_H */
-885
View File
@@ -1,885 +0,0 @@
#ifndef _RCP_H_
#define _RCP_H_
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* File: rcp.h
*
* This file contains register and bit definitions for RCP memory map.
* $Revision: 1.22 $
* $Date: 1999/05/20 03:01:49 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/rcp.h,v $
*
**************************************************************************/
#include <PR/R4300.h>
#include <PR/ultratypes.h>
/**********************************************************************
*
* Here is a quick overview of the RCP memory map:
*
0x0000_0000 .. 0x03ef_ffff RDRAM memory
0x03f0_0000 .. 0x03ff_ffff RDRAM registers
RCP registers (see below)
0x0400_0000 .. 0x040f_ffff SP registers
0x0410_0000 .. 0x041f_ffff DP command registers
0x0420_0000 .. 0x042f_ffff DP span registers
0x0430_0000 .. 0x043f_ffff MI registers
0x0440_0000 .. 0x044f_ffff VI registers
0x0450_0000 .. 0x045f_ffff AI registers
0x0460_0000 .. 0x046f_ffff PI registers
0x0470_0000 .. 0x047f_ffff RI registers
0x0480_0000 .. 0x048f_ffff SI registers
0x0490_0000 .. 0x04ff_ffff unused
0x0500_0000 .. 0x05ff_ffff cartridge domain 2
0x0600_0000 .. 0x07ff_ffff cartridge domain 1
0x0800_0000 .. 0x0fff_ffff cartridge domain 2
0x1000_0000 .. 0x1fbf_ffff cartridge domain 1
0x1fc0_0000 .. 0x1fc0_07bf PIF Boot Rom (1984 bytes)
0x1fc0_07c0 .. 0x1fc0_07ff PIF (JoyChannel) RAM (64 bytes)
0x1fc0_0800 .. 0x1fcf_ffff Reserved
0x1fd0_0000 .. 0x7fff_ffff cartridge domain 1
0x8000_0000 .. 0xffff_ffff external SysAD device
The Indy development board use cartridge domain 1:
0x1000_0000 .. 0x10ff_ffff RAMROM
0x1800_0000 .. 0x1800_0003 GIO interrupt (6 bits valid in 4 bytes)
0x1800_0400 .. 0x1800_0403 GIO sync (6 bits valid in 4 bytes)
0x1800_0800 .. 0x1800_0803 CART interrupt (6 bits valid in 4 bytes)
**************************************************************************/
/*************************************************************************
* RDRAM Memory (Assumes that maximum size is 4 MB)
*/
#define RDRAM_0_START 0x00000000
#define RDRAM_0_END 0x001FFFFF
#define RDRAM_1_START 0x00200000
#define RDRAM_1_END 0x003FFFFF
#define RDRAM_START RDRAM_0_START
#define RDRAM_END RDRAM_1_END
/*************************************************************************
* Address predicates
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
#define IS_RDRAM(x) ((unsigned)(x) >= RDRAM_START && \
(unsigned)(x) < RDRAM_END)
#endif
/*************************************************************************
* RDRAM Registers (0x03f0_0000 .. 0x03ff_ffff)
*/
#define RDRAM_BASE_REG 0x03F00000
#define RDRAM_CONFIG_REG (RDRAM_BASE_REG+0x00)
#define RDRAM_DEVICE_TYPE_REG (RDRAM_BASE_REG+0x00)
#define RDRAM_DEVICE_ID_REG (RDRAM_BASE_REG+0x04)
#define RDRAM_DELAY_REG (RDRAM_BASE_REG+0x08)
#define RDRAM_MODE_REG (RDRAM_BASE_REG+0x0c)
#define RDRAM_REF_INTERVAL_REG (RDRAM_BASE_REG+0x10)
#define RDRAM_REF_ROW_REG (RDRAM_BASE_REG+0x14)
#define RDRAM_RAS_INTERVAL_REG (RDRAM_BASE_REG+0x18)
#define RDRAM_MIN_INTERVAL_REG (RDRAM_BASE_REG+0x1c)
#define RDRAM_ADDR_SELECT_REG (RDRAM_BASE_REG+0x20)
#define RDRAM_DEVICE_MANUF_REG (RDRAM_BASE_REG+0x24)
#define RDRAM_0_DEVICE_ID 0
#define RDRAM_1_DEVICE_ID 1
#define RDRAM_RESET_MODE 0
#define RDRAM_ACTIVE_MODE 1
#define RDRAM_STANDBY_MODE 2
#define RDRAM_LENGTH (2*512*2048)
#define RDRAM_0_BASE_ADDRESS (RDRAM_0_DEVICE_ID*RDRAM_LENGTH)
#define RDRAM_1_BASE_ADDRESS (RDRAM_1_DEVICE_ID*RDRAM_LENGTH)
#define RDRAM_0_CONFIG 0x00000
#define RDRAM_1_CONFIG 0x00400
#define RDRAM_GLOBAL_CONFIG 0x80000
/*************************************************************************
* PIF Physical memory map (total size = 2 KB)
*
* Size Description Mode
* 1FC007FF +-------+-----------------+-----+
* | 64 B | JoyChannel RAM | R/W |
* 1FC007C0 +-------+-----------------+-----+
* |1984 B | Boot ROM | * | * = Reserved
* 1FC00000 +-------+-----------------+-----+
*
*/
#define PIF_ROM_START 0x1FC00000
#define PIF_ROM_END 0x1FC007BF
#define PIF_RAM_START 0x1FC007C0
#define PIF_RAM_END 0x1FC007FF
/*************************************************************************
* Controller channel
* Each game controller channel has 4 error bits that are defined in bit 6-7 of
* the Rx and Tx data size area bytes. Programmers need to clear these bits
* when setting the Tx/Rx size area values for a channel
*/
#define CHNL_ERR_NORESP 0x80 /* Bit 7 (Rx): No response error */
#define CHNL_ERR_OVERRUN 0x40 /* Bit 6 (Rx): Overrun error */
#define CHNL_ERR_FRAME 0x80 /* Bit 7 (Tx): Frame error */
#define CHNL_ERR_COLLISION 0x40 /* Bit 6 (Tx): Collision error */
#define CHNL_ERR_MASK 0xC0 /* Bit 6-7: channel errors */
/*************************************************************************
* External device info
*/
#define DEVICE_TYPE_CART 0 /* ROM cartridge */
#define DEVICE_TYPE_BULK 1 /* ROM bulk */
#define DEVICE_TYPE_64DD 2 /* 64 Disk Drive */
#define DEVICE_TYPE_SRAM 3 /* SRAM */
/* 4-6 are reserved */
#define DEVICE_TYPE_INIT 7 /* initial value */
/* 8-14 are reserved */
/*************************************************************************
* SP Memory
*/
#define SP_DMEM_START 0x04000000 /* read/write */
#define SP_DMEM_END 0x04000FFF
#define SP_IMEM_START 0x04001000 /* read/write */
#define SP_IMEM_END 0x04001FFF
/*************************************************************************
* SP CP0 Registers
*/
#define SP_BASE_REG 0x04040000
/* SP memory address (R/W): [11:0] DMEM/IMEM address; [12] 0=DMEM,1=IMEM */
#define SP_MEM_ADDR_REG (SP_BASE_REG+0x00) /* Master */
/* SP DRAM DMA address (R/W): [23:0] RDRAM address */
#define SP_DRAM_ADDR_REG (SP_BASE_REG+0x04) /* Slave */
/* SP read DMA length (R/W): [11:0] length, [19:12] count, [31:20] skip */
/* direction: I/DMEM <- RDRAM */
#define SP_RD_LEN_REG (SP_BASE_REG+0x08) /* R/W: read len */
/* SP write DMA length (R/W): [11:0] length, [19:12] count, [31:20] skip */
/* direction: I/DMEM -> RDRAM */
#define SP_WR_LEN_REG (SP_BASE_REG+0x0C) /* R/W: write len */
/* SP status (R/W): [14:0] valid bits; see below for write/read mode */
#define SP_STATUS_REG (SP_BASE_REG+0x10)
/* SP DMA full (R): [0] valid bit; dma full */
#define SP_DMA_FULL_REG (SP_BASE_REG+0x14)
/* SP DMA busy (R): [0] valid bit; dma busy */
#define SP_DMA_BUSY_REG (SP_BASE_REG+0x18)
/* SP semaphore (R/W): Read: [0] semaphore flag (set on read) */
/* Write: [] clear semaphore flag */
#define SP_SEMAPHORE_REG (SP_BASE_REG+0x1C)
/* SP PC (R/W): [11:0] program counter */
#define SP_PC_REG 0x04080000
/* SP MEM address: bit 12 specifies if address is IMEM or DMEM */
#define SP_DMA_DMEM 0x0000 /* Bit 12: 0=DMEM, 1=IMEM */
#define SP_DMA_IMEM 0x1000 /* Bit 12: 0=DMEM, 1=IMEM */
/*
* Values to clear/set bit in status reg (SP_STATUS_REG - write)
*/
#define SP_CLR_HALT 0x00001 /* Bit 0: clear halt */
#define SP_SET_HALT 0x00002 /* Bit 1: set halt */
#define SP_CLR_BROKE 0x00004 /* Bit 2: clear broke */
#define SP_CLR_INTR 0x00008 /* Bit 3: clear intr */
#define SP_SET_INTR 0x00010 /* Bit 4: set intr */
#define SP_CLR_SSTEP 0x00020 /* Bit 5: clear sstep */
#define SP_SET_SSTEP 0x00040 /* Bit 6: set sstep */
#define SP_CLR_INTR_BREAK 0x00080 /* Bit 7: clear intr on break */
#define SP_SET_INTR_BREAK 0x00100 /* Bit 8: set intr on break */
#define SP_CLR_SIG0 0x00200 /* Bit 9: clear signal 0 */
#define SP_SET_SIG0 0x00400 /* Bit 10: set signal 0 */
#define SP_CLR_SIG1 0x00800 /* Bit 11: clear signal 1 */
#define SP_SET_SIG1 0x01000 /* Bit 12: set signal 1 */
#define SP_CLR_SIG2 0x02000 /* Bit 13: clear signal 2 */
#define SP_SET_SIG2 0x04000 /* Bit 14: set signal 2 */
#define SP_CLR_SIG3 0x08000 /* Bit 15: clear signal 3 */
#define SP_SET_SIG3 0x10000 /* Bit 16: set signal 3 */
#define SP_CLR_SIG4 0x20000 /* Bit 17: clear signal 4 */
#define SP_SET_SIG4 0x40000 /* Bit 18: set signal 4 */
#define SP_CLR_SIG5 0x80000 /* Bit 19: clear signal 5 */
#define SP_SET_SIG5 0x100000 /* Bit 20: set signal 5 */
#define SP_CLR_SIG6 0x200000 /* Bit 21: clear signal 6 */
#define SP_SET_SIG6 0x400000 /* Bit 22: set signal 6 */
#define SP_CLR_SIG7 0x800000 /* Bit 23: clear signal 7 */
#define SP_SET_SIG7 0x1000000 /* Bit 24: set signal 7 */
/*
* Patterns to interpret status reg (SP_STATUS_REG - read)
*/
#define SP_STATUS_HALT 0x001 /* Bit 0: halt */
#define SP_STATUS_BROKE 0x002 /* Bit 1: broke */
#define SP_STATUS_DMA_BUSY 0x004 /* Bit 2: dma busy */
#define SP_STATUS_DMA_FULL 0x008 /* Bit 3: dma full */
#define SP_STATUS_IO_FULL 0x010 /* Bit 4: io full */
#define SP_STATUS_SSTEP 0x020 /* Bit 5: single step */
#define SP_STATUS_INTR_BREAK 0x040 /* Bit 6: interrupt on break */
#define SP_STATUS_SIG0 0x080 /* Bit 7: signal 0 set */
#define SP_STATUS_SIG1 0x100 /* Bit 8: signal 1 set */
#define SP_STATUS_SIG2 0x200 /* Bit 9: signal 2 set */
#define SP_STATUS_SIG3 0x400 /* Bit 10: signal 3 set */
#define SP_STATUS_SIG4 0x800 /* Bit 11: signal 4 set */
#define SP_STATUS_SIG5 0x1000 /* Bit 12: signal 5 set */
#define SP_STATUS_SIG6 0x2000 /* Bit 13: signal 6 set */
#define SP_STATUS_SIG7 0x4000 /* Bit 14: signal 7 set */
/*
* Use of SIG bits
*/
#define SP_CLR_YIELD SP_CLR_SIG0
#define SP_SET_YIELD SP_SET_SIG0
#define SP_STATUS_YIELD SP_STATUS_SIG0
#define SP_CLR_YIELDED SP_CLR_SIG1
#define SP_SET_YIELDED SP_SET_SIG1
#define SP_STATUS_YIELDED SP_STATUS_SIG1
#define SP_CLR_TASKDONE SP_CLR_SIG2
#define SP_SET_TASKDONE SP_SET_SIG2
#define SP_STATUS_TASKDONE SP_STATUS_SIG2
#define SP_CLR_RSPSIGNAL SP_CLR_SIG3
#define SP_SET_RSPSIGNAL SP_SET_SIG3
#define SP_STATUS_RSPSIGNAL SP_STATUS_SIG3
#define SP_CLR_CPUSIGNAL SP_CLR_SIG4
#define SP_SET_CPUSIGNAL SP_SET_SIG4
#define SP_STATUS_CPUSIGNAL SP_STATUS_SIG4
/* SP IMEM BIST REG (R/W): [6:0] BIST status bits; see below for detail */
#define SP_IBIST_REG 0x04080004
/*
* Patterns to interpret status reg (SP_BIST_REG - write)
*/
#define SP_IBIST_CHECK 0x01 /* Bit 0: BIST check */
#define SP_IBIST_GO 0x02 /* Bit 1: BIST go */
#define SP_IBIST_CLEAR 0x04 /* Bit 2: BIST clear */
/*
* Patterns to interpret status reg (SP_BIST_REG - read)
*/
/* First 2 bits are same as in write mode:
* Bit 0: BIST check; Bit 1: BIST go
*/
#define SP_IBIST_DONE 0x04 /* Bit 2: BIST done */
#define SP_IBIST_FAILED 0x78 /* Bit [6:3]: BIST fail */
/*************************************************************************
* DP Command Registers
*/
#define DPC_BASE_REG 0x04100000
/* DP CMD DMA start (R/W): [23:0] DMEM/RDRAM start address */
#define DPC_START_REG (DPC_BASE_REG+0x00)
/* DP CMD DMA end (R/W): [23:0] DMEM/RDRAM end address */
#define DPC_END_REG (DPC_BASE_REG+0x04)
/* DP CMD DMA end (R): [23:0] DMEM/RDRAM current address */
#define DPC_CURRENT_REG (DPC_BASE_REG+0x08)
/* DP CMD status (R/W): [9:0] valid bits - see below for definitions */
#define DPC_STATUS_REG (DPC_BASE_REG+0x0C)
/* DP clock counter (R): [23:0] clock counter */
#define DPC_CLOCK_REG (DPC_BASE_REG+0x10)
/* DP buffer busy counter (R): [23:0] clock counter */
#define DPC_BUFBUSY_REG (DPC_BASE_REG+0x14)
/* DP pipe busy counter (R): [23:0] clock counter */
#define DPC_PIPEBUSY_REG (DPC_BASE_REG+0x18)
/* DP TMEM load counter (R): [23:0] clock counter */
#define DPC_TMEM_REG (DPC_BASE_REG+0x1C)
/*
* Values to clear/set bit in status reg (DPC_STATUS_REG - write)
*/
#define DPC_CLR_XBUS_DMEM_DMA 0x0001 /* Bit 0: clear xbus_dmem_dma */
#define DPC_SET_XBUS_DMEM_DMA 0x0002 /* Bit 1: set xbus_dmem_dma */
#define DPC_CLR_FREEZE 0x0004 /* Bit 2: clear freeze */
#define DPC_SET_FREEZE 0x0008 /* Bit 3: set freeze */
#define DPC_CLR_FLUSH 0x0010 /* Bit 4: clear flush */
#define DPC_SET_FLUSH 0x0020 /* Bit 5: set flush */
#define DPC_CLR_TMEM_CTR 0x0040 /* Bit 6: clear tmem ctr */
#define DPC_CLR_PIPE_CTR 0x0080 /* Bit 7: clear pipe ctr */
#define DPC_CLR_CMD_CTR 0x0100 /* Bit 8: clear cmd ctr */
#define DPC_CLR_CLOCK_CTR 0x0200 /* Bit 9: clear clock ctr */
/*
* Patterns to interpret status reg (DPC_STATUS_REG - read)
*/
#define DPC_STATUS_XBUS_DMEM_DMA 0x001 /* Bit 0: xbus_dmem_dma */
#define DPC_STATUS_FREEZE 0x002 /* Bit 1: freeze */
#define DPC_STATUS_FLUSH 0x004 /* Bit 2: flush */
/*#define DPC_STATUS_FROZEN 0x008*/ /* Bit 3: frozen */
#define DPC_STATUS_START_GCLK 0x008 /* Bit 3: start gclk */
#define DPC_STATUS_TMEM_BUSY 0x010 /* Bit 4: tmem busy */
#define DPC_STATUS_PIPE_BUSY 0x020 /* Bit 5: pipe busy */
#define DPC_STATUS_CMD_BUSY 0x040 /* Bit 6: cmd busy */
#define DPC_STATUS_CBUF_READY 0x080 /* Bit 7: cbuf ready */
#define DPC_STATUS_DMA_BUSY 0x100 /* Bit 8: dma busy */
#define DPC_STATUS_END_VALID 0x200 /* Bit 9: end valid */
#define DPC_STATUS_START_VALID 0x400 /* Bit 10: start valid */
/*************************************************************************
* DP Span Registers
*/
#define DPS_BASE_REG 0x04200000
/* DP tmem bist (R/W): [10:0] BIST status bits; see below for detail */
#define DPS_TBIST_REG (DPS_BASE_REG+0x00)
/* DP span test mode (R/W): [0] Span buffer test access enable */
#define DPS_TEST_MODE_REG (DPS_BASE_REG+0x04)
/* DP span buffer test address (R/W): [6:0] bits; see below for detail */
#define DPS_BUFTEST_ADDR_REG (DPS_BASE_REG+0x08)
/* DP span buffer test data (R/W): [31:0] span buffer data */
#define DPS_BUFTEST_DATA_REG (DPS_BASE_REG+0x0C)
/*
* Patterns to interpret status reg (DPS_TMEM_BIST_REG - write)
*/
#define DPS_TBIST_CHECK 0x01 /* Bit 0: BIST check */
#define DPS_TBIST_GO 0x02 /* Bit 1: BIST go */
#define DPS_TBIST_CLEAR 0x04 /* Bit 2: BIST clear */
/*
* Patterns to interpret status reg (DPS_TMEM_BIST_REG - read)
*/
/* First 2 bits are same as in write mode:
* Bit 0: BIST check; Bit 1: BIST go
*/
#define DPS_TBIST_DONE 0x004 /* Bit 2: BIST done */
#define DPS_TBIST_FAILED 0x7F8 /* Bit [10:3]: BIST fail */
/*************************************************************************
* MIPS Interface (MI) Registers
*/
#define MI_BASE_REG 0x04300000
/*
* MI init mode (W): [6:0] init length, [7] clear init mode, [8] set init mode
* [9/10] clear/set ebus test mode, [11] clear DP interrupt
* (R): [6:0] init length, [7] init mode, [8] ebus test mode
*/
#define MI_INIT_MODE_REG (MI_BASE_REG+0x00)
#define MI_MODE_REG MI_INIT_MODE_REG
/*
* Values to clear/set bit in mode reg (MI_MODE_REG - write)
*/
#define MI_CLR_INIT 0x0080 /* Bit 7: clear init mode */
#define MI_SET_INIT 0x0100 /* Bit 8: set init mode */
#define MI_CLR_EBUS 0x0200 /* Bit 9: clear ebus test */
#define MI_SET_EBUS 0x0400 /* Bit 10: set ebus test mode */
#define MI_CLR_DP_INTR 0x0800 /* Bit 11: clear dp interrupt */
#define MI_CLR_RDRAM 0x1000 /* Bit 12: clear RDRAM reg */
#define MI_SET_RDRAM 0x2000 /* Bit 13: set RDRAM reg mode */
/*
* Patterns to interpret mode reg (MI_MODE_REG - read)
*/
#define MI_MODE_INIT 0x0080 /* Bit 7: init mode */
#define MI_MODE_EBUS 0x0100 /* Bit 8: ebus test mode */
#define MI_MODE_RDRAM 0x0200 /* Bit 9: RDRAM reg mode */
/* MI version (R): [7:0] io, [15:8] rac, [23:16] rdp, [31:24] rsp */
#define MI_VERSION_REG (MI_BASE_REG+0x04)
#define MI_NOOP_REG MI_VERSION_REG
/* MI interrupt (R): [5:0] valid bits - see below for bit patterns */
#define MI_INTR_REG (MI_BASE_REG+0x08)
/*
* MI interrupt mask (W): [11:0] valid bits - see below for bit patterns
* (R): [5:0] valid bits - see below for bit patterns
*/
#define MI_INTR_MASK_REG (MI_BASE_REG+0x0C)
/*
* The following are values to check for interrupt setting (MI_INTR_REG)
*/
#define MI_INTR_SP 0x01 /* Bit 0: SP intr */
#define MI_INTR_SI 0x02 /* Bit 1: SI intr */
#define MI_INTR_AI 0x04 /* Bit 2: AI intr */
#define MI_INTR_VI 0x08 /* Bit 3: VI intr */
#define MI_INTR_PI 0x10 /* Bit 4: PI intr */
#define MI_INTR_DP 0x20 /* Bit 5: DP intr */
/*
* The following are values to clear/set various interrupt bit mask
* They can be ORed together to manipulate multiple bits
* (MI_INTR_MASK_REG - write)
*/
#define MI_INTR_MASK_CLR_SP 0x0001 /* Bit 0: clear SP mask */
#define MI_INTR_MASK_SET_SP 0x0002 /* Bit 1: set SP mask */
#define MI_INTR_MASK_CLR_SI 0x0004 /* Bit 2: clear SI mask */
#define MI_INTR_MASK_SET_SI 0x0008 /* Bit 3: set SI mask */
#define MI_INTR_MASK_CLR_AI 0x0010 /* Bit 4: clear AI mask */
#define MI_INTR_MASK_SET_AI 0x0020 /* Bit 5: set AI mask */
#define MI_INTR_MASK_CLR_VI 0x0040 /* Bit 6: clear VI mask */
#define MI_INTR_MASK_SET_VI 0x0080 /* Bit 7: set VI mask */
#define MI_INTR_MASK_CLR_PI 0x0100 /* Bit 8: clear PI mask */
#define MI_INTR_MASK_SET_PI 0x0200 /* Bit 9: set PI mask */
#define MI_INTR_MASK_CLR_DP 0x0400 /* Bit 10: clear DP mask */
#define MI_INTR_MASK_SET_DP 0x0800 /* Bit 11: set DP mask */
/*
* The following are values to check for interrupt mask setting
* (MI_INTR_MASK_REG - read)
*/
#define MI_INTR_MASK_SP 0x01 /* Bit 0: SP intr mask */
#define MI_INTR_MASK_SI 0x02 /* Bit 1: SI intr mask */
#define MI_INTR_MASK_AI 0x04 /* Bit 2: AI intr mask */
#define MI_INTR_MASK_VI 0x08 /* Bit 3: VI intr mask */
#define MI_INTR_MASK_PI 0x10 /* Bit 4: PI intr mask */
#define MI_INTR_MASK_DP 0x20 /* Bit 5: DP intr mask */
/*************************************************************************
* Video Interface (VI) Registers
*/
#define VI_BASE_REG 0x04400000
/* VI status/control (R/W): [15-0] valid bits:
* [1:0] = type[1:0] (pixel size)
* 0: blank (no data, no sync)
* 1: reserved
* 2: 5/5/5/3 ("16" bit)
* 3: 8/8/8/8 (32 bit)
* [2] = gamma_dither_enable (normally on, unless "special effect")
* [3] = gamma_enable (normally on, unless MPEG/JPEG)
* [4] = divot_enable (normally on if antialiased, unless decal lines)
* [5] = reserved - always off
* [6] = serrate (always on if interlaced, off if not)
* [7] = reserved - diagnostics only
* [9:8] = anti-alias (aa) mode[1:0]
* 0: aa & resamp (always fetch extra lines)
* 1: aa & resamp (fetch extra lines if needed)
* 2: resamp only (treat as all fully covered)
* 3: neither (replicate pixels, no interpolate)
* [11] = reserved - diagnostics only
* [15:12] = reserved
*
*/
#define VI_STATUS_REG (VI_BASE_REG+0x00)
#define VI_CONTROL_REG VI_STATUS_REG
/* VI origin (R/W): [23:0] frame buffer origin in bytes */
#define VI_ORIGIN_REG (VI_BASE_REG+0x04)
#define VI_DRAM_ADDR_REG VI_ORIGIN_REG
/* VI width (R/W): [11:0] frame buffer line width in pixels */
#define VI_WIDTH_REG (VI_BASE_REG+0x08)
#define VI_H_WIDTH_REG VI_WIDTH_REG
/* VI vertical intr (R/W): [9:0] interrupt when current half-line = V_INTR */
#define VI_INTR_REG (VI_BASE_REG+0x0C)
#define VI_V_INTR_REG VI_INTR_REG
/*
* VI current vertical line (R/W): [9:0] current half line, sampled once per
* line (the lsb of V_CURRENT is constant within a field, and in
* interlaced modes gives the field number - which is constant for non-
* interlaced modes)
* - Any write to this register will clear interrupt line
*/
#define VI_CURRENT_REG (VI_BASE_REG+0x10)
#define VI_V_CURRENT_LINE_REG VI_CURRENT_REG
/*
* VI video timing (R/W): [ 7: 0] horizontal sync width in pixels,
* [15: 8] color burst width in pixels,
* [19:16] vertical sync width in half lines,
* [29:20] start of color burst in pixels from h-sync
*/
#define VI_BURST_REG (VI_BASE_REG+0x14)
#define VI_TIMING_REG VI_BURST_REG
/* VI vertical sync (R/W): [9:0] number of half-lines per field */
#define VI_V_SYNC_REG (VI_BASE_REG+0x18)
/* VI horizontal sync (R/W): [11: 0] total duration of a line in 1/4 pixel
* [20:16] a 5-bit leap pattern used for PAL only
* (h_sync_period)
*/
#define VI_H_SYNC_REG (VI_BASE_REG+0x1C)
/*
* VI horizontal sync leap (R/W): [11: 0] identical to h_sync_period
* [27:16] identical to h_sync_period
*/
#define VI_LEAP_REG (VI_BASE_REG+0x20)
#define VI_H_SYNC_LEAP_REG VI_LEAP_REG
/*
* VI horizontal video (R/W): [ 9: 0] end of active video in screen pixels
* : [25:16] start of active video in screen pixels
*/
#define VI_H_START_REG (VI_BASE_REG+0x24)
#define VI_H_VIDEO_REG VI_H_START_REG
/*
* VI vertical video (R/W): [ 9: 0] end of active video in screen half-lines
* : [25:16] start of active video in screen half-lines
*/
#define VI_V_START_REG (VI_BASE_REG+0x28)
#define VI_V_VIDEO_REG VI_V_START_REG
/*
* VI vertical burst (R/W): [ 9: 0] end of color burst enable in half-lines
* : [25:16] start of color burst enable in half-lines
*/
#define VI_V_BURST_REG (VI_BASE_REG+0x2C)
/* VI x-scale (R/W): [11: 0] 1/horizontal scale up factor (2.10 format)
* [27:16] horizontal subpixel offset (2.10 format)
*/
#define VI_X_SCALE_REG (VI_BASE_REG+0x30)
/* VI y-scale (R/W): [11: 0] 1/vertical scale up factor (2.10 format)
* [27:16] vertical subpixel offset (2.10 format)
*/
#define VI_Y_SCALE_REG (VI_BASE_REG+0x34)
/*
* Patterns to interpret VI_CONTROL_REG
*/
#define VI_CTRL_TYPE_16 0x00002 /* Bit [1:0] pixel size: 16 bit */
#define VI_CTRL_TYPE_32 0x00003 /* Bit [1:0] pixel size: 32 bit */
#define VI_CTRL_GAMMA_DITHER_ON 0x00004 /* Bit 2: default = on */
#define VI_CTRL_GAMMA_ON 0x00008 /* Bit 3: default = on */
#define VI_CTRL_DIVOT_ON 0x00010 /* Bit 4: default = on */
#define VI_CTRL_SERRATE_ON 0x00040 /* Bit 6: on if interlaced */
#define VI_CTRL_ANTIALIAS_MASK 0x00300 /* Bit [9:8] anti-alias mode */
#define VI_CTRL_DITHER_FILTER_ON 0x10000 /* Bit 16: dither-filter mode */
/*
* Possible video clocks (NTSC or PAL)
*/
#define VI_NTSC_CLOCK 48681812 /* Hz = 48.681812 MHz */
#define VI_PAL_CLOCK 49656530 /* Hz = 49.656530 MHz */
#define VI_MPAL_CLOCK 48628316 /* Hz = 48.628316 MHz */
/*************************************************************************
* Audio Interface (AI) Registers
*
* The address and length registers are double buffered; that is, they
* can be written twice before becoming full.
* The address must be written before the length.
*/
#define AI_BASE_REG 0x04500000
/* AI DRAM address (W): [23:0] starting RDRAM address (8B-aligned) */
#define AI_DRAM_ADDR_REG (AI_BASE_REG+0x00) /* R0: DRAM address */
/* AI length (R/W): [14:0] transfer length (v1.0) - Bottom 3 bits are ignored */
/* [17:0] transfer length (v2.0) - Bottom 3 bits are ignored */
#define AI_LEN_REG (AI_BASE_REG+0x04) /* R1: Length */
/* AI control (W): [0] DMA enable - if LSB == 1, DMA is enabled */
#define AI_CONTROL_REG (AI_BASE_REG+0x08) /* R2: DMA Control */
/*
* AI status (R): [31]/[0] ai_full (addr & len buffer full), [30] ai_busy
* Note that a 1->0 transition in ai_full will set interrupt
* (W): clear audio interrupt
*/
#define AI_STATUS_REG (AI_BASE_REG+0x0C) /* R3: Status */
/*
* AI DAC sample period register (W): [13:0] dac rate
* - vid_clock/(dperiod + 1) is the DAC sample rate
* - (dperiod + 1) >= 66 * (aclockhp + 1) must be true
*/
#define AI_DACRATE_REG (AI_BASE_REG+0x10) /* R4: DAC rate 14-lsb*/
/*
* AI bit rate (W): [3:0] bit rate (abus clock half period register - aclockhp)
* - vid_clock/(2 * (aclockhp + 1)) is the DAC clock rate
* - The abus clock stops if aclockhp is zero
*/
#define AI_BITRATE_REG (AI_BASE_REG+0x14) /* R5: Bit rate 4-lsb */
/* Value for control register */
#define AI_CONTROL_DMA_ON 0x01 /* LSB = 1: DMA enable*/
#define AI_CONTROL_DMA_OFF 0x00 /* LSB = 1: DMA enable*/
/* Value for status register */
#define AI_STATUS_FIFO_FULL 0x80000000 /* Bit 31: full */
#define AI_STATUS_DMA_BUSY 0x40000000 /* Bit 30: busy */
/* DAC rate = video clock / audio frequency
* - DAC rate >= (66 * Bit rate) must be true
*/
#define AI_MAX_DAC_RATE 16384 /* 14-bit+1 */
#define AI_MIN_DAC_RATE 132
/* Bit rate <= (DAC rate / 66) */
#define AI_MAX_BIT_RATE 16 /* 4-bit+1 */
#define AI_MIN_BIT_RATE 2
/*
* Maximum and minimum values for audio frequency based on video clocks
* max frequency = (video clock / min dac rate)
* min frequency = (video clock / max dac rate)
*/
#define AI_NTSC_MAX_FREQ 368000 /* 368 KHz */
#define AI_NTSC_MIN_FREQ 3000 /* 3 KHz ~ 2971 Hz */
#define AI_PAL_MAX_FREQ 376000 /* 376 KHz */
#define AI_PAL_MIN_FREQ 3050 /* 3 KHz ~ 3031 Hz */
#define AI_MPAL_MAX_FREQ 368000 /* 368 KHz */
#define AI_MPAL_MIN_FREQ 3000 /* 3 KHz ~ 2968 Hz */
/*************************************************************************
* Peripheral Interface (PI) Registers
*/
#define PI_BASE_REG 0x04600000
/* PI DRAM address (R/W): [23:0] starting RDRAM address */
#define PI_DRAM_ADDR_REG (PI_BASE_REG+0x00) /* DRAM address */
/* PI pbus (cartridge) address (R/W): [31:0] starting AD16 address */
#define PI_CART_ADDR_REG (PI_BASE_REG+0x04)
/* PI read length (R/W): [23:0] read data length */
#define PI_RD_LEN_REG (PI_BASE_REG+0x08)
/* PI write length (R/W): [23:0] write data length */
#define PI_WR_LEN_REG (PI_BASE_REG+0x0C)
/*
* PI status (R): [0] DMA busy, [1] IO busy, [2], error
* (W): [0] reset controller (and abort current op), [1] clear intr
*/
#define PI_STATUS_REG (PI_BASE_REG+0x10)
/* PI dom1 latency (R/W): [7:0] domain 1 device latency */
#define PI_BSD_DOM1_LAT_REG (PI_BASE_REG+0x14)
/* PI dom1 pulse width (R/W): [7:0] domain 1 device R/W strobe pulse width */
#define PI_BSD_DOM1_PWD_REG (PI_BASE_REG+0x18)
/* PI dom1 page size (R/W): [3:0] domain 1 device page size */
#define PI_BSD_DOM1_PGS_REG (PI_BASE_REG+0x1C) /* page size */
/* PI dom1 release (R/W): [1:0] domain 1 device R/W release duration */
#define PI_BSD_DOM1_RLS_REG (PI_BASE_REG+0x20)
/* PI dom2 latency (R/W): [7:0] domain 2 device latency */
#define PI_BSD_DOM2_LAT_REG (PI_BASE_REG+0x24) /* Domain 2 latency */
/* PI dom2 pulse width (R/W): [7:0] domain 2 device R/W strobe pulse width */
#define PI_BSD_DOM2_PWD_REG (PI_BASE_REG+0x28) /* pulse width */
/* PI dom2 page size (R/W): [3:0] domain 2 device page size */
#define PI_BSD_DOM2_PGS_REG (PI_BASE_REG+0x2C) /* page size */
/* PI dom2 release (R/W): [1:0] domain 2 device R/W release duration */
#define PI_BSD_DOM2_RLS_REG (PI_BASE_REG+0x30) /* release duration */
#define PI_DOMAIN1_REG PI_BSD_DOM1_LAT_REG
#define PI_DOMAIN2_REG PI_BSD_DOM2_LAT_REG
#define PI_DOM_LAT_OFS 0x00
#define PI_DOM_PWD_OFS 0x04
#define PI_DOM_PGS_OFS 0x08
#define PI_DOM_RLS_OFS 0x0C
/*
* PI status register has 3 bits active when read from (PI_STATUS_REG - read)
* Bit 0: DMA busy - set when DMA is in progress
* Bit 1: IO busy - set when IO is in progress
* Bit 2: Error - set when CPU issues IO request while DMA is busy
*/
#define PI_STATUS_ERROR 0x04
#define PI_STATUS_IO_BUSY 0x02
#define PI_STATUS_DMA_BUSY 0x01
/* PI status register has 2 bits active when written to:
* Bit 0: When set, reset PIC
* Bit 1: When set, clear interrupt flag
* The values of the two bits can be ORed together to both reset PIC and
* clear interrupt at the same time.
*
* Note:
* - The PIC does generate an interrupt at the end of each DMA. CPU
* needs to clear the interrupt flag explicitly (from an interrupt
* handler) by writing into the STATUS register with bit 1 set.
*
* - When a DMA completes, the interrupt flag is set. CPU can issue
* another request even while the interrupt flag is set (as long as
* PIC is idle). However, it is the CPU's responsibility for
* maintaining accurate correspondence between DMA completions and
* interrupts.
*
* - When PIC is reset, if PIC happens to be busy, an interrupt will
* be generated as PIC returns to idle. Otherwise, no interrupt will
* be generated and PIC remains idle.
*/
/*
* Values to clear interrupt/reset PIC (PI_STATUS_REG - write)
*/
#define PI_STATUS_RESET 0x01
#define PI_SET_RESET PI_STATUS_RESET
#define PI_STATUS_CLR_INTR 0x02
#define PI_CLR_INTR PI_STATUS_CLR_INTR
#define PI_DMA_BUFFER_SIZE 128
#define PI_DOM1_ADDR1 0x06000000 /* to 0x07FFFFFF */
#define PI_DOM1_ADDR2 0x10000000 /* to 0x1FBFFFFF */
#define PI_DOM1_ADDR3 0x1FD00000 /* to 0x7FFFFFFF */
#define PI_DOM2_ADDR1 0x05000000 /* to 0x05FFFFFF */
#define PI_DOM2_ADDR2 0x08000000 /* to 0x0FFFFFFF */
/*************************************************************************
* RDRAM Interface (RI) Registers
*/
#define RI_BASE_REG 0x04700000
/* RI mode (R/W): [1:0] operating mode, [2] stop T active, [3] stop R active */
#define RI_MODE_REG (RI_BASE_REG+0x00)
/* RI config (R/W): [5:0] current control input, [6] current control enable */
#define RI_CONFIG_REG (RI_BASE_REG+0x04)
/* RI current load (W): [] any write updates current control register */
#define RI_CURRENT_LOAD_REG (RI_BASE_REG+0x08)
/* RI select (R/W): [2:0] receive select, [2:0] transmit select */
#define RI_SELECT_REG (RI_BASE_REG+0x0C)
/* RI refresh (R/W): [7:0] clean refresh delay, [15:8] dirty refresh delay,
* [16] refresh bank, [17] refresh enable
* [18] refresh optimize
*/
#define RI_REFRESH_REG (RI_BASE_REG+0x10)
#define RI_COUNT_REG RI_REFRESH_REG
/* RI latency (R/W): [3:0] DMA latency/overlap */
#define RI_LATENCY_REG (RI_BASE_REG+0x14)
/* RI error (R): [0] nack error, [1] ack error */
#define RI_RERROR_REG (RI_BASE_REG+0x18)
/* RI error (W): [] any write clears all error bits */
#define RI_WERROR_REG (RI_BASE_REG+0x1C)
/*************************************************************************
* Serial Interface (SI) Registers
*/
#define SI_BASE_REG 0x04800000
/* SI DRAM address (R/W): [23:0] starting RDRAM address */
#define SI_DRAM_ADDR_REG (SI_BASE_REG+0x00) /* R0: DRAM address */
/* SI address read 64B (W): [] any write causes a 64B DMA write */
#define SI_PIF_ADDR_RD64B_REG (SI_BASE_REG+0x04) /* R1: 64B PIF->DRAM */
/* Address SI_BASE_REG + (0x08, 0x0c, 0x14) are reserved */
/* SI address write 64B (W): [] any write causes a 64B DMA read */
#define SI_PIF_ADDR_WR64B_REG (SI_BASE_REG+0x10) /* R4: 64B DRAM->PIF */
/*
* SI status (W): [] any write clears interrupt
* (R): [0] DMA busy, [1] IO read busy, [2] reserved
* [3] DMA error, [12] interrupt
*/
#define SI_STATUS_REG (SI_BASE_REG+0x18) /* R6: Status */
/* SI status register has the following bits active:
* 0: DMA busy - set when DMA is in progress
* 1: IO busy - set when IO access is in progress
* 3: DMA error - set when there are overlapping DMA requests
* 12: Interrupt - Interrupt set
*/
#define SI_STATUS_DMA_BUSY 0x0001
#define SI_STATUS_RD_BUSY 0x0002
#define SI_STATUS_DMA_ERROR 0x0008
#define SI_STATUS_INTERRUPT 0x1000
/*************************************************************************
* Development Board GIO Control Registers
*/
#define GIO_BASE_REG 0x18000000
/* Game to Host Interrupt */
#define GIO_GIO_INTR_REG (GIO_BASE_REG+0x000)
/* Game to Host SYNC */
#define GIO_GIO_SYNC_REG (GIO_BASE_REG+0x400)
/* Host to Game Interrupt */
#define GIO_CART_INTR_REG (GIO_BASE_REG+0x800)
/*************************************************************************
* Common macros
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
#define IO_READ(addr) (*(vu32 *)PHYS_TO_K1(addr))
#define IO_WRITE(addr,data) (*(vu32 *)PHYS_TO_K1(addr)=(u32)(data))
#define RCP_STAT_PRINT \
rmonPrintf("current=%x start=%x end=%x dpstat=%x spstat=%x\n", \
IO_READ(DPC_CURRENT_REG), \
IO_READ(DPC_START_REG), \
IO_READ(DPC_END_REG), \
IO_READ(DPC_STATUS_REG), \
IO_READ(SP_STATUS_REG))
#endif
#endif /* _RCP_H_ */
-93
View File
@@ -1,93 +0,0 @@
/**************************************************************************
*
* $Revision: 1.6 $
* $Date: 1997/02/11 08:29:31 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/rdb.h,v $
*
**************************************************************************/
#ifndef _RDB_H
#define _RDB_H
/* U64 side address */
#define RDB_BASE_REG 0xc0000000
#define RDB_WRITE_INTR_REG (RDB_BASE_REG + 0x8)
#define RDB_READ_INTR_REG (RDB_BASE_REG + 0xc)
#define RDB_BASE_VIRTUAL_ADDR 0x80000000
/* packet type Have six bits, so can have up to 63 types */
#define RDB_TYPE_INVALID 0
#define RDB_TYPE_GtoH_PRINT 1
#define RDB_TYPE_GtoH_FAULT 2
#define RDB_TYPE_GtoH_LOG_CT 3
#define RDB_TYPE_GtoH_LOG 4
#define RDB_TYPE_GtoH_READY_FOR_DATA 5
#define RDB_TYPE_GtoH_DATA_CT 6
#define RDB_TYPE_GtoH_DATA 7
#define RDB_TYPE_GtoH_DEBUG 8
#define RDB_TYPE_GtoH_RAMROM 9
#define RDB_TYPE_GtoH_DEBUG_DONE 10
#define RDB_TYPE_GtoH_DEBUG_READY 11
#define RDB_TYPE_GtoH_KDEBUG 12
#define RDB_TYPE_GtoH_PROF_DATA 22
#define RDB_TYPE_HtoG_LOG_DONE 13
#define RDB_TYPE_HtoG_DEBUG 14
#define RDB_TYPE_HtoG_DEBUG_CT 15
#define RDB_TYPE_HtoG_DATA 16
#define RDB_TYPE_HtoG_DATA_DONE 17
#define RDB_TYPE_HtoG_REQ_RAMROM 18
#define RDB_TYPE_HtoG_FREE_RAMROM 19
#define RDB_TYPE_HtoG_KDEBUG 20
#define RDB_TYPE_HtoG_PROF_SIGNAL 21
#define RDB_PROF_ACK_SIG 1
#define RDB_PROF_FLUSH_SIG 2
#define PROF_BLOCK_SIZE 2048
#define RDB_LOG_MAX_BLOCK_SIZE 0x8000
#define RDB_DATA_MAX_BLOCK_SIZE 0x8000
/* GIO side address */
#define GIO_RDB_BASE_REG 0xbf480000
#define GIO_RDB_WRITE_INTR_REG (GIO_RDB_BASE_REG + 0x8)
#define GIO_RDB_READ_INTR_REG (GIO_RDB_BASE_REG + 0xc)
/* minor device number */
#define GIO_RDB_PRINT_MINOR 1
#define GIO_RDB_DEBUG_MINOR 2
/* interrupt bit */
#define GIO_RDB_WRITE_INTR_BIT 0x80000000
#define GIO_RDB_READ_INTR_BIT 0x40000000
/* debug command */
#define DEBUG_COMMAND_NULL 0
#define DEBUG_COMMAND_MEMORY 1
#define DEBUG_COMMAND_REGISTER 2
#define DEBUG_COMMAND_INVALID 255
/* debug state */
#define DEBUG_STATE_NULL 0
#define DEBUG_STATE_RECEIVE 1
#define DEBUG_STATE_INVALID 255
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* Structure for debug port */
typedef struct {
unsigned type : 6; /* 0: invalid, 1: print, 2: debug */
unsigned length : 2; /* 1, 2, or 3 */
char buf[3]; /* character buffer */
} rdbPacket;
extern unsigned int __osRdbWriteOK;
extern unsigned int __osRdbSendMessage;
#endif /* _LANGUAGE_C */
#endif /* !_RDB_H */
-123
View File
@@ -1,123 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* Module: region.h
*
* $Revision: 1.8 $
* $Date: 1997/11/26 00:30:56 $
* $Author: mitu $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/region.h,v $
*
* Description:
* This file contains macros and structure definitions for the region
* library.
*
**************************************************************************/
#ifndef _REGION_H_
#define _REGION_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
/***************************************
*
* Global defines
*
*/
/* Alignment sizes */
#define ALIGNSZ (sizeof(long long)) /* 8 bytes */
#define ALIGNOFFST (ALIGNSZ-1)
/* size for storing index to free buffer */
#define BUF_CTRL_SIZE ALIGNSZ
/* Max bufcount = 32K */
#define MAX_BUFCOUNT 0x8000
/* code for last free buffer */
#define BUF_FREE_WO_NEXT 0x8000
/*
* Global defines for alignment size (default is 8-byte alignment)
*/
#define OS_RG_ALIGN_2B 2 /* 2 bytes = 16-bit alignment */
#define OS_RG_ALIGN_4B 4 /* 4 bytes = 32-bit alignment */
#define OS_RG_ALIGN_8B 8 /* 8 bytes = 64-bit alignment */
#define OS_RG_ALIGN_16B 16 /* 16 bytes = 128-bit alignment */
#define OS_RG_ALIGN_DEFAULT OS_RG_ALIGN_8B
/***************************************
*
* Macro definitions
*
*/
/* Perform alignment on input 's' */
#define ALIGN(s, align) (((u32)(s) + ((align)-1)) & ~((align)-1))
/***************************************
*
* Typedefs & structure definitions
*
*/
/*
* Structure for region header/control area
*/
typedef struct _Region_s {
u8 *r_startBufferAddress; /* start address to data buffer */
u8 *r_endAddress; /* end address of region */
s32 r_bufferSize; /* size of buffers for this region */
s32 r_bufferCount; /* up to 32K entries; MSB is used for
setting end-of-list/used */
u16 r_freeList; /* point to array index of first
available memory buffer */
u16 r_alignSize; /* alignment size (# of bytes) */
} OSRegion;
/*
* Macro to simplify accessing region header structure
*/
#define RP(x) rp->r_##x
/***************************************
*
* Function prototypes
*
*/
extern void *osCreateRegion(void *, u32, u32, u32);
extern void *osMalloc(void *);
extern void osFree(void *, void *);
extern s32 osGetRegionBufCount(void *);
extern s32 osGetRegionBufSize(void *);
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* _REGION_H_ */
-39
View File
@@ -1,39 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.6 $
* $Date: 1997/02/11 08:30:08 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/rmon.h,v $
*
**************************************************************************/
#ifndef _RMON_H_
#define _RMON_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#define RMON_DBG_BUF_SIZE 2048
#define RMON_STACKSIZE 0x1000
extern void rmonMain( void * );
extern void rmonPrintf( const char *, ... );
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_H */
-115
View File
@@ -1,115 +0,0 @@
/*====================================================================
* sched.h
*
* Synopsis:
*
* Copyright 1993, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/**************************************************************************
*
* $Revision: 1.7 $
* $Date: 1997/02/11 08:32:02 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/sched.h,v $
*
**************************************************************************/
#ifndef __sched__
#define __sched__
#include <ultra64.h>
#define OS_SC_STACKSIZE 0x2000
#define OS_SC_RETRACE_MSG 1
#define OS_SC_DONE_MSG 2
#define OS_SC_RDP_DONE_MSG 3
#define OS_SC_PRE_NMI_MSG 4
#define OS_SC_LAST_MSG 4 /* this should have highest number */
#define OS_SC_MAX_MESGS 8
typedef struct {
short type;
char misc[30];
} OSScMsg;
typedef struct OSScTask_s {
struct OSScTask_s *next; /* note: this must be first */
u32 state;
u32 flags;
void *framebuffer; /* used by graphics tasks */
OSTask list;
OSMesgQueue *msgQ;
OSMesg msg;
#ifndef _FINALROM /* all #ifdef items should */
OSTime startTime; /* remain at the end!!, or */
OSTime totalTime; /* possible conflict if */
#endif /* FINALROM library used with */
} OSScTask; /* non FINALROM code */
/*
* OSScTask flags:
*/
#define OS_SC_NEEDS_RDP 0x0001 /* uses the RDP */
#define OS_SC_NEEDS_RSP 0x0002 /* uses the RSP */
#define OS_SC_DRAM_DLIST 0x0004 /* SP & DP communicate through DRAM */
#define OS_SC_PARALLEL_TASK 0x0010 /* must be first gfx task on list */
#define OS_SC_LAST_TASK 0x0020 /* last task in queue for frame */
#define OS_SC_SWAPBUFFER 0x0040 /* swapbuffers when gfx task done */
#define OS_SC_RCP_MASK 0x0003 /* mask for needs bits */
#define OS_SC_TYPE_MASK 0x0007 /* complete type mask */
/*
* OSScClient:
*
* Data structure used by threads that wish to communicate to the
* scheduling thread
*
*/
typedef struct SCClient_s {
struct SCClient_s *next; /* next client in the list */
OSMesgQueue *msgQ; /* where to send the frame msg */
} OSScClient;
typedef struct {
OSScMsg retraceMsg;
OSScMsg prenmiMsg;
OSMesgQueue interruptQ;
OSMesg intBuf[OS_SC_MAX_MESGS];
OSMesgQueue cmdQ;
OSMesg cmdMsgBuf[OS_SC_MAX_MESGS];
OSThread thread;
OSScClient *clientList;
OSScTask *audioListHead;
OSScTask *gfxListHead;
OSScTask *audioListTail;
OSScTask *gfxListTail;
OSScTask *curRSPTask;
OSScTask *curRDPTask;
u32 frameCount;
s32 doAudio;
} OSSched;
void osCreateScheduler(OSSched *s, void *stack, OSPri priority,
u8 mode, u8 numFields);
void osScAddClient(OSSched *s, OSScClient *c, OSMesgQueue *msgQ);
void osScRemoveClient(OSSched *s, OSScClient *c);
OSMesgQueue *osScGetCmdQ(OSSched *s);
#endif
-196
View File
@@ -1,196 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* Sprite library include file
*
* $Revision: 1.16 $
* $Date: 1998/04/17 05:03:46 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/sp.h,v $
*
**************************************************************************/
#ifndef _SP_H_
#define _SP_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/mbi.h>
#include <PR/ultratypes.h>
struct bitmap {
s16 width; /* Size across to draw in texels */
/* Done if width = 0 */
s16 width_img; /* Size across of bitmap in texels */
/* Done if width = 0 */
s16 s; /* Horizontal offset into bitmap */
/* if (s > width), then load only! */
s16 t; /* Vertical offset into base */
void *buf; /* Pointer to bitmap data */
/* Don't re-load if new buf */
/* is the same as the old one */
/* Skip if NULL */
s16 actualHeight; /* True Height of this bitmap piece */
s16 LUToffset; /* LUT base index */
};
typedef struct bitmap Bitmap;
struct sprite {
s16 x,y; /* Target position */
s16 width, height; /* Target size */
f32 scalex, scaley; /* Texel to Pixel scale factor */
s16 expx, expy; /* Explosion spacing */
u16 attr; /* Attribute Flags */
s16 zdepth; /* Z Depth */
u8 red; /* Red component */
u8 green; /* Green component */
u8 blue; /* Blue component */
u8 alpha; /* Alpha component */
s16 startTLUT; /* Lookup Table Entry Starting index */
s16 nTLUT; /* Total number of Lookup Table Entries */
int *LUT; /* Pointer to Lookup Table */
s16 istart; /* Starting bitmap index */
s16 istep; /* Bitmaps index step (see SP_INCY) */
/* if 0, then variable width bitmaps */
s16 nbitmaps; /* Total number of bitmaps */
s16 ndisplist; /* Total number of display-list words */
s16 bmheight; /* Bitmap Texel height (Used) */
s16 bmHreal; /* Bitmap Texel height (Real) */
u8 bmfmt; /* Bitmap Format */
u8 bmsiz; /* Bitmap Texel Size */
Bitmap *bitmap; /* Pointer to first bitmap */
Gfx *rsp_dl; /* Pointer to RSP display list */
Gfx *rsp_dl_next; /* Pointer to next RSP display entry */
s16 frac_s, /* Fractional Texture offsets */
frac_t; /* These have 5 fraction bits */
};
typedef struct sprite Sprite;
/*
* DANGER!
* This is bad programming. Where the *heck* do these numbers come
* from?
*
* They are obviously 'maximums' from the sprite library, but since
* the sprite library is built on top of gbi.h, which includes macros
* that decode into multiple macros, etc., it is nearly impossible to
* know what these maximums should be.
*
* Worse, there are some gbi macros (texture alignment mostly) that
* decode into *many* macros, so if we choose that as a maximum, we
* are wasting TONS of space...
*
* These numbers work for "reasonable" sprite library usage, and
* there is an assert() in the library to detect when they aren't
* enough. (use the debug version)
*/
#define DL_BM_OVERHEAD (12)
#define DL_SPRITE_OVERHEAD (24)
#define NUM_DL(nb) ((nb)*DL_BM_OVERHEAD +DL_SPRITE_OVERHEAD)
/*
* Misc constants
*/
#ifndef NULL
#define NULL 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
/*
* For sprite->attr
*/
#define SP_TRANSPARENT 0x00000001
#define SP_CUTOUT 0x00000002
#define SP_HIDDEN 0x00000004
#define SP_Z 0x00000008
#define SP_SCALE 0x00000010
#define SP_FASTCOPY 0x00000020
#define SP_OVERLAP 0x00000040
#define SP_TEXSHIFT 0x00000080
#define SP_FRACPOS 0x00000100
#define SP_TEXSHUF 0x00000200
#define SP_EXTERN 0x00000400
/*
* Function wrapper
*/
#if defined(F3DEX_GBI_2)
#define spMove spX2Move
#define spSetZ spX2SetZ
#define spScissor spX2Scissor
#define spDraw spX2Draw
#define spInit spX2Init
#define spFinish spX2Finish
#elif defined(F3DEX_GBI)
#define spMove spXMove
#define spSetZ spXSetZ
#define spScissor spXScissor
#define spDraw spXDraw
#define spInit spXInit
#define spFinish spXFinish
#endif
/*
* Function prototypes
*/
void spSetAttribute (Sprite *sp, s32 attr);
void spClearAttribute (Sprite *sp, s32 attr);
void spMove (Sprite *sp, s32 x, s32 y);
void spScale (Sprite *sp, f32 sx, f32 sy);
void spSetZ (Sprite *sp, s32 z );
void spColor (Sprite *sp, u8 red, u8 green, u8 blue, u8 alpha);
Gfx *spDraw (Sprite *sp);
void spInit( Gfx **glistp );
void spScissor( s32 xmin, s32 xmax, s32 ymin, s32 ymax );
void spFinish( Gfx **glistp );
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* _SP_H_ */
-201
View File
@@ -1,201 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.9 $
* $Date: 1998/03/05 06:40:29 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/sptask.h,v $
*
**************************************************************************/
#ifndef _SPTASK_H_
#define _SPTASK_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
/*
* Task List Structure.
*
* Things an app might pass to the SP via the task list.
* Not every task ucode would need/use every field, but
*
* - type (audio, gfx, video, ...)
* - flags
* - wait for DP to drain before running new task
* - SEE BIT DEFINITIONS UNDER "Task Flags field"
* - pointer to boot ucode
* - size of boot ucode
* - pointer to ucode
* - size of ucode
* - pointer to initial DMEM data
* - size of initial DMEM data
* - pointer to DRAM stack
* - size of DRAM stack (max)
* - pointer to output buffer
* - pointer to store output buffer length
* - generic data pointer (for display list, etc.)
* - generic data length (for display list, etc.)
* - pointer to buffer where to store saved DMEM (in yield case)
* - size of buffer to store saved DMEM.
*
* IMPORTANT!!! Watch alignment issues.
*
* IMPORTANT!!! Watch data cache issues. The RCP may write data into the
* dram_stack, output_buff, output_buff_size, and the yield_data_ptr areas.
* These buffers should be cache aligned and use the entire line (16 bytes) to
* avoid corruption by writebacks by the CPU (cache tearing).
*
* IMPORTANT!!! all addresses are virtual addresses. Library does
* any necessary translation.
*
*/
typedef struct {
u32 type;
u32 flags;
u64 *ucode_boot;
u32 ucode_boot_size;
u64 *ucode;
u32 ucode_size;
u64 *ucode_data;
u32 ucode_data_size;
u64 *dram_stack;
u32 dram_stack_size;
u64 *output_buff;
u64 *output_buff_size;
u64 *data_ptr;
u32 data_size;
u64 *yield_data_ptr;
u32 yield_data_size;
} OSTask_t;
typedef union {
OSTask_t t;
long long int force_structure_alignment;
} OSTask;
typedef u32 OSYieldResult;
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_ASSEMBLY
/*
* For the RSP ucode:
* offsets into the task structure
*/
#include <PR/sptaskoff.h>
#endif
/*
* Task Flags field
*/
#define OS_TASK_YIELDED 0x0001
#define OS_TASK_DP_WAIT 0x0002
#define OS_TASK_LOADABLE 0x0004
#define OS_TASK_SP_ONLY 0x0008
#define OS_TASK_USR0 0x0010
#define OS_TASK_USR1 0x0020
#define OS_TASK_USR2 0x0040
#define OS_TASK_USR3 0x0080
/*
* Size of Yield buffer. The taskHdrPtr->t.yield_data_ptr must point to a
* buffer of this size. (The size is in bytes). ONLY If the task will NEVER
* yield it may be a null pointer. The buffer must be aligned to a 64 bit
* boundary. The taskHdrPtr->t.yield_data_ptr must be set to point to the
* buffer BEFORE the task is started.
*/
#if (defined(F3DEX_GBI)||defined(F3DLP_GBI)||defined(F3DEX_GBI_2))
#define OS_YIELD_DATA_SIZE 0xc00
#else
#define OS_YIELD_DATA_SIZE 0x900
#endif
#define OS_YIELD_AUDIO_SIZE 0x400
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/*
* this macro simulates atomic action.
*/
#define osSpTaskStart(tp) \
{ \
osSpTaskLoad((tp)); \
osSpTaskStartGo((tp)); \
}
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/*
* break this up into two steps for debugging.
*/
extern void osSpTaskLoad(OSTask *tp);
extern void osSpTaskStartGo(OSTask *tp);
extern void osSpTaskYield(void);
extern OSYieldResult osSpTaskYielded(OSTask *tp);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_SPTASK_H */
-192
View File
@@ -1,192 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.15 $
* $Date: 1998/03/31 07:58:57 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/ucode.h,v $
*
**************************************************************************/
#ifndef _UCODE_H_
#define _UCODE_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/*
* This is the recommended size of the SP DRAM stack area, used
* by the graphics ucode. This stack is used primarily for the
* matrix stack, so it needs to be AT LEAST (10 * 64bytes) in size.
*/
#define SP_DRAM_STACK_SIZE8 (1024)
#define SP_DRAM_STACK_SIZE64 (SP_DRAM_STACK_SIZE8 >> 3)
/*
* This is the size of the IMEM, which is also the size of the
* graphics microcode. (other ucode might be less)
* This value is used in apps to tell the OS how much ucode to
* load.
*/
#define SP_UCODE_SIZE 4096
/*
* This is 1/2 the size of DMEM, which is the maximum amount of
* initialized DMEM data any of the ucode tasks need to start up.
* This value is dependent on all of the task ucodes, and is therefore
* fixed per release.
*/
#define SP_UCODE_DATA_SIZE 2048
/**************************************************************************
*
* Extern variables
*
*/
/*
* Symbols generated by "rsp2elf", included by "makerom" that indicate
* the location and size of the SP microcode objects. The ucode objects
* are loaded as part of the codesegment (arbitrary, could do other
* ways)
*
*/
/* standard boot ucode: */
extern long long int rspbootTextStart[], rspbootTextEnd[];
/* standard 3D ucode: */
extern long long int gspFast3DTextStart[], gspFast3DTextEnd[];
extern long long int gspFast3DDataStart[], gspFast3DDataEnd[];
/* 3D ucode with output to DRAM: */
extern long long int gspFast3D_dramTextStart[], gspFast3D_dramTextEnd[];
extern long long int gspFast3D_dramDataStart[], gspFast3D_dramDataEnd[];
/* 3D ucode with output through DRAM FIFO to RDP: */
extern long long int gspFast3D_fifoTextStart[], gspFast3D_fifoTextEnd[];
extern long long int gspFast3D_fifoDataStart[], gspFast3D_fifoDataEnd[];
/* 3D ucode without nearclip: */
extern long long int gspF3DNoNTextStart[], gspF3DNoNTextEnd[];
extern long long int gspF3DNoNDataStart[], gspF3DNoNDataEnd[];
/* 3D ucode without nearclip with output to DRAM: */
extern long long int gspF3DNoN_dramTextStart[];
extern long long int gspF3DNoN_dramTextEnd[];
extern long long int gspF3DNoN_dramDataStart[];
extern long long int gspF3DNoN_dramDataEnd[];
/* 3D ucode without nearclip with output through DRAM FIFO to RDP: */
extern long long int gspF3DNoN_fifoTextStart[];
extern long long int gspF3DNoN_fifoTextEnd[];
extern long long int gspF3DNoN_fifoDataStart[];
extern long long int gspF3DNoN_fifoDataEnd[];
/* 3D line ucode: */
extern long long int gspLine3DTextStart[], gspLine3DTextEnd[];
extern long long int gspLine3DDataStart[], gspLine3DDataEnd[];
/* 3D line ucode with output to DRAM: */
extern long long int gspLine3D_dramTextStart[], gspLine3D_dramTextEnd[];
extern long long int gspLine3D_dramDataStart[], gspLine3D_dramDataEnd[];
/* 3D line ucode with output through DRAM FIFO to RDP: */
extern long long int gspLine3D_fifoTextStart[], gspLine3D_fifoTextEnd[];
extern long long int gspLine3D_fifoDataStart[], gspLine3D_fifoDataEnd[];
/* 2D sprite ucode: */
extern long long int gspSprite2DTextStart[], gspSprite2DTextEnd[];
extern long long int gspSprite2DDataStart[], gspSprite2DDataEnd[];
/* 2D sprite ucode with output to DRAM: */
extern long long int gspSprite2D_dramTextStart[], gspSprite2D_dramTextEnd[];
extern long long int gspSprite2D_dramDataStart[], gspSprite2D_dramDataEnd[];
/* 2D sprite ucode with output through DRAM FIFO to RDP: */
extern long long int gspSprite2D_fifoTextStart[], gspSprite2D_fifoTextEnd[];
extern long long int gspSprite2D_fifoDataStart[], gspSprite2D_fifoDataEnd[];
/* basic audio ucode: */
extern long long int aspMainTextStart[], aspMainTextEnd[];
extern long long int aspMainDataStart[], aspMainDataEnd[];
/*========== F3DEX/F3DLX/F3DLP/L3DEX ==========*/
/* FIFO version only */
extern long long int gspF3DEX_fifoTextStart[], gspF3DEX_fifoTextEnd[];
extern long long int gspF3DEX_fifoDataStart[], gspF3DEX_fifoDataEnd[];
extern long long int gspF3DEX_NoN_fifoTextStart[], gspF3DEX_NoN_fifoTextEnd[];
extern long long int gspF3DEX_NoN_fifoDataStart[], gspF3DEX_NoN_fifoDataEnd[];
extern long long int gspF3DLX_fifoTextStart[], gspF3DLX_fifoTextEnd[];
extern long long int gspF3DLX_fifoDataStart[], gspF3DLX_fifoDataEnd[];
extern long long int gspF3DLX_NoN_fifoTextStart[], gspF3DLX_NoN_fifoTextEnd[];
extern long long int gspF3DLX_NoN_fifoDataStart[], gspF3DLX_NoN_fifoDataEnd[];
extern long long int gspF3DLX_Rej_fifoTextStart[], gspF3DLX_Rej_fifoTextEnd[];
extern long long int gspF3DLX_Rej_fifoDataStart[], gspF3DLX_Rej_fifoDataEnd[];
extern long long int gspF3DLP_Rej_fifoTextStart[], gspF3DLP_Rej_fifoTextEnd[];
extern long long int gspF3DLP_Rej_fifoDataStart[], gspF3DLP_Rej_fifoDataEnd[];
extern long long int gspL3DEX_fifoTextStart[], gspL3DEX_fifoTextEnd[];
extern long long int gspL3DEX_fifoDataStart[], gspL3DEX_fifoDataEnd[];
/*========== F3DEX2/F3DLX2/F3DLP2/L3DEX2 ==========*/
/* FIFO version */
extern long long int gspF3DEX2_fifoTextStart[], gspF3DEX2_fifoTextEnd[];
extern long long int gspF3DEX2_fifoDataStart[], gspF3DEX2_fifoDataEnd[];
extern long long int gspF3DEX2_NoN_fifoTextStart[],gspF3DEX2_NoN_fifoTextEnd[];
extern long long int gspF3DEX2_NoN_fifoDataStart[],gspF3DEX2_NoN_fifoDataEnd[];
extern long long int gspF3DEX2_Rej_fifoTextStart[],gspF3DEX2_Rej_fifoTextEnd[];
extern long long int gspF3DEX2_Rej_fifoDataStart[],gspF3DEX2_Rej_fifoDataEnd[];
extern long long int gspF3DLX2_Rej_fifoTextStart[],gspF3DLX2_Rej_fifoTextEnd[];
extern long long int gspF3DLX2_Rej_fifoDataStart[],gspF3DLX2_Rej_fifoDataEnd[];
extern long long int gspL3DEX2_fifoTextStart[], gspL3DEX2_fifoTextEnd[];
extern long long int gspL3DEX2_fifoDataStart[], gspL3DEX2_fifoDataEnd[];
/* XBUS version */
extern long long int gspF3DEX2_xbusTextStart[], gspF3DEX2_xbusTextEnd[];
extern long long int gspF3DEX2_xbusDataStart[], gspF3DEX2_xbusDataEnd[];
extern long long int gspF3DEX2_NoN_xbusTextStart[],gspF3DEX2_NoN_xbusTextEnd[];
extern long long int gspF3DEX2_NoN_xbusDataStart[],gspF3DEX2_NoN_xbusDataEnd[];
extern long long int gspF3DEX2_Rej_xbusTextStart[],gspF3DEX2_Rej_xbusTextEnd[];
extern long long int gspF3DEX2_Rej_xbusDataStart[],gspF3DEX2_Rej_xbusDataEnd[];
extern long long int gspF3DLX2_Rej_xbusTextStart[],gspF3DLX2_Rej_xbusTextEnd[];
extern long long int gspF3DLX2_Rej_xbusDataStart[],gspF3DLX2_Rej_xbusDataEnd[];
extern long long int gspL3DEX2_xbusTextStart[], gspL3DEX2_xbusTextEnd[];
extern long long int gspL3DEX2_xbusDataStart[], gspL3DEX2_xbusDataEnd[];
/**************************************************************************
*
* Function prototypes
*
*/
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_UCODE_H */
-54
View File
@@ -1,54 +0,0 @@
/*---------------------------------------------------------------------*
Copyright (C) 1998, Nintendo.
File ucode_debug.h
Coded by Yoshitaka Yasumoto. Nov 15, 1998.
$Id: ucode_debug.h,v 1.1 1998/12/25 01:06:21 has Exp $
*---------------------------------------------------------------------*/
#ifndef _UCODE_DEBUG_H_
#define _UCODE_DEBUG_H_
#define DEBUG_DL_PTR() IO_READ(SP_DMEM_START+0xfc0)
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/*========== F3DEX2/F3DLX2/L3DEX2/S2DEX2 ==========*/
/* FIFO version */
extern long long int gspF3DEX2d_fifoTextStart[], gspF3DEX2d_fifoTextEnd[];
extern long long int gspF3DEX2d_fifoDataStart[], gspF3DEX2d_fifoDataEnd[];
extern long long int gspF3DEX2d_NoN_fifoTextStart[],gspF3DEX2d_NoN_fifoTextEnd[];
extern long long int gspF3DEX2d_NoN_fifoDataStart[],gspF3DEX2d_NoN_fifoDataEnd[];
extern long long int gspF3DEX2d_Rej_fifoTextStart[],gspF3DEX2d_Rej_fifoTextEnd[];
extern long long int gspF3DEX2d_Rej_fifoDataStart[],gspF3DEX2d_Rej_fifoDataEnd[];
extern long long int gspF3DLX2d_Rej_fifoTextStart[],gspF3DLX2d_Rej_fifoTextEnd[];
extern long long int gspF3DLX2d_Rej_fifoDataStart[],gspF3DLX2d_Rej_fifoDataEnd[];
extern long long int gspL3DEX2d_fifoTextStart[], gspL3DEX2d_fifoTextEnd[];
extern long long int gspL3DEX2d_fifoDataStart[], gspL3DEX2d_fifoDataEnd[];
extern long long int gspS2DEX2d_fifoTextStart[], gspS2DEX2d_fifoTextEnd[];
extern long long int gspS2DEX2d_fifoDataStart[], gspS2DEX2d_fifoDataEnd[];
/* XBUS version */
extern long long int gspF3DEX2d_xbusTextStart[], gspF3DEX2d_xbusTextEnd[];
extern long long int gspF3DEX2d_xbusDataStart[], gspF3DEX2d_xbusDataEnd[];
extern long long int gspF3DEX2d_NoN_xbusTextStart[],gspF3DEX2d_NoN_xbusTextEnd[];
extern long long int gspF3DEX2d_NoN_xbusDataStart[],gspF3DEX2d_NoN_xbusDataEnd[];
extern long long int gspF3DEX2d_Rej_xbusTextStart[],gspF3DEX2d_Rej_xbusTextEnd[];
extern long long int gspF3DEX2d_Rej_xbusDataStart[],gspF3DEX2d_Rej_xbusDataEnd[];
extern long long int gspF3DLX2d_Rej_xbusTextStart[],gspF3DLX2d_Rej_xbusTextEnd[];
extern long long int gspF3DLX2d_Rej_xbusDataStart[],gspF3DLX2d_Rej_xbusDataEnd[];
extern long long int gspL3DEX2d_xbusTextStart[], gspL3DEX2d_xbusTextEnd[];
extern long long int gspL3DEX2d_xbusDataStart[], gspL3DEX2d_xbusDataEnd[];
extern long long int gspS2DEX2d_xbusTextStart[], gspS2DEX2d_xbusTextEnd[];
extern long long int gspS2DEX2d_xbusDataStart[], gspS2DEX2d_xbusDataEnd[];
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_UCODE_DEBUG_H */
/*======== End of ucode_debug.h ========*/
-179
View File
@@ -1,179 +0,0 @@
/*====================================================================
* ultraerror.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/**************************************************************************
*
* $Revision: 1.27 $
* $Date: 1999/07/14 02:44:00 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/ultraerror.h,v $
*
**************************************************************************/
#ifndef __ULTRAERROR_H__
#define __ULTRAERROR_H__
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#define OS_ERROR_FMT "/usr/lib/PR/error.fmt"
#define OS_ERROR_MAGIC 0x6b617479
/* OS error codes */
#define ERR_OSCREATETHREAD_SP 1
#define ERR_OSCREATETHREAD_PRI 2
#define ERR_OSSTARTTHREAD 3
#define ERR_OSSETTHREADPRI 4
#define ERR_OSCREATEMESGQUEUE 5
#define ERR_OSSENDMESG 6
#define ERR_OSJAMMESG 7
#define ERR_OSRECVMESG 8
#define ERR_OSSETEVENTMESG 9
#define ERR_OSMAPTLB_INDEX 10
#define ERR_OSMAPTLB_ASID 11
#define ERR_OSUNMAPTLB 12
#define ERR_OSSETTLBASID 13
#define ERR_OSAISETFREQUENCY 14
#define ERR_OSAISETNEXTBUFFER_ADDR 15
#define ERR_OSAISETNEXTBUFFER_SIZE 16
#define ERR_OSDPSETNEXTBUFFER_ADDR 17
#define ERR_OSDPSETNEXTBUFFER_SIZE 18
#define ERR_OSPIRAWREADIO 19
#define ERR_OSPIRAWWRITEIO 20
#define ERR_OSPIRAWSTARTDMA_DIR 21
#define ERR_OSPIRAWSTARTDMA_DEVADDR 22
#define ERR_OSPIRAWSTARTDMA_ADDR 23
#define ERR_OSPIRAWSTARTDMA_SIZE 24
#define ERR_OSPIRAWSTARTDMA_RANGE 25
#define ERR_OSPIREADIO 26
#define ERR_OSPIWRITEIO 27
#define ERR_OSPISTARTDMA_PIMGR 28
#define ERR_OSPISTARTDMA_PRI 29
#define ERR_OSPISTARTDMA_DIR 30
#define ERR_OSPISTARTDMA_DEVADDR 31
#define ERR_OSPISTARTDMA_ADDR 32
#define ERR_OSPISTARTDMA_SIZE 33
#define ERR_OSPISTARTDMA_RANGE 34
#define ERR_OSCREATEPIMANAGER 35
#define ERR_OSVIGETCURRENTMODE 36
#define ERR_OSVIGETCURRENTFRAMEBUFFER 37
#define ERR_osViGetNextFramebuffer 38
#define ERR_OSVISETXSCALE_VALUE 39
#define ERR_OSVISETXSCALE_VIMGR 40
#define ERR_OSVISETYSCALE_VALUE 41
#define ERR_OSVISETYSCALE_VIMGR 42
#define ERR_OSVISETSPECIAL_VALUE 43
#define ERR_OSVISETSPECIAL_VIMGR 44
#define ERR_OSVISETMODE 45
#define ERR_OSVISETEVENT 46
#define ERR_OSVISWAPBUFFER_ADDR 47
#define ERR_OSVISWAPBUFFER_VIMGR 48
#define ERR_OSCREATEVIMANAGER 49
#define ERR_OSCREATEREGION_ALIGN 50
#define ERR_OSCREATEREGION_SIZE 51
#define ERR_OSMALLOC 52
#define ERR_OSFREE_REGION 53
#define ERR_OSFREE_ADDR 54
#define ERR_OSGETREGIONBUFCOUNT 55
#define ERR_OSGETREGIONBUFSIZE 56
#define ERR_OSSPTASKLOAD_DRAM 57
#define ERR_OSSPTASKLOAD_OUT 58
#define ERR_OSSPTASKLOAD_OUTSIZE 59
#define ERR_OSSPTASKLOAD_YIELD 60
#define ERR_OSPROFILEINIT_STR 61
#define ERR_OSPROFILEINIT_CNT 62
#define ERR_OSPROFILEINIT_ALN 63
#define ERR_OSPROFILEINIT_ORD 64
#define ERR_OSPROFILEINIT_SIZ 65
#define ERR_OSPROFILESTART_TIME 66
#define ERR_OSPROFILESTART_FLAG 67
#define ERR_OSPROFILESTOP_FLAG 68
#define ERR_OSPROFILESTOP_TIMER 69
#define ERR_OSREADHOST_ADDR 70
#define ERR_OSREADHOST_SIZE 71
#define ERR_OSWRITEHOST_ADDR 72
#define ERR_OSWRITEHOST_SIZE 73
#define ERR_OSGETTIME 74
#define ERR_OSSETTIME 75
#define ERR_OSSETTIMER 76
#define ERR_OSSTOPTIMER 77
#define ERR_ALSEQP_NO_SOUND 100
#define ERR_ALSEQP_NO_VOICE 101
#define ERR_ALSEQP_MAP_VOICE 102
#define ERR_ALSEQP_OFF_VOICE 103
#define ERR_ALSEQP_POLY_VOICE 104
#define ERR_ALSNDP_NO_VOICE 105
#define ERR_ALSYN_NO_UPDATE 106
#define ERR_ALSNDPDEALLOCATE 107
#define ERR_ALSNDPDELETE 108
#define ERR_ALSNDPPLAY 109
#define ERR_ALSNDPSETSOUND 110
#define ERR_ALSNDPSETPRIORITY 111
#define ERR_ALSNDPSETPAR 112
#define ERR_ALBNKFNEW 113
#define ERR_ALSEQNOTMIDI 114
#define ERR_ALSEQNOTMIDI0 115
#define ERR_ALSEQNUMTRACKS 116
#define ERR_ALSEQTIME 117
#define ERR_ALSEQTRACKHDR 118
#define ERR_ALSEQSYSEX 119
#define ERR_ALSEQMETA 120
#define ERR_ALSEQPINVALIDPROG 121
#define ERR_ALSEQPUNKNOWNMIDI 122
#define ERR_ALSEQPUNMAP 123
#define ERR_ALEVENTNOFREE 124
#define ERR_ALHEAPNOFREE 125
#define ERR_ALHEAPCORRUPT 126
#define ERR_ALHEAPFIRSTBLOCK 127
#define ERR_ALCSEQZEROSTATUS 128
#define ERR_ALCSEQZEROVEL 129
#define ERR_ALCSPVNOTFREE 130
#define ERR_ALSEQOVERRUN 131
#define ERR_OSAISETNEXTBUFFER_ENDADDR 132
#define ERR_ALMODDELAYOVERFLOW 133
#define ERR_OSVIEXTENDVSTART_VIMGR 134
#define ERR_OSVIEXTENDVSTART_VALUE 135
#define ERR_OSTHPROFILESTART_FLAG 136
#define ERR_OSTHPROFILESTART_START 137
#define ERR_OSTHPROFILESTOP_FLAG 138
#define ERR_OSTHPROFILEREADCOUNT_FLAG 139
#define ERR_OSTHPROFILEREADTIME_FLAG 140
#define ERR_OSTHPROFILEREADCOUNTTH_FLAG 141
#define ERR_OSTHPROFILEREADTIMETH_FLAG 142
#define ERR_OSTHPROFILEREADCOUNT_LAR 143
#define ERR_OSTHPROFILEREADTIME_LAR 144
#define ERR_OSTHPROFILEREADCOUNTTH_LAR 145
#define ERR_OSTHPROFILEREADTIMETH_LAR 146
#define ERR_OSTHPROFILESTOP_LAR 147
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
typedef void (*OSErrorHandler)(s16, s16, ...);
OSErrorHandler osSetErrorHandler(OSErrorHandler);
#endif
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* __ULTRAERROR_H__ */
-74
View File
@@ -1,74 +0,0 @@
/*====================================================================
* ultralog.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/**************************************************************************
*
* $Revision: 1.6 $
* $Date: 1997/02/11 08:39:05 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/ultralog.h,v $
*
**************************************************************************/
#ifndef __log__
#define __log__
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#define OS_LOG_MAX_ARGS 16
#define OS_LOG_MAGIC 0x20736a73
#define OS_LOG_FLOAT(x) (*(int *) &(x))
#define OS_LOG_VERSION 1
typedef struct {
u32 magic; /* log identifier */
u32 len; /* length of log data + log structure */
u32 *base; /* starting addr array */
s32 startCount; /* read offset from dataBase */
s32 writeOffset; /* write offset from dataBase */
} OSLog;
typedef struct {
u32 magic;
u32 timeStamp;
u16 argCount;
u16 eventID;
} OSLogItem;
typedef struct {
u32 magic; /* log identifier */
u32 version; /* 1 */
} OSLogFileHdr;
void osCreateLog(OSLog *log, u32 *base, s32 len);
void osLogEvent(OSLog *log, s16 code, s16 numArgs, ...);
void osFlushLog(OSLog *log);
u32 osLogFloat(f32);
extern void osDelay(int count);
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif
-90
View File
@@ -1,90 +0,0 @@
#ifndef _ULTRATYPES_H_
#define _ULTRATYPES_H_
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*************************************************************************
*
* File: ultratypes.h
*
* This file contains various types used in Ultra64 interfaces.
*
* $Revision: 1.6 $
* $Date: 1997/12/17 04:02:06 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/ultratypes.h,v $
*
**************************************************************************/
/**********************************************************************
* General data types for R4300
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
typedef unsigned char u8; /* unsigned 8-bit */
typedef unsigned short u16; /* unsigned 16-bit */
typedef unsigned long u32; /* unsigned 32-bit */
typedef unsigned long long u64; /* unsigned 64-bit */
typedef signed char s8; /* signed 8-bit */
typedef short s16; /* signed 16-bit */
typedef long s32; /* signed 32-bit */
typedef long long s64; /* signed 64-bit */
typedef volatile unsigned char vu8; /* unsigned 8-bit */
typedef volatile unsigned short vu16; /* unsigned 16-bit */
typedef volatile unsigned long vu32; /* unsigned 32-bit */
typedef volatile unsigned long long vu64; /* unsigned 64-bit */
typedef volatile signed char vs8; /* signed 8-bit */
typedef volatile short vs16; /* signed 16-bit */
typedef volatile long vs32; /* signed 32-bit */
typedef volatile long long vs64; /* signed 64-bit */
typedef float f32; /* single prec floating point */
typedef double f64; /* double prec floating point */
#if !defined(_SIZE_T) && !defined(_SIZE_T_) && !defined(_SIZE_T_DEF)
#define _SIZE_T
#define _SIZE_T_DEF /* exeGCC size_t define label */
#if (_MIPS_SZLONG == 32)
typedef unsigned int size_t;
#endif
#if (_MIPS_SZLONG == 64)
typedef unsigned long size_t;
#endif
#endif
#endif /* _LANGUAGE_C */
/*************************************************************************
* Common definitions
*/
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#define NULL 0
#endif
#endif /* _ULTRATYPES_H_ */
-134
View File
@@ -1,134 +0,0 @@
/*====================================================================
* uportals.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/**************************************************************************
*
* uportals.h - header file for the ultraportals library
*
* $Revision: 1.12 $
* $Date: 1997/02/11 08:40:49 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/uportals.h,v $
*
**************************************************************************/
#ifndef __ULTRAPORTALS_H__
#define __ULTRAPORTALS_H__
#include <ultra64.h>
#include "matrix.h"
#include "vector.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifndef ENABLEPORTALS
#define ENABLEPORTALS
#endif
#define UP_MAXPVERTS 16 /* max number of portal verts */
#define UP_MAXCELLS 50 /* max number of cells */
#define UP_CELLNL 32 /* max length of cell names */
#define UP_OBNL 32 /* max length of obejct names */
typedef struct
{
vec3 min, max; /* min and max pts of the box */
} upBox;
typedef struct _upPortalData * _portalptr;
typedef struct _upCellData * _cellptr;
typedef struct _upObjectData * _objectptr;
typedef struct _upPortalData
{
int numverts; /* number of verts in the portal*/
_cellptr attached_cell; /* cell on the 'other side' */
vec3 verts[UP_MAXPVERTS]; /* the actual vertices */
#ifdef MVTVIEW
int mvt_id; /* if has mvt, this is the id */
#endif
} upPortalData;
typedef struct _upCellData
{
int numportals; /* number of portals */
int numobjects; /* number of objects */
int rendered; /* last frame number rendered */
_portalptr *portals; /* array for the actual portals */
_objectptr *objects; /* array for 'detail' objects */
upBox bbox; /* bounding box of the cell */
Gfx *dlist; /* associated display list */
char name[UP_CELLNL]; /* name of the cell */
float eyeheight; /* height to constrain eyept to */
int zone; /* current zone number */
} upCellData;
typedef struct _upObjectData
{
int rendered; /* last frame number rendered */
upBox bbox; /* bounding box for the object */
Gfx *dlist; /* associated display list */
char name[UP_OBNL]; /* name of the object */
} upObjectData;
typedef struct
{
int numcells; /* how many cells are there? */
upCellData cells[UP_MAXCELLS]; /* the actual cells */
Gfx *rootdlist; /* display list for all cells */
vec2 portalmin, portalmax; /* XY bbox used by upCheckCells */
float near, far; /* near, far clipping planes */
FMatrix viewmat; /* viewing matrix (world->eye) */
FMatrix projmat; /* proj matrix (eye->screen) */
FMatrix compmat; /* view * proj (world->screen) */
int portaldepth; /* depth of the portal stack */
int framecount; /* current frame number */
} upLocateData;
/*
* Functions:
*/
extern void upInit(); /* generated automatically by flt2walk */
extern Gfx *upAddVisibleCells(Gfx * glistp, vec3 eyept);
extern void upTogglePortalBounds();
extern void upToggleScissorBox();
/*
* Globals:
*/
extern upLocateData upLocator; /* also extern by test_portals.h */
/*
* Macros:
*/
#define UP_HUGEVAL 3.40282347e+37
#define PT_IN_BOX(p,box) ((p)[0] > (box).min[0] && (p)[0] < (box).max[0] &&\
(p)[1] > (box).min[1] && (p)[1] < (box).max[1] &&\
(p)[2] > (box).min[2] && (p)[2] < (box).max[2])
#ifdef __Cplusplus
}
#endif
#endif
-54
View File
@@ -1,54 +0,0 @@
#ifndef __ASSERT_H__
#define __ASSERT_H__
#ifdef __cplusplus
extern "C" {
#endif
/**************************************************************************
* *
* Copyright (C) 1984, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/* Copyright (c) 1984 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
#ident "$Revision: 1.17 $"
/* ANSI C Notes:
*
* - THE IDENTIFIERS APPEARING OUTSIDE OF #ifdef __EXTENSIONS__ IN THIS
* standard header ARE SPECIFIED BY ANSI! CONFORMANCE WILL BE ALTERED
* IF ANY NEW IDENTIFIERS ARE ADDED TO THIS AREA UNLESS THEY ARE IN ANSI's
* RESERVED NAMESPACE. (i.e., unless they are prefixed by __[a-z] or
* _[A-Z]. For external objects, identifiers with the prefix _[a-z]
* are also reserved.)
*/
#ifdef NDEBUG
#undef assert
#define assert(EX) ((void)0)
#else
extern void func_8033F000(const char *, const char *, int);
#ifdef __ANSI_CPP__
#define assert(EX) ((EX)?((void)0):func_8033F000( # EX , __FILE__, __LINE__))
#else
#define assert(EX) ((EX)?((void)0):func_8033F000("EX", __FILE__, __LINE__))
#endif
#endif /* NDEBUG */
#ifdef __cplusplus
}
#endif
#endif /* !__ASSERT_H__ */
-40
View File
@@ -1,40 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
*************************************************************************/
/**************************************************************************
*
* $Revision: 1.10 $
* $Date: 1997/02/11 08:37:33 $
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/ultra64.h,v $
*
**************************************************************************/
#ifndef _ULTRA64_H_
#define _ULTRA64_H_
#include <PR/ultratypes.h>
#include <PR/rcp.h>
#include <PR/os.h>
#include <PR/region.h>
#include <PR/rmon.h>
#include <PR/sptask.h>
#include <PR/mbi.h>
#include <PR/libaudio.h>
#include <PR/gu.h>
#include <PR/ramrom.h>
#include <PR/sp.h>
#include <PR/ucode.h>
#include <PR/ultraerror.h>
#include <PR/ultralog.h>
#endif
+38
View File
@@ -0,0 +1,38 @@
#ifndef BANJO_KAZOOIE_BOOT_OVERLAYS_H
#define BANJO_KAZOOIE_BOOT_OVERLAYS_H
#include <ultra64.h>
struct Overlay {
void *start;
void *end;
};
#define MAKE_ROM_OVERLAY_VAR(name, _) \
extern u8 name##_rzip_ROM_START[]; \
extern u8 name##_rzip_ROM_END[];
#define MAKE_OVERLAY_TABLE_ENTRY(name, index) \
{ gOverlayTable[index].start = name##_rzip_ROM_START; } \
{ gOverlayTable[index].end = name##_rzip_ROM_END; }
MAKE_ROM_OVERLAY_VAR(core1, -1)
MAKE_ROM_OVERLAY_VAR(core2, 0)
MAKE_ROM_OVERLAY_VAR(emptyLvl, 1)
MAKE_ROM_OVERLAY_VAR(CC, 2)
MAKE_ROM_OVERLAY_VAR(MMM, 3)
MAKE_ROM_OVERLAY_VAR(GV, 4)
MAKE_ROM_OVERLAY_VAR(TTC, 5)
MAKE_ROM_OVERLAY_VAR(MM, 6)
MAKE_ROM_OVERLAY_VAR(BGS, 7)
MAKE_ROM_OVERLAY_VAR(RBB, 8)
MAKE_ROM_OVERLAY_VAR(FP, 9)
MAKE_ROM_OVERLAY_VAR(CCW, 10)
MAKE_ROM_OVERLAY_VAR(SM, 11)
MAKE_ROM_OVERLAY_VAR(cutscenes, 12)
MAKE_ROM_OVERLAY_VAR(lair, 13)
MAKE_ROM_OVERLAY_VAR(fight, 14)
extern struct Overlay gOverlayTable[];
#endif
+29
View File
@@ -0,0 +1,29 @@
#ifndef BANJO_KAZOOIE_BOOT_RAREZIP_H
#define BANJO_KAZOOIE_BOOT_RAREZIP_H
#include <ultra64.h>
struct huft_s {
u8 e; /* number of extra bits or operation */
u8 b; /* number of bits in this code or subcode */
union {
u16 n; /* literal, length base, or distance base */
struct huft_s *t; /* pointer to next level of table */
} v;
};
extern u8 *inflate_inbuf;
extern u8 *inflate_slide;
extern u32 inflate_inptr;
extern u32 inflate_wp;
extern struct huft_s *inflate_huft;
extern u32 inflate_crc1;
extern u32 inflate_crc2;
u32 rarezip_get_uncompressed_size(u8 *file);
void rarezip_init(void);
u32 rarezip_uncompress_file(u8 *in, u8 *out);
void rarezip_uncompress_file_and_update_pointers(u8 **in, u8 **out);
s32 inflate(void);
#endif
+3 -1
View File
@@ -1,7 +1,9 @@
#ifndef BANJO_KAZOOIE_CORE1_MAIN_H
#define BANJO_KAZOOIE_CORE1_MAIN_H
void func_8023DA20(s32 arg0);
#include <ultra64.h>
void core1_main(s32 arg0);
void func_8023DA74(void);
void func_8023DA9C(s32 arg0);
u32 globalTimer_getTimeMasked(u32 mask);
+6 -7
View File
@@ -1,18 +1,17 @@
#ifndef STRING_H
#define STRING_H
#ifndef BKSTRING_H
#define BKSTRING_H
#include "structs.h"
void strcat(char *dst, char *src);
void strcat(char *dst, const char *src);
void strcatc(char *dst, char src);
void strFToA(char *dst, f32 val);
void _strFToA(char *dst, f32 val, s32 decPlaces);
void strIToA(char *str, s32 num);
void _strIToA(char *str, s32 num, char base);
void strcpy(char *dst, char *src);
s32 strlen(char *str);
void *strcpy(char *dst, const char *src);
int strlen(const char *str);
void strToUpper(char *str);
#endif
+3 -3
View File
@@ -1,7 +1,7 @@
#ifndef _FILE_AND_LINE_H_
#define _FILE_AND_LINE_H_
#include <assert.h>
extern void func_8033F000(const char *, const char *, int);
extern void __assert(const char *, const char *, int);
#ifdef NONMATCHING
@@ -17,9 +17,9 @@ extern void func_8033F000(const char *, const char *, int);
#endif
#ifdef __ANSI_CPP__
#define matching_assert(EX, F, L) ((EX)?((void)0):func_8033F000( # EX , # F, L))
#define matching_assert(EX, F, L) ((EX)?((void)0):__assert( # EX , # F, L))
#else
#define matching_assert(EX, F , L) ((EX)?((void)0):func_8033F000("EX", "F", L))
#define matching_assert(EX, F , L) ((EX)?((void)0):__assert("EX", "F", L))
#endif
#endif
+2 -2
View File
@@ -5,7 +5,7 @@
#include "enums.h"
#include "structs.h"
#include "string.h"
#include "core2/string.h"
#include "rand.h"
#include "prop.h"
@@ -45,7 +45,7 @@ void * malloc(s32 size);
void free(void*);
void *realloc(void* ptr, s32 size);
float gu_sqrtf(float val);
bool baanim_isAt(f32);
void baanim_playForDuration_once(enum asset_e anim_id, f32 duration);
-41
View File
@@ -1,41 +0,0 @@
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
#include "mbi.h"
#include "gu.h"
typedef union
{
struct
{
unsigned int hi;
unsigned int lo;
} word;
double d;
} du;
typedef union
{
unsigned int i;
float f;
} fu;
#ifndef __GL_GL_H__
typedef float Matrix[4][4];
#endif
#define ROUND(d) (int)(((d) >= 0.0) ? ((d) + 0.5) : ((d) - 0.5))
#define ABS(d) ((d) > 0) ? (d) : -(d)
extern float __libm_qnan_f;
+1 -1
View File
@@ -64,7 +64,7 @@
}
#define LENGTH_SQ_VEC3F(v) (v[0]*v[0] + v[1]*v[1] + v[2]*v[2])
#define LENGTH_VEC3F(v) gu_sqrtf(LENGTH_SQ_VEC3F(v))
#define LENGTH_VEC3F(v) sqrtf(LENGTH_SQ_VEC3F(v))
#define TUPLE_DOT_PRODUCT(vec1, vec2) (vec1[0] * vec2[0] + vec1[1] * vec2[1] + vec1[2] * vec2[2])
-48
View File
@@ -1,48 +0,0 @@
#ifndef _OSINT_H
#define _OSINT_H
#include <os_internal.h>
typedef struct __OSEventState
{
OSMesgQueue *messageQueue;
OSMesg message;
} __OSEventState;
extern struct __osThreadTail
{
OSThread *next;
OSPri priority;
} __osThreadTail;
//maybe should be in exceptasm.h?
extern void __osEnqueueAndYield(OSThread **);
extern void __osDequeueThread(OSThread **, OSThread *);
extern void __osEnqueueThread(OSThread **, OSThread *);
extern OSThread *__osPopThread(OSThread **);
extern void __osDispatchThread(void);
extern void __osSetTimerIntr(OSTime);
extern OSTime __osInsertTimer(OSTimer *);
extern void __osTimerInterrupt(void);
extern u32 __osProbeTLB(void *);
extern int __osSpDeviceBusy(void);
extern OSThread *__osRunningThread;
extern OSThread *__osActiveQueue;
extern OSThread *__osFaultedThread;
extern OSThread *__osRunQueue;
extern OSTimer *__osTimerList;
extern OSTimer __osBaseTimer;
extern OSTime __osCurrentTime;
extern u32 __osBaseCounter;
extern u32 __osViIntrCount;
extern u32 __osTimerCounter;
extern __OSEventState __osEventStateTab[OS_NUM_EVENTS];
//not sure if this should be here
extern s32 osViClock;
extern void __osTimerServicesInit(void);
extern s32 __osAiDeviceBusy(void);
extern int __osDpDeviceBusy(void);
#endif
-15
View File
@@ -1,15 +0,0 @@
OVERLAY(core2,0)
OVERLAY(emptyLvl,1)
OVERLAY(CC,2)
OVERLAY(MMM,3)
OVERLAY(GV,4)
OVERLAY(TTC,5)
OVERLAY(MM,6)
OVERLAY(BGS,7)
OVERLAY(RBB,8)
OVERLAY(FP,9)
OVERLAY(CCW,10)
OVERLAY(SM,11)
OVERLAY(cutscenes,12)
OVERLAY(lair,13)
OVERLAY(fight,14)
-145
View File
@@ -1,145 +0,0 @@
#ifndef _PIINT_H
#define _PIINT_H
#include <os_internal.h>
#include <rcp.h>
//https://github.com/LuigiBlood/64dd/wiki/Memory-Map
#define LEO_BASE_REG 0x05000000
#define LEO_CMD (LEO_BASE_REG + 0x508)
#define LEO_STATUS (LEO_BASE_REG + 0x508)
#define LEO_BM_CTL (LEO_BASE_REG + 0x510)
#define LEO_BM_STATUS (LEO_BASE_REG + 0x510)
#define LEO_SEQ_CTL (LEO_BASE_REG + 0x518)
#define LEO_SEQ_STATUS (LEO_BASE_REG + 0x518)
#define LEO_C2_BUFF (LEO_BASE_REG + 0x000) //C2 Sector Buffer
#define LEO_SECTOR_BUFF (LEO_BASE_REG + 0x400) //Data Sector Buffer
#define LEO_DATA (LEO_BASE_REG + 0x500) //Data
#define LEO_MISC_REG (LEO_BASE_REG + 0x504) //Misc Register
#define LEO_CUR_TK (LEO_BASE_REG + 0x50C) //Current Track
#define LEO_ERR_SECTOR (LEO_BASE_REG + 0x514) //Sector Error Status
#define LEO_CUR_SECTOR (LEO_BASE_REG + 0x51C) //Current Sector
#define LEO_HARD_RESET (LEO_BASE_REG + 0x520) //Hard Reset
#define LEO_C1_S0 (LEO_BASE_REG + 0x524) //C1
#define LEO_HOST_SECBYTE (LEO_BASE_REG + 0x528) //Sector Size (in bytes)
#define LEO_C1_S2 (LEO_BASE_REG + 0x52C) //C1
#define LEO_SEC_BYTE (LEO_BASE_REG + 0x530) //Sectors per Block, Full Size
#define LEO_C1_S4 (LEO_BASE_REG + 0x534) //C1
#define LEO_C1_S6 (LEO_BASE_REG + 0x538) //C1
#define LEO_CUR_ADDR (LEO_BASE_REG + 0x53C) //Current Address?
#define LEO_ID_REG (LEO_BASE_REG + 0x540) //ID
#define LEO_TEST_REG (LEO_BASE_REG + 0x544) //Test Read
#define LEO_TEST_PIN_SEL (LEO_BASE_REG + 0x548) //Test Write
#define LEO_RAM_ADDR (LEO_BASE_REG + 0x580) //Microsequencer RAM
#define LEO_STATUS_PRESENCE_MASK 0xFFFF
#define LEO_STATUS_DATA_REQUEST 0x40000000
#define LEO_STATUS_C2_TRANSFER 0x10000000
#define LEO_STATUS_BUFFER_MANAGER_ERROR 0x08000000
#define LEO_STATUS_BUFFER_MANAGER_INTERRUPT 0x04000000
#define LEO_STATUS_MECHANIC_INTERRUPT 0x02000000
#define LEO_STATUS_DISK_PRESENT 0x01000000
#define LEO_STATUS_BUSY_STATE 0x00800000
#define LEO_STATUS_RESET_STATE 0x00400000
#define LEO_STATUS_MOTOR_NOT_SPINNING 0x00100000
#define LEO_STATUS_HEAD_RETRACTED 0x00080000
#define LEO_STATUS_WRITE_PROTECT_ERROR 0x00040000
#define LEO_STATUS_MECHANIC_ERROR 0x00020000
#define LEO_STATUS_DISK_CHANGE 0x00010000
#define LEO_STATUS_MODE_MASK (LEO_STATUS_MOTOR_NOT_SPINNING | LEO_STATUS_HEAD_RETRACTED)
#define LEO_STATUS_MODE_SLEEP (LEO_STATUS_MOTOR_NOT_SPINNING | LEO_STATUS_HEAD_RETRACTED)
#define LEO_STATUS_MODE_STANDBY (LEO_STATUS_HEAD_RETRACTED)
#define LEO_STATUS_MODE_ACTIVE 0
#define LEO_CUR_TK_INDEX_LOCK 0x60000000
#define LEO_BM_STATUS_RUNNING 0x80000000 //Running
#define LEO_BM_STATUS_ERROR 0x04000000 //Error
#define LEO_BM_STATUS_MICRO 0x02000000 //Micro Status?
#define LEO_BM_STATUS_BLOCK 0x01000000 //Block Transfer
#define LEO_BM_STATUS_C1CORRECTION 0x00800000 //C1 Correction
#define LEO_BM_STATUS_C1DOUBLE 0x00400000 //C1 Double
#define LEO_BM_STATUS_C1SINGLE 0x00200000 //C1 Single
#define LEO_BM_STATUS_C1ERROR 0x00010000 //C1 Error
#define LEO_BM_CTL_START 0x80000000 //Start Buffer Manager
#define LEO_BM_CTL_MODE 0x40000000 //Buffer Manager Mode
#define LEO_BM_CTL_IMASK 0x20000000 //BM Interrupt Mask
#define LEO_BM_CTL_RESET 0x10000000 //Buffer Manager Reset
#define LEO_BM_CTL_DISABLE_OR 0x08000000 //Disable OR Check?
#define LEO_BM_CTL_DISABLE_C1 0x04000000 //Disable C1 Correction
#define LEO_BM_CTL_BLOCK 0x02000000 //Block Transfer
#define LEO_BM_CTL_CLR_MECHANIC_INTR 0x01000000 //Mechanic Interrupt Reset
#define LEO_BM_CTL_CONTROL_MASK 0xFF000000
#define LEO_BM_CTL_SECTOR_MASK 0x00FF0000
#define LEO_BM_CTL_SECTOR_SHIFT 16
#define LEO_CMD_TYPE_0 0 //TODO: name
#define LEO_CMD_TYPE_1 1 //TODO: name
#define LEO_CMD_TYPE_2 2 //TODO: name
#define LEO_ERROR_GOOD 0
#define LEO_ERROR_4 4 //maybe busy?
#define LEO_ERROR_22 22 //
#define LEO_ERROR_23 23 //unrecovered read error?
#define LEO_ERROR_24 24 //no reference position found?
#define LEO_ERROR_29 29 //
extern OSDevMgr __osPiDevMgr;
extern OSPiHandle *__osCurrentHandle[2];
extern OSPiHandle CartRomHandle;
extern OSPiHandle LeoDiskHandle;
extern OSMesgQueue __osPiAccessQueue;
extern u32 __osPiAccessQueueEnabled;
int __osPiDeviceBusy(void);
void __osDevMgrMain(void *);
void __osPiCreateAccessQueue(void);
void __osPiRelAccess(void);
void __osPiGetAccess(void);
OSMesgQueue *osPiGetCmdQueue(void);
#define OS_RAMROM_STACKSIZE 1024
#define WAIT_ON_IOBUSY(stat) \
stat = IO_READ(PI_STATUS_REG); \
while (stat & (PI_STATUS_IO_BUSY | PI_STATUS_DMA_BUSY)) \
stat = IO_READ(PI_STATUS_REG);
#define UPDATE_REG(reg, var) \
if (cHandle->var != pihandle->var) \
IO_WRITE(reg, pihandle->var);
#define EPI_SYNC(pihandle, stat, domain) \
\
WAIT_ON_IOBUSY(stat) \
\
domain = pihandle->domain; \
if (__osCurrentHandle[domain] != pihandle) \
{ \
OSPiHandle *cHandle = __osCurrentHandle[domain]; \
if (domain == PI_DOMAIN1) \
{ \
UPDATE_REG(PI_BSD_DOM1_LAT_REG, latency); \
UPDATE_REG(PI_BSD_DOM1_PGS_REG, pageSize); \
UPDATE_REG(PI_BSD_DOM1_RLS_REG, relDuration); \
UPDATE_REG(PI_BSD_DOM1_PWD_REG, pulse); \
} \
else \
{ \
UPDATE_REG(PI_BSD_DOM2_LAT_REG, latency); \
UPDATE_REG(PI_BSD_DOM2_PGS_REG, pageSize); \
UPDATE_REG(PI_BSD_DOM2_RLS_REG, relDuration); \
UPDATE_REG(PI_BSD_DOM2_PWD_REG, pulse); \
} \
__osCurrentHandle[domain] = pihandle; \
}
#endif
-51
View File
@@ -1,51 +0,0 @@
#ifndef RAREZIP_H
#define RAREZIP_H
#include <ultra64.h>
extern struct huft *D_80007270;
extern u8 *inbuf; //inbuf
extern u8 *D_80007284; //slide
extern u32 inptr; //inptr
extern u32 wp; //wp
extern struct huft *D_80007290; //unk
extern u32 bb; //bb
extern u32 bk; //bk
extern u32 crc1; //crc1
extern u32 crc2; //crc2
extern u32 hufts; //hufts
#ifndef WSIZE
# define WSIZE 0x8000 /* window size--must be a power of two, and */
#endif /* at least 32K for zip's deflate method */
//#define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf(0))
#define get_byte() (inbuf[inptr++])
#ifdef CRYPT
uch cc;
# define NEXTBYTE() \
(decrypt ? (cc = get_byte(), zdecode(cc), cc) : get_byte())
#else
# define NEXTBYTE() (u8)get_byte()
#endif
#define NEEDBITS(n) {while(k<(n)){b|=((u32)NEXTBYTE())<<k;k+=8;}}
#define DUMPBITS(n) {b>>=(n);k-=(n);}
struct huft {
u8 e; /* number of extra bits or operation */
u8 b; /* number of bits in this code or subcode */
union {
u16 n; /* literal, length base, or distance base */
struct huft *t; /* pointer to next level of table */
} v;
};
/* If BMAX needs to be larger than 16, then h and x[] should be ulg. */
#define BMAX 16 /* maximum bit length of any code (16 for explode) */
#define N_MAX 288 /* maximum number of codes in any set */
int bkboot_inflate(void);
#endif
-37
View File
@@ -1,37 +0,0 @@
#define KILL_TIME 50000 /* 50 ms */
#ifndef MIN
#define MIN(a,b) (((a)<(b))?(a):(b))
#endif
#ifndef MAX
#define MAX(a,b) (((a)>(b))?(a):(b))
#endif
ALVoiceState *__n_mapVoice(ALSeqPlayer *, u8, u8, u8);
void __n_unmapVoice(ALSeqPlayer *seqp, ALVoice *voice);
char __n_voiceNeedsNoteKill(ALSeqPlayer *seqp, ALVoice *voice, ALMicroTime killTime); /* sct 1/5/96 */
ALVoiceState *__n_lookupVoice(ALSeqPlayer *, u8, u8);
ALSound *__lookupSound(ALSeqPlayer *, u8, u8, u8);
ALSound *__n_lookupSoundQuick(ALSeqPlayer *, u8, u8, u8);
s16 __n_vsVol(ALVoiceState *voice, ALSeqPlayer *seqp);
ALMicroTime __n_vsDelta(ALVoiceState *voice, ALMicroTime t);
ALPan __n_vsPan(ALVoiceState *voice, ALSeqPlayer *seqp);
void __n_initFromBank(ALSeqPlayer *seqp, ALBank *b);
void __n_initChanState(ALSeqPlayer *seqp);
void __resetPerfChanState(ALSeqPlayer *seqp, s32 chan);
void __n_setInstChanState(ALSeqPlayer *seqp, ALInstrument *inst, s32 chan);
void __seqpPrintVoices(ALSeqPlayer *);
void __n_seqpReleaseVoice(ALSeqPlayer *seqp, ALVoice *voice,
ALMicroTime deltaTime);
void __n_seqpStopOsc(ALSeqPlayer *seqp, ALVoiceState *vs);
void __postNextSeqEvent(ALSeqPlayer *seqp); /* sct 11/7/95 */
-42
View File
@@ -1,42 +0,0 @@
#ifndef STDARG_H
#define STDARG_H
// When not building with IDO, use the builtin vaarg macros for portability.
#ifndef __sgi
#define va_list __builtin_va_list
#define va_start __builtin_va_start
#define va_arg __builtin_va_arg
#define va_end __builtin_va_end
#else
typedef char *va_list;
#define _FP 1
#define _INT 0
#define _STRUCT 2
#define _VA_FP_SAVE_AREA 0x10
#define _VA_ALIGN(p, a) (((unsigned int)(((char *)p) + ((a) > 4 ? (a) : 4) - 1)) & -((a) > 4 ? (a) : 4))
#define va_start(vp, parmN) (vp = ((va_list)&parmN + sizeof(parmN)))
#define __va_stack_arg(list, mode) \
( \
((list) = (char *)_VA_ALIGN(list, __builtin_alignof(mode)) + \
_VA_ALIGN(sizeof(mode), 4)), \
(((char *)list) - (_VA_ALIGN(sizeof(mode), 4) - sizeof(mode))))
#define __va_double_arg(list, mode) \
( \
(((long)list & 0x1) /* 1 byte aligned? */ \
? (list = (char *)((long)list + 7), (char *)((long)list - 6 - _VA_FP_SAVE_AREA)) \
: (((long)list & 0x2) /* 2 byte aligned? */ \
? (list = (char *)((long)list + 10), (char *)((long)list - 24 - _VA_FP_SAVE_AREA)) \
: __va_stack_arg(list, mode))))
#define va_arg(list, mode) ((mode *)(((__builtin_classof(mode) == _FP && \
__builtin_alignof(mode) == sizeof(double)) \
? __va_double_arg(list, mode) \
: __va_stack_arg(list, mode))))[-1]
#define va_end(__list)
#endif
#endif
-8
View File
@@ -6,14 +6,6 @@
#define M_TAU (2*M_PI)
#define BAD_TAU 6.2831853
struct Overlay {
void *start;
void *end;
};
extern struct Overlay gOverlayTable[];
extern f32 climbPoleBottom[3];
extern f32 climbPoleTop[3];
#endif
-70
View File
@@ -1,70 +0,0 @@
#ifndef _VIINT_H
#define _VIINT_H
#include <ultra64.h>
#define OS_TV_TYPE_PAL 0
#define OS_TV_TYPE_NTSC 1
#define OS_TV_TYPE_MPAL 2
//TODO: figure out what this is
#define VI_STATE_01 0x01
#define VI_STATE_XSCALE_UPDATED 0x02
#define VI_STATE_YSCALE_UPDATED 0x04
#define VI_STATE_08 0x08 //related to control regs changing
#define VI_STATE_10 0x10 //swap buffer
#define VI_STATE_BLACK 0x20 //probably related to a black screen
#define VI_STATE_REPEATLINE 0x40 //repeat line?
#define VI_STATE_FADE 0x80 //fade
#define VI_CTRL_ANTIALIAS_MODE_3 0x00300 /* Bit [9:8] anti-alias mode */
#define VI_CTRL_ANTIALIAS_MODE_2 0x00200 /* Bit [9:8] anti-alias mode */
#define VI_CTRL_ANTIALIAS_MODE_1 0x00100 /* Bit [9:8] anti-alias mode */
#define VI_SCALE_MASK 0xfff //see rcp scale_x/scale_y
#define VI_2_10_FPART_MASK 0x3ff
#define VI_SUBPIXEL_SH 0x10
#define BURST(hsync_width, color_width, vsync_width, color_start) \
(hsync_width | (color_width << 8) | (vsync_width << 16) | (color_start << 20))
#define WIDTH(v) v
#define VSYNC(v) v
#define HSYNC(duration, leap) (duration | (leap << 16))
#define LEAP(upper, lower) ((upper << 16) | lower)
#define START(start, end) ((start << 16) | end)
#define FTOFIX(val, i, f) ((u32)(val * (f32)(1 << f)) & ((1 << (i + f)) - 1))
#define F210(val) FTOFIX(val, 2, 10)
#define SCALE(scaleup, off) (F210((1.0f / (f32)scaleup)) | (F210((f32)off) << 16))
#define VCURRENT(v) v //seemingly unused
#define ORIGIN(v) v
#define VINTR(v) v
#define HSTART START
typedef struct
{
/* 0x0 */ f32 factor;
/* 0x4 */ u16 offset;
/* 0x8 */ u32 scale;
} __OSViScale;
typedef struct
{
/* 0x0 */ u16 state;
/* 0x2 */ u16 retraceCount;
/* 0x4 */ void *framep;
/* 0x8 */ OSViMode *modep;
/* 0xC */ u32 control;
/* 0x10 */ OSMesgQueue *msgq;
/* 0x14 */ OSMesg msg;
/* 0x18 */ __OSViScale x;
/* 0x24 */ __OSViScale y;
} __OSViContext;
void __osViSwapContext(void);
extern __OSViContext *__osViCurr;
extern __OSViContext *__osViNext;
__OSViContext *__osViGetCurrentContext(void);
void __osViInit(void);
#endif
Submodule
+1
Submodule lib/ultralib added at 0caf1dfffd
+7 -7
View File
@@ -16,9 +16,9 @@ gSPL3DEX_fifoDataEnd = boot_gSPL3DEX_fifoDataEnd;
D_8000E800 = 0x8000E800;
D_8002D500 = 0x8002D500;
D_8023DA00 = 0x8023E600; /* confirm */
func_8023DA20 = 0x8023E620;
D_803FBE00 = 0x803FBE00;
D_803FFE00 = 0x803FFE00;
core1_main = 0x8023E620;
gGlobalHuffTable = 0x803FBE00;
gCore1CRCs = 0x803FFE00;
D_803FFE10 = 0x803FFE10;
gOverlayTable = 0x803FFE10;
gFramebuffers = 0x803A5D00; /* framebuffers */
@@ -26,10 +26,10 @@ gFramebuffers = 0x803A5D00; /* framebuffers */
/* Renames for the boot segment */
boot_D_8002D500 = D_8002D500;
boot_core1_VRAM = core1_VRAM;
boot_D_803FBE00 = D_803FBE00;
boot_D_803FFE00 = D_803FFE00;
boot_gGlobalHuffTable = gGlobalHuffTable;
boot_gCore1CRCs = gCore1CRCs;
boot_gOverlayTable = gOverlayTable;
boot_func_8023DA20 = func_8023DA20;
boot_core1_main = core1_main;
/* Temporary*/
@@ -404,7 +404,7 @@ time_getDeltaReal_frames = 0x8033e1e0;
time_getDelta = 0x8033e1ec;
allocUnusedBlock = 0x8033f3a8;
func_8033EFB0 = 0x8033f400;
func_8033F000 = 0x8033f450;
__assert = 0x8033f450;
item_inc = 0x80346374;
item_dec = 0x80346394;
item_empty = 0x803463c4;

Some files were not shown because too many files have changed in this diff Show More