mirror of
https://gitlab.com/banjo.decomp/banjo-kazooie
synced 2026-09-03 01:44:02 -04:00
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:
+2
-3
@@ -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/
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -1,5 +0,0 @@
|
||||
.rdata
|
||||
.align 4
|
||||
.globl __libm_qnan_f
|
||||
__libm_qnan_f:
|
||||
.word 0x7F810000
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
@@ -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
@@ -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
@@ -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]
|
||||
|
||||
@@ -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__ */
|
||||
@@ -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 */
|
||||
@@ -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
@@ -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 ========*/
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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 */
|
||||
@@ -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--------------------------*/
|
||||
|
||||
|
||||
@@ -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__ */
|
||||
|
||||
|
||||
|
||||
@@ -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_ */
|
||||
@@ -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 */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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 */
|
||||
@@ -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_ */
|
||||
|
||||
@@ -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 */
|
||||
@@ -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_ */
|
||||
|
||||
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
|
||||
@@ -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_ */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 ========*/
|
||||
@@ -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__ */
|
||||
@@ -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
|
||||
@@ -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_ */
|
||||
|
||||
@@ -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
|
||||
@@ -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__ */
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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])
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
Reference in New Issue
Block a user