From c366e0122a9bd23bd08553a8771a814d0801a2e6 Mon Sep 17 00:00:00 2001 From: someone2639 Date: Mon, 17 Feb 2025 22:56:09 -0500 Subject: [PATCH] Format the Repo (#3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * set build options * remove COMPARE and MDOERN_* switches * remove tools makefile * AR patching is gone too since we want a fullly decomped version * AR is modern * remove cwd changes * edit my own tool to fix compile errors * compile files generated with my own tool instead of the originals * inline modern_gcc makefile * port mips toolchain detection logic * add util.mk for find-command * remove forced AR order and strip/mdebug removal commands * add -mabi=32 to as flags * formatting changes * add clang format files * formatting changes * make libgultra CI work * install mips gcc too * add format check tools * Add formatting to CI * Add CI (#4) * make libgultra CI work * install mips gcc too * remove make setup --------- Co-authored-by: someone2639 * we don't use clang-tidy * use 120 width for formatting * a * address clang-tidy messing up * test * align consecutive macros and declarations * only align macros for now * SpaceAfterCStyleCast: false * format headers too * remove cast space switch because its false by default * pointers on left * AlignConsecutiveBitFields: true * install clang-format and clang-tidy on gh actions * and clang-tools * show diff in format check tool * make CI work --------- Co-authored-by: someone2639 🙏 --- .clang-format | 19 + .github/workflows/ci_gcc.yml | 8 +- format.py | 209 + include/PR/R4300.h | 616 +-- include/PR/abi.h | 501 +-- include/PR/gbi.h | 6012 +++++++++++-------------- include/PR/gs2dex.h | 532 +-- include/PR/gt.h | 214 +- include/PR/gu.h | 276 +- include/PR/libaudio.h | 1147 +++-- include/PR/mbi.h | 37 +- include/PR/os.h | 31 +- include/PR/os_ai.h | 19 +- include/PR/os_cache.h | 23 +- include/PR/os_cont.h | 168 +- include/PR/os_convert.h | 39 +- include/PR/os_debug.h | 46 +- include/PR/os_eeprom.h | 32 +- include/PR/os_error.h | 11 +- include/PR/os_exception.h | 50 +- include/PR/os_flash.h | 77 +- include/PR/os_gbpak.h | 58 +- include/PR/os_gio.h | 11 +- include/PR/os_host.h | 78 +- include/PR/os_internal.h | 4 +- include/PR/os_internal_debug.h | 9 +- include/PR/os_internal_error.h | 11 +- include/PR/os_internal_exception.h | 21 +- include/PR/os_internal_flash.h | 18 +- include/PR/os_internal_gio.h | 11 +- include/PR/os_internal_host.h | 7 +- include/PR/os_internal_reg.h | 18 +- include/PR/os_internal_rsp.h | 17 +- include/PR/os_internal_si.h | 13 +- include/PR/os_internal_thread.h | 7 +- include/PR/os_internal_tlb.h | 15 +- include/PR/os_libc.h | 27 +- include/PR/os_message.h | 93 +- include/PR/os_motor.h | 28 +- include/PR/os_pfs.h | 163 +- include/PR/os_pi.h | 157 +- include/PR/os_rdp.h | 19 +- include/PR/os_reg.h | 13 +- include/PR/os_rsp.h | 11 +- include/PR/os_si.h | 11 +- include/PR/os_system.h | 49 +- include/PR/os_thread.h | 76 +- include/PR/os_time.h | 39 +- include/PR/os_tlb.h | 35 +- include/PR/os_version.h | 8 +- include/PR/os_vi.h | 322 +- include/PR/os_voice.h | 75 +- include/PR/ramrom.h | 90 +- include/PR/rcp.h | 722 +-- include/PR/rdb.h | 105 +- include/PR/region.h | 74 +- include/PR/rmon.h | 10 +- include/PR/sched.h | 98 +- include/PR/sp.h | 160 +- include/PR/sptask.h | 86 +- include/PR/ucode.h | 143 +- include/PR/ultraerror.h | 232 +- include/PR/ultralog.h | 32 +- include/PR/ultratypes.h | 56 +- include/PRinternal/controller.h | 152 +- include/PRinternal/dbgproto.h | 42 +- include/PRinternal/macros.h | 6 +- include/PRinternal/osint.h | 41 +- include/PRinternal/piint.h | 269 +- include/PRinternal/rmonint.h | 53 +- include/PRinternal/viint.h | 57 +- include/assert.h | 4 +- include/compiler/gcc/memory.h | 20 +- include/compiler/gcc/sgidefs.h | 8 +- include/compiler/gcc/stdarg.h | 75 +- include/compiler/gcc/stdlib.h | 63 +- include/compiler/gcc/string.h | 54 +- include/compiler/ido/memory.h | 20 +- include/compiler/ido/stdarg.h | 41 +- include/compiler/ido/stdlib.h | 63 +- include/compiler/ido/string.h | 54 +- include/compiler/modern_gcc/memory.h | 20 +- include/compiler/modern_gcc/sgidefs.h | 8 +- include/compiler/modern_gcc/stdlib.h | 63 +- include/compiler/modern_gcc/string.h | 54 +- include/sys/asm.h | 110 +- include/sys/regdef.h | 292 +- include/ultrahost.h | 50 +- src/audio/auxbus.c | 36 +- src/audio/bnkf.c | 92 +- src/audio/cents2ratio.c | 11 +- src/audio/copy.c | 12 +- src/audio/cseq.c | 344 +- src/audio/cseq.h | 5 +- src/audio/cseqp.h | 4 +- src/audio/cspdelete.c | 4 +- src/audio/cspgetchlvol.c | 4 +- src/audio/cspgetfxmix.c | 4 +- src/audio/cspgetpan.c | 4 +- src/audio/cspgetpriority.c | 3 +- src/audio/cspgetprogram.c | 14 +- src/audio/cspgetseq.c | 4 +- src/audio/cspgetstate.c | 4 +- src/audio/cspgettempo.c | 8 +- src/audio/cspgetvol.c | 4 +- src/audio/csplayer.c | 917 ++-- src/audio/cspplay.c | 8 +- src/audio/cspsendmidi.c | 21 +- src/audio/cspsetbank.c | 4 +- src/audio/cspsetchlvol.c | 16 +- src/audio/cspsetfxmix.c | 16 +- src/audio/cspsetpan.c | 16 +- src/audio/cspsetpriority.c | 3 +- src/audio/cspsetprogram.c | 16 +- src/audio/cspsetseq.c | 4 +- src/audio/cspsettempo.c | 20 +- src/audio/cspsetvol.c | 12 +- src/audio/cspstop.c | 8 +- src/audio/drvrnew.c | 276 +- src/audio/env.c | 629 ++- src/audio/event.c | 228 +- src/audio/filter.c | 15 +- src/audio/heapalloc.c | 35 +- src/audio/heapcheck.c | 30 +- src/audio/heapinit.c | 14 +- src/audio/initfx.h | 50 +- src/audio/load.c | 316 +- src/audio/mainbus.c | 41 +- src/audio/parse_abi.c | 40 +- src/audio/resample.c | 117 +- src/audio/reverb.c | 322 +- src/audio/save.c | 36 +- src/audio/seq.c | 251 +- src/audio/seq.h | 3 +- src/audio/seqp.h | 42 +- src/audio/seqpdelete.c | 5 +- src/audio/seqpgetchlvol.c | 4 +- src/audio/seqpgetfxmix.c | 4 +- src/audio/seqpgetpan.c | 4 +- src/audio/seqpgetpriority.c | 3 +- src/audio/seqpgetprogram.c | 14 +- src/audio/seqpgetseq.c | 4 +- src/audio/seqpgetstate.c | 4 +- src/audio/seqpgettempo.c | 8 +- src/audio/seqpgetvol.c | 4 +- src/audio/seqplayer.c | 1243 +++-- src/audio/seqploop.c | 17 +- src/audio/seqpplay.c | 20 +- src/audio/seqpsendmidi.c | 21 +- src/audio/seqpsetbank.c | 4 +- src/audio/seqpsetchlvol.c | 16 +- src/audio/seqpsetfxmix.c | 16 +- src/audio/seqpsetpan.c | 16 +- src/audio/seqpsetpriority.c | 3 +- src/audio/seqpsetprogram.c | 15 +- src/audio/seqpsetseq.c | 4 +- src/audio/seqpsettempo.c | 20 +- src/audio/seqpsetvol.c | 12 +- src/audio/seqpstop.c | 9 +- src/audio/sl.c | 37 +- src/audio/sndp.h | 71 +- src/audio/sndpallocate.c | 12 +- src/audio/sndpdeallocate.c | 8 +- src/audio/sndpdelete.c | 10 +- src/audio/sndpgetsound.c | 6 +- src/audio/sndpgetstate.c | 6 +- src/audio/sndplayer.c | 204 +- src/audio/sndpplay.c | 10 +- src/audio/sndpplayat.c | 8 +- src/audio/sndpsetfxmix.c | 14 +- src/audio/sndpsetpan.c | 16 +- src/audio/sndpsetpitch.c | 16 +- src/audio/sndpsetpriority.c | 12 +- src/audio/sndpsetsound.c | 10 +- src/audio/sndpsetvol.c | 14 +- src/audio/sndpstop.c | 8 +- src/audio/synaddplayer.c | 6 +- src/audio/synallocfx.c | 9 +- src/audio/synallocvoice.c | 86 +- src/audio/syndelete.c | 4 +- src/audio/synfreefx.c | 4 +- src/audio/synfreevoice.c | 14 +- src/audio/syngetfxref.c | 12 +- src/audio/syngetpriority.c | 4 +- src/audio/synremoveplayer.c | 27 +- src/audio/synsetfxmix.c | 18 +- src/audio/synsetfxparam.c | 8 +- src/audio/synsetpan.c | 16 +- src/audio/synsetpitch.c | 20 +- src/audio/synsetpriority.c | 4 +- src/audio/synsetvol.c | 20 +- src/audio/synstartvoice.c | 24 +- src/audio/synstartvoiceparam.c | 37 +- src/audio/synstopvoice.c | 19 +- src/audio/synthInternals.h | 386 +- src/audio/synthesizer.c | 175 +- src/debug/kdebugserver.c | 2 +- src/error/commonerror.c | 8 +- src/error/error.c | 8 +- src/error/kmcprintf.c | 2 +- src/flash/flashallerase.c | 1 - src/flash/flashgetaddr.c | 3 +- src/flash/flashinit.c | 4 +- src/flash/flashreadarray.c | 1 - src/gt/dumpturbo.c | 386 +- src/gt/gt.c | 173 +- src/gt/gtint.h | 1 - src/gu/align.c | 70 +- src/gu/cosf.c | 110 +- src/gu/coss.c | 8 +- src/gu/dump_gbi.c | 33 +- src/gu/frustum.c | 38 +- src/gu/guint.h | 29 +- src/gu/guloadtile_bug.c | 296 +- src/gu/loadtextureblockmipmap.c | 1093 +++-- src/gu/lookat.c | 102 +- src/gu/lookathil.c | 261 +- src/gu/lookatref.c | 151 +- src/gu/lookatstereo.c | 146 +- src/gu/mtxcatf.c | 35 +- src/gu/mtxcatl.c | 22 +- src/gu/mtxutil.c | 85 +- src/gu/normalize.c | 7 +- src/gu/ortho.c | 36 +- src/gu/parse_gbi.c | 91 +- src/gu/parse_rdp.c | 12 +- src/gu/parse_string.c | 14 +- src/gu/perspective.c | 60 +- src/gu/position.c | 68 +- src/gu/poslight.c | 71 +- src/gu/poslighthil.c | 234 +- src/gu/random.c | 11 +- src/gu/rotate.c | 74 +- src/gu/rotaterpy.c | 58 +- src/gu/scale.c | 8 +- src/gu/sinf.c | 131 +- src/gu/sins.c | 30 +- src/gu/sintable.h | 1098 +---- src/gu/translate.c | 8 +- src/gu/us2dex.c | 99 +- src/gu/us2dex2_emu.c | 16 +- src/gu/us2dex_emu.c | 888 ++-- src/gu/usprite.c | 37 +- src/io/aigetlen.c | 4 +- src/io/aisetfreq.c | 14 +- src/io/aisetnextbuf.c | 17 +- src/io/conteepread.c | 3 +- src/io/contpfs.c | 13 +- src/io/contquery.c | 4 +- src/io/contramread.c | 24 +- src/io/contramwrite.c | 28 +- src/io/contsetch.c | 4 +- src/io/crc.c | 123 +- src/io/devmgr.c | 6 +- src/io/driverominit.c | 2 +- src/io/epirawread.c | 19 - src/io/leodiskinit.c | 4 +- src/io/leointerrupt.c | 31 +- src/io/motor.c | 39 +- src/io/pfsallocatefile.c | 19 +- src/io/pfschecker.c | 19 +- src/io/pfsdeletefile.c | 27 +- src/io/pfsfilestate.c | 2 +- src/io/pfsinitpak.c | 4 +- src/io/pfsreadwritefile.c | 6 +- src/io/pfsrepairid.c | 8 +- src/io/pirawread.c | 37 - src/io/sirawdma.c | 40 - src/io/sirawread.c | 41 +- src/io/sirawwrite.c | 39 - src/io/sprawdma.c | 44 - src/io/sprawread.c | 39 +- src/io/sprawwrite.c | 38 - src/io/sptask.c | 24 +- src/io/visetevent.c | 43 - src/io/visetmode.c | 40 - src/io/visetspecial.c | 19 +- src/io/viswapbuf.c | 44 - src/io/vitbl.c | 1120 ++--- src/libc/syncprintf.c | 2 +- src/libc/xldtob.c | 50 +- src/libc/xlitob.c | 6 +- src/libc/xprintf.c | 113 +- src/libc/xstdio.h | 10 +- src/mgu/asm.h | 40 +- src/mgu/mtxcatl.c | 32 +- src/mgu/mtxxfmf.c | 10 +- src/mgu/mtxxfml.c | 9 +- src/mgu/regdef.h | 292 +- src/mgu/rotate.c | 74 +- src/os/exceptasm.h | 16 +- src/os/getmemsize.c | 4 +- src/os/initialize.c | 11 +- src/os/initialize_emu.c | 1 + src/os/initialize_isv.c | 12 +- src/os/stopthread.c | 2 +- src/os/threadasm.h | 122 +- src/rg/free.c | 36 - src/rg/getbufcount.c | 37 - src/rg/getsize.c | 36 - src/rg/malloc.c | 42 - src/rg/region.c | 180 +- src/rmon/rmonbrk.c | 2 +- src/rmon/rmonmain.c | 1 - src/rmon/rmonmem.c | 12 +- src/rmon/rmonmisc.c | 3 +- src/rmon/rmonregs.c | 14 +- src/rmon/rmontask.c | 14 +- src/sched/sched.c | 481 +- src/sp/clearattribute.c | 4 +- src/sp/color.c | 5 +- src/sp/hide.c | 6 +- src/sp/setattribute.c | 4 +- src/sp/show.c | 6 +- src/sp/sprite.c | 849 ++-- src/sp/spriteex.c | 4 +- src/sp/spriteex2.c | 4 +- src/sp/spscale.c | 10 +- src/vimodes/vimodefpalhaf1.c | 20 +- src/vimodes/vimodefpalhan1.c | 20 +- src/vimodes/vimodefpalhpf1.c | 20 +- src/vimodes/vimodefpalhpf2.c | 20 +- src/vimodes/vimodefpalhpn1.c | 20 +- src/vimodes/vimodefpalhpn2.c | 20 +- src/vimodes/vimodefpallaf1.c | 20 +- src/vimodes/vimodefpallaf2.c | 20 +- src/vimodes/vimodefpallan1.c | 20 +- src/vimodes/vimodefpallan2.c | 20 +- src/vimodes/vimodefpallpf1.c | 20 +- src/vimodes/vimodefpallpf2.c | 20 +- src/vimodes/vimodefpallpn1.c | 20 +- src/vimodes/vimodefpallpn2.c | 20 +- src/vimodes/vimodempalhaf1.c | 20 +- src/vimodes/vimodempalhan1.c | 20 +- src/vimodes/vimodempalhpf1.c | 20 +- src/vimodes/vimodempalhpf2.c | 20 +- src/vimodes/vimodempalhpn1.c | 20 +- src/vimodes/vimodempalhpn2.c | 20 +- src/vimodes/vimodempallaf1.c | 20 +- src/vimodes/vimodempallaf2.c | 20 +- src/vimodes/vimodempallan1.c | 20 +- src/vimodes/vimodempallan2.c | 20 +- src/vimodes/vimodempallpf1.c | 20 +- src/vimodes/vimodempallpf2.c | 20 +- src/vimodes/vimodempallpn1.c | 20 +- src/vimodes/vimodempallpn2.c | 20 +- src/vimodes/vimodentschaf1.c | 20 +- src/vimodes/vimodentschan1.c | 20 +- src/vimodes/vimodentschpf1.c | 20 +- src/vimodes/vimodentschpf2.c | 20 +- src/vimodes/vimodentschpn1.c | 20 +- src/vimodes/vimodentschpn2.c | 20 +- src/vimodes/vimodentsclaf1.c | 20 +- src/vimodes/vimodentsclaf2.c | 20 +- src/vimodes/vimodentsclan1.c | 20 +- src/vimodes/vimodentsclan2.c | 20 +- src/vimodes/vimodentsclpf1.c | 20 +- src/vimodes/vimodentsclpf2.c | 20 +- src/vimodes/vimodentsclpn1.c | 20 +- src/vimodes/vimodentsclpn2.c | 20 +- src/vimodes/vimodepalhaf1.c | 20 +- src/vimodes/vimodepalhan1.c | 20 +- src/vimodes/vimodepalhpf1.c | 20 +- src/vimodes/vimodepalhpf2.c | 20 +- src/vimodes/vimodepalhpn1.c | 20 +- src/vimodes/vimodepalhpn2.c | 20 +- src/vimodes/vimodepallaf1.c | 20 +- src/vimodes/vimodepallaf2.c | 20 +- src/vimodes/vimodepallan1.c | 20 +- src/vimodes/vimodepallan2.c | 20 +- src/vimodes/vimodepallpf1.c | 20 +- src/vimodes/vimodepallpf2.c | 20 +- src/vimodes/vimodepallpn1.c | 20 +- src/vimodes/vimodepallpn2.c | 20 +- src/voice/voicecheckword.c | 78 +- src/voice/voicecontread2.c | 8 +- src/voice/voicecontread36.c | 8 +- src/voice/voicecontwrite20.c | 4 +- src/voice/voicecontwrite4.c | 4 +- src/voice/voicecountsyllables.c | 30 +- src/voice/voicecrc.c | 6 +- src/voice/voicesetadconverter.c | 4 +- src/voice/voicestopreaddata.c | 8 +- tools/check_format.py | 82 + 384 files changed, 15244 insertions(+), 18577 deletions(-) create mode 100644 .clang-format create mode 100644 format.py create mode 100644 tools/check_format.py diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..180d272 --- /dev/null +++ b/.clang-format @@ -0,0 +1,19 @@ +IndentWidth: 4 +Language: Cpp +AlignAfterOpenBracket: Align +SortIncludes: false +ColumnLimit: 120 +PointerAlignment: Left +AllowShortFunctionsOnASingleLine: false +AllowShortIfStatementsOnASingleLine: false +AlignConsecutiveMacros: true +BinPackArguments: true +BinPackParameters: true +BreakBeforeBraces: Attach +BreakBeforeTernaryOperators: true +BreakBeforeBinaryOperators: NonAssignment +Cpp11BracedListStyle: false +IndentCaseLabels: true +AlignTrailingComments: true +AlignConsecutiveBitFields: true +UseTab: Never diff --git a/.github/workflows/ci_gcc.yml b/.github/workflows/ci_gcc.yml index 21d7d4b..a50d779 100644 --- a/.github/workflows/ci_gcc.yml +++ b/.github/workflows/ci_gcc.yml @@ -23,7 +23,13 @@ jobs: ref: ${{ github.event.pull_request.head.sha }} - name: Install package requirements - run: sudo apt-get install -y gcc-mips-linux-gnu binutils-mips-linux-gnu build-essential python3 + run: sudo apt-get install -y clang-tools clang-format clang-tidy gcc-mips-linux-gnu binutils-mips-linux-gnu build-essential python3 + + - name: Verify formatting on all files + run: python3 tools/check_format.py --verbose + + - name: Setup + run: make setup -j $(nproc) TARGET=libgultra${{ matrix.suffix }} VERSION=${{ matrix.version }} - name: Build libgultra${{ matrix.suffix }} ${{ matrix.version }} run: make -j $(nproc) TARGET=libgultra${{ matrix.suffix }} VERSION=${{ matrix.version }} diff --git a/format.py b/format.py new file mode 100644 index 0000000..f958853 --- /dev/null +++ b/format.py @@ -0,0 +1,209 @@ +#!/usr/bin/env python3 + +import argparse +import glob +import multiprocessing +import os +from pathlib import Path +import re +import shutil +import subprocess +import sys +import tempfile +from functools import partial +from typing import List + + +# clang-format, clang-tidy and clang-apply-replacements default version +# This specific version is used when available, for more consistency between contributors +CLANG_VER = 14 + +# Clang-Format options (see .clang-format for rules applied) +FORMAT_OPTS = "-i -style=file" + +# Clang-Tidy options (see .clang-tidy for checks enabled) +TIDY_OPTS = "-p ." +TIDY_FIX_OPTS = "--fix --fix-errors" + +# Clang-Apply-Replacements options (used for multiprocessing) +APPLY_OPTS = "--format --style=file" + +# Compiler options used with Clang-Tidy +# Normal warnings are disabled with -Wno-everything to focus only on tidying +INCLUDES = "-Iinclude -Isrc -Ibuild/gc-eu-mq-dbg -I." +DEFINES = "-D_LANGUAGE_C -DNON_MATCHING -DF3DEX_GBI_2 -DBUILD_CREATOR=\"\" -DBUILD_DATE=__DATE__ -DBUILD_TIME=__TIME__" +COMPILER_OPTS = f"-fno-builtin -std=gnu90 -m32 -Wno-everything {INCLUDES} {DEFINES}" + + +def get_clang_executable(allowed_executables: List[str]): + for executable in allowed_executables: + try: + subprocess.check_call([executable, "--version"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + return executable + except FileNotFoundError or subprocess.CalledProcessError: + pass + return None + + +def get_tidy_version(tidy_executable: str): + tidy_version_run = subprocess.run([tidy_executable, "--version"], stdout=subprocess.PIPE, universal_newlines=True) + match = re.search(r"LLVM version ([0-9]+)", tidy_version_run.stdout) + return int(match.group(1)) + + +CLANG_FORMAT = get_clang_executable([f"clang-format-{CLANG_VER}", "clang-format"]) +if CLANG_FORMAT is None: + sys.exit(f"Error: neither clang-format nor clang-format-{CLANG_VER} found") + +CLANG_TIDY = get_clang_executable([f"clang-tidy-{CLANG_VER}", "clang-tidy"]) +if CLANG_TIDY is None: + sys.exit(f"Error: neither clang-tidy nor clang-tidy-{CLANG_VER} found") + +CLANG_APPLY_REPLACEMENTS = get_clang_executable([f"clang-apply-replacements-{CLANG_VER}", "clang-apply-replacements"]) + +# Try to detect the clang-tidy version and add --fix-notes for version 13+ +# This is used to ensure all fixes are applied properly in recent versions +if get_tidy_version(CLANG_TIDY) >= 13: + TIDY_FIX_OPTS += " --fix-notes" + + +def list_chunks(list: List, chunk_length: int): + for i in range(0, len(list), chunk_length): + yield list[i : i + chunk_length] + + +def run_clang_format(files: List[str]): + exec_str = f"{CLANG_FORMAT} {FORMAT_OPTS} {' '.join(files)}" + subprocess.run(exec_str, shell=True) + + +def run_clang_tidy(files: List[str]): + exec_str = f"{CLANG_TIDY} {TIDY_OPTS} {TIDY_FIX_OPTS} {' '.join(files)} -- {COMPILER_OPTS}" + subprocess.run(exec_str, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + + +def run_clang_tidy_with_export(tmp_dir: str, files: List[str]): + (handle, tmp_file) = tempfile.mkstemp(suffix=".yaml", dir=tmp_dir) + os.close(handle) + + exec_str = f"{CLANG_TIDY} {TIDY_OPTS} --export-fixes={tmp_file} {' '.join(files)} -- {COMPILER_OPTS}" + subprocess.run(exec_str, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + + +def run_clang_apply_replacements(tmp_dir: str): + exec_str = f"{CLANG_APPLY_REPLACEMENTS} {APPLY_OPTS} {tmp_dir}" + subprocess.run(exec_str, shell=True) + + +def cleanup_whitespace(file: str): + """ + Remove whitespace at the end of lines, and ensure all lines end with a newline. + """ + file_p = Path(file) + contents = file_p.read_text(encoding="UTF-8") + modified = False + + contents, n_subst = re.subn(r"[^\S\n]+\n", "\n", contents) + if n_subst != 0: + modified = True + + if contents and not contents.endswith("\n"): + contents += "\n" + modified = True + + if modified: + file_p.write_text(contents, encoding="UTF-8") + + +def format_files(src_files: List[str], extra_files: List[str], nb_jobs: int): + if nb_jobs != 1: + print(f"Formatting files with {nb_jobs} jobs") + else: + print("Formatting files with a single job (consider using -j to make this faster)") + + # Format files in chunks to improve performance while still utilizing jobs + file_chunks = list(list_chunks(src_files, (len(src_files) // nb_jobs) + 1)) + + print("Running clang-format...") + # clang-format only applies changes in the given files, so it's safe to run in parallel + with multiprocessing.get_context("fork").Pool(nb_jobs) as pool: + pool.map(run_clang_format, file_chunks) + + print("Running clang-tidy...") + if nb_jobs > 1: + # clang-tidy may apply changes in #included files, so when running it in parallel we use --export-fixes + # then we call clang-apply-replacements to apply all suggested fixes at the end + tmp_dir = tempfile.mkdtemp() + + try: + with multiprocessing.get_context("fork").Pool(nb_jobs) as pool: + pool.map(partial(run_clang_tidy_with_export, tmp_dir), file_chunks) + + run_clang_apply_replacements(tmp_dir) + finally: + shutil.rmtree(tmp_dir) + else: + run_clang_tidy(src_files) + + print("Cleaning up whitespace...") + # Safe to do in parallel and can be applied to all types of files + with multiprocessing.get_context("fork").Pool(nb_jobs) as pool: + pool.map(cleanup_whitespace, src_files + extra_files) + + print("Done formatting files.") + + +def list_files_to_format(): + files = glob.glob("src/**/*.c", recursive=True) + extra_files = ( + glob.glob("assets/**/*.xml", recursive=True) + + glob.glob("include/**/*.h", recursive=True) + + glob.glob("src/**/*.h", recursive=True) + ) + return files, extra_files + + +def main(): + parser = argparse.ArgumentParser(description="Format files in the codebase to enforce most style rules") + parser.add_argument( + "--show-paths", + dest="show_paths", + action="store_true", + help="Print the paths to the clang-* binaries used", + ) + parser.add_argument("files", metavar="file", nargs="*") + parser.add_argument( + "-j", + dest="jobs", + type=int, + nargs="?", + default=1, + help="number of jobs to run (default: 1 without -j, number of cpus with -j)", + ) + args = parser.parse_args() + + if args.show_paths: + import shutil + + print("CLANG_FORMAT ->", shutil.which(CLANG_FORMAT)) + print("CLANG_TIDY ->", shutil.which(CLANG_TIDY)) + print("CLANG_APPLY_REPLACEMENTS ->", shutil.which(CLANG_APPLY_REPLACEMENTS)) + + nb_jobs = args.jobs or multiprocessing.cpu_count() + if nb_jobs > 1: + if CLANG_APPLY_REPLACEMENTS is None: + sys.exit( + f"Error: neither clang-apply-replacements nor clang-apply-replacements-{CLANG_VER} found (required to use -j)" + ) + + if args.files: + files = args.files + extra_files = [] + else: + files, extra_files = list_files_to_format() + + format_files(files, extra_files, nb_jobs) + + +if __name__ == "__main__": + main() diff --git a/include/PR/R4300.h b/include/PR/R4300.h index fd70d07..544c697 100644 --- a/include/PR/R4300.h +++ b/include/PR/R4300.h @@ -26,328 +26,328 @@ /* * 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 +#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 */ +#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 */ +#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 */ +#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 */ +#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) +#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 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 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 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 TLBINX_PROBE 0x80000000 +#define TLBINX_INXMASK 0x3f +#define TLBINX_INXSHIFT 0 -#define TLBRAND_RANDMASK 0x3f -#define TLBRAND_RANDSHIFT 0 +#define TLBRAND_RANDMASK 0x3f +#define TLBRAND_RANDSHIFT 0 -#define TLBWIRED_WIREDMASK 0x3f +#define TLBWIRED_WIREDMASK 0x3f -#define TLBCTXT_BASEMASK 0xff800000 -#define TLBCTXT_BASESHIFT 23 -#define TLBCTXT_BASEBITS 9 +#define TLBCTXT_BASEMASK 0xff800000 +#define TLBCTXT_BASESHIFT 23 +#define TLBCTXT_BASEBITS 9 -#define TLBCTXT_VPNMASK 0x7ffff0 -#define TLBCTXT_VPNSHIFT 4 +#define TLBCTXT_VPNMASK 0x7ffff0 +#define TLBCTXT_VPNSHIFT 4 -#define TLBPGMASK_4K 0x0 -#define TLBPGMASK_16K 0x6000 -#define TLBPGMASK_64K 0x1e000 +#define TLBPGMASK_4K 0x0 +#define TLBPGMASK_16K 0x6000 +#define TLBPGMASK_64K 0x1e000 /* * Status register */ -#define SR_CUMASK 0xf0000000 /* coproc usable bits */ +#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 */ +#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_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_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_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 */ +#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 +#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_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_IPMASK 0x0000FF00 /* Pending interrupt mask */ +#define CAUSE_IPSHIFT 8 -#define CAUSE_EXCMASK 0x0000007C /* Cause code bits */ +#define CAUSE_EXCMASK 0x0000007C /* Cause code bits */ -#define CAUSE_EXCSHIFT 2 +#define CAUSE_EXCSHIFT 2 /* Cause register exception codes */ -#define EXC_CODE(x) ((x)<<2) +#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 */ +#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 +#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 */ +#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 */ +#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) */ +#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 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) +#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_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_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_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 */ +#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 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). */ +#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 */ +#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: @@ -359,95 +359,95 @@ * 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 +#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 */ +#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 */ +#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 */ +#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 */ +#endif /* _LANGUAGE_ASSEMBLY */ /* - * floating-point status register + * 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 */ +#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 */ diff --git a/include/PR/abi.h b/include/PR/abi.h index e121526..adb7de9 100644 --- a/include/PR/abi.h +++ b/include/PR/abi.h @@ -1,5 +1,5 @@ #ifndef _ABI_H_ -#define _ABI_H_ +#define _ABI_H_ /************************************************************************** * * @@ -24,47 +24,47 @@ /* * Header file for the Audio Binary Interface. * This is included in the Media Binary Interface file - * mbi.h. + * 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 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 +#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 +#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) @@ -76,172 +76,172 @@ */ typedef struct { - unsigned int cmd:8; - unsigned int flags:8; - unsigned int gain:16; - unsigned int addr; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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 */ + 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 +#define ADPCMVSIZE 8 +#define ADPCMFSIZE 16 typedef short ADPCM_STATE[ADPCMFSIZE]; /* @@ -258,7 +258,7 @@ typedef short RESAMPLE_STATE[16]; * Resampler constants */ #define UNITY_PITCH 0x8000 -#define MAX_RATIO 1.99996 /* within .03 cents of +1 octave */ +#define MAX_RATIO 1.99996 /* within .03 cents of +1 octave */ /* * Enveloper/Mixer state @@ -269,142 +269,133 @@ 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 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 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 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 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 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 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 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 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 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 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 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 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 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 aSetLoop(pkt, a) \ + { \ + Acmd* _a = (Acmd*)pkt; \ + _a->words.w0 = _SHIFTL(A_SETLOOP, 24, 8); \ + _a->words.w1 = (unsigned int)(a); \ + } -#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; \ -} +#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_ */ - - - diff --git a/include/PR/gbi.h b/include/PR/gbi.h index 80ba602..8062511 100644 --- a/include/PR/gbi.h +++ b/include/PR/gbi.h @@ -18,7 +18,7 @@ **************************************************************************/ #ifndef _GBI_H_ -#define _GBI_H_ +#define _GBI_H_ #include @@ -75,130 +75,129 @@ * * IMPLEMENTATION NOTE: * There is another group of RDP commands that includes the triangle commands - * generated by the RSP code. These are the raw commands the rasterizer - * hardware chews on, with slope info, etc. They will follow the RDP + * generated by the RSP code. These are the raw commands the rasterizer + * hardware chews on, with slope info, etc. They will follow the RDP * ordering... * * IMPLEMENTATION NOTE: - * The RDP hardware has some of these bit patterns wired up. If the hardware - * changes, we must adjust this table, likewise we can't change/add things + * The RDP hardware has some of these bit patterns wired up. If the hardware + * changes, we must adjust this table, likewise we can't change/add things * once the hardware is frozen. (actually, the RDP hardware only looks at * the lower 6 bits of the command byte) * */ -#ifdef F3DEX_GBI_2 -# ifndef F3DEX_GBI -# define F3DEX_GBI -# endif -#define G_NOOP 0x00 -#define G_RDPHALF_2 0xf1 -#define G_SETOTHERMODE_H 0xe3 -#define G_SETOTHERMODE_L 0xe2 -#define G_RDPHALF_1 0xe1 -#define G_SPNOOP 0xe0 -#define G_ENDDL 0xdf -#define G_DL 0xde -#define G_LOAD_UCODE 0xdd -#define G_MOVEMEM 0xdc -#define G_MOVEWORD 0xdb -#define G_MTX 0xda -#define G_GEOMETRYMODE 0xd9 -#define G_POPMTX 0xd8 -#define G_TEXTURE 0xd7 -#define G_DMA_IO 0xd6 -#define G_SPECIAL_1 0xd5 -#define G_SPECIAL_2 0xd4 -#define G_SPECIAL_3 0xd3 +#ifdef F3DEX_GBI_2 +#ifndef F3DEX_GBI +#define F3DEX_GBI +#endif +#define G_NOOP 0x00 +#define G_RDPHALF_2 0xf1 +#define G_SETOTHERMODE_H 0xe3 +#define G_SETOTHERMODE_L 0xe2 +#define G_RDPHALF_1 0xe1 +#define G_SPNOOP 0xe0 +#define G_ENDDL 0xdf +#define G_DL 0xde +#define G_LOAD_UCODE 0xdd +#define G_MOVEMEM 0xdc +#define G_MOVEWORD 0xdb +#define G_MTX 0xda +#define G_GEOMETRYMODE 0xd9 +#define G_POPMTX 0xd8 +#define G_TEXTURE 0xd7 +#define G_DMA_IO 0xd6 +#define G_SPECIAL_1 0xd5 +#define G_SPECIAL_2 0xd4 +#define G_SPECIAL_3 0xd3 -#define G_VTX 0x01 -#define G_MODIFYVTX 0x02 -#define G_CULLDL 0x03 -#define G_BRANCH_Z 0x04 -#define G_TRI1 0x05 -#define G_TRI2 0x06 -#define G_QUAD 0x07 -#define G_LINE3D 0x08 -#else /* F3DEX_GBI_2 */ +#define G_VTX 0x01 +#define G_MODIFYVTX 0x02 +#define G_CULLDL 0x03 +#define G_BRANCH_Z 0x04 +#define G_TRI1 0x05 +#define G_TRI2 0x06 +#define G_QUAD 0x07 +#define G_LINE3D 0x08 +#else /* F3DEX_GBI_2 */ /* DMA commands: */ -#define G_SPNOOP 0 /* handle 0 gracefully */ -#define G_MTX 1 -#define G_RESERVED0 2 /* not implemeted */ -#define G_MOVEMEM 3 /* move a block of memory (up to 4 words) to dmem */ -#define G_VTX 4 -#define G_RESERVED1 5 /* not implemeted */ -#define G_DL 6 -#define G_RESERVED2 7 /* not implemeted */ -#define G_RESERVED3 8 /* not implemeted */ -#define G_SPRITE2D_BASE 9 /* sprite command */ +#define G_SPNOOP 0 /* handle 0 gracefully */ +#define G_MTX 1 +#define G_RESERVED0 2 /* not implemeted */ +#define G_MOVEMEM 3 /* move a block of memory (up to 4 words) to dmem */ +#define G_VTX 4 +#define G_RESERVED1 5 /* not implemeted */ +#define G_DL 6 +#define G_RESERVED2 7 /* not implemeted */ +#define G_RESERVED3 8 /* not implemeted */ +#define G_SPRITE2D_BASE 9 /* sprite command */ /* IMMEDIATE commands: */ -#define G_IMMFIRST -65 -#define G_TRI1 (G_IMMFIRST-0) -#define G_CULLDL (G_IMMFIRST-1) -#define G_POPMTX (G_IMMFIRST-2) -#define G_MOVEWORD (G_IMMFIRST-3) -#define G_TEXTURE (G_IMMFIRST-4) -#define G_SETOTHERMODE_H (G_IMMFIRST-5) -#define G_SETOTHERMODE_L (G_IMMFIRST-6) -#define G_ENDDL (G_IMMFIRST-7) -#define G_SETGEOMETRYMODE (G_IMMFIRST-8) -#define G_CLEARGEOMETRYMODE (G_IMMFIRST-9) -#define G_LINE3D (G_IMMFIRST-10) -#define G_RDPHALF_1 (G_IMMFIRST-11) -#define G_RDPHALF_2 (G_IMMFIRST-12) -#if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) -# define G_MODIFYVTX (G_IMMFIRST-13) -# define G_TRI2 (G_IMMFIRST-14) -# define G_BRANCH_Z (G_IMMFIRST-15) -# define G_LOAD_UCODE (G_IMMFIRST-16) +#define G_IMMFIRST -65 +#define G_TRI1 (G_IMMFIRST - 0) +#define G_CULLDL (G_IMMFIRST - 1) +#define G_POPMTX (G_IMMFIRST - 2) +#define G_MOVEWORD (G_IMMFIRST - 3) +#define G_TEXTURE (G_IMMFIRST - 4) +#define G_SETOTHERMODE_H (G_IMMFIRST - 5) +#define G_SETOTHERMODE_L (G_IMMFIRST - 6) +#define G_ENDDL (G_IMMFIRST - 7) +#define G_SETGEOMETRYMODE (G_IMMFIRST - 8) +#define G_CLEARGEOMETRYMODE (G_IMMFIRST - 9) +#define G_LINE3D (G_IMMFIRST - 10) +#define G_RDPHALF_1 (G_IMMFIRST - 11) +#define G_RDPHALF_2 (G_IMMFIRST - 12) +#if (defined(F3DEX_GBI) || defined(F3DLP_GBI)) +#define G_MODIFYVTX (G_IMMFIRST - 13) +#define G_TRI2 (G_IMMFIRST - 14) +#define G_BRANCH_Z (G_IMMFIRST - 15) +#define G_LOAD_UCODE (G_IMMFIRST - 16) #else -# define G_RDPHALF_CONT (G_IMMFIRST-13) +#define G_RDPHALF_CONT (G_IMMFIRST - 13) #endif /* We are overloading 2 of the immediate commands to keep the byte alignment of dmem the same */ -#define G_SPRITE2D_SCALEFLIP (G_IMMFIRST-1) -#define G_SPRITE2D_DRAW (G_IMMFIRST-2) +#define G_SPRITE2D_SCALEFLIP (G_IMMFIRST - 1) +#define G_SPRITE2D_DRAW (G_IMMFIRST - 2) /* RDP commands: */ -#define G_NOOP 0xc0 /* 0 */ +#define G_NOOP 0xc0 /* 0 */ -#endif /* F3DEX_GBI_2 */ +#endif /* F3DEX_GBI_2 */ /* RDP commands: */ -#define G_SETCIMG 0xff /* -1 */ -#define G_SETZIMG 0xfe /* -2 */ -#define G_SETTIMG 0xfd /* -3 */ -#define G_SETCOMBINE 0xfc /* -4 */ -#define G_SETENVCOLOR 0xfb /* -5 */ -#define G_SETPRIMCOLOR 0xfa /* -6 */ -#define G_SETBLENDCOLOR 0xf9 /* -7 */ -#define G_SETFOGCOLOR 0xf8 /* -8 */ -#define G_SETFILLCOLOR 0xf7 /* -9 */ -#define G_FILLRECT 0xf6 /* -10 */ -#define G_SETTILE 0xf5 /* -11 */ -#define G_LOADTILE 0xf4 /* -12 */ -#define G_LOADBLOCK 0xf3 /* -13 */ -#define G_SETTILESIZE 0xf2 /* -14 */ -#define G_LOADTLUT 0xf0 /* -16 */ -#define G_RDPSETOTHERMODE 0xef /* -17 */ -#define G_SETPRIMDEPTH 0xee /* -18 */ -#define G_SETSCISSOR 0xed /* -19 */ -#define G_SETCONVERT 0xec /* -20 */ -#define G_SETKEYR 0xeb /* -21 */ -#define G_SETKEYGB 0xea /* -22 */ -#define G_RDPFULLSYNC 0xe9 /* -23 */ -#define G_RDPTILESYNC 0xe8 /* -24 */ -#define G_RDPPIPESYNC 0xe7 /* -25 */ -#define G_RDPLOADSYNC 0xe6 /* -26 */ -#define G_TEXRECTFLIP 0xe5 /* -27 */ -#define G_TEXRECT 0xe4 /* -28 */ +#define G_SETCIMG 0xff /* -1 */ +#define G_SETZIMG 0xfe /* -2 */ +#define G_SETTIMG 0xfd /* -3 */ +#define G_SETCOMBINE 0xfc /* -4 */ +#define G_SETENVCOLOR 0xfb /* -5 */ +#define G_SETPRIMCOLOR 0xfa /* -6 */ +#define G_SETBLENDCOLOR 0xf9 /* -7 */ +#define G_SETFOGCOLOR 0xf8 /* -8 */ +#define G_SETFILLCOLOR 0xf7 /* -9 */ +#define G_FILLRECT 0xf6 /* -10 */ +#define G_SETTILE 0xf5 /* -11 */ +#define G_LOADTILE 0xf4 /* -12 */ +#define G_LOADBLOCK 0xf3 /* -13 */ +#define G_SETTILESIZE 0xf2 /* -14 */ +#define G_LOADTLUT 0xf0 /* -16 */ +#define G_RDPSETOTHERMODE 0xef /* -17 */ +#define G_SETPRIMDEPTH 0xee /* -18 */ +#define G_SETSCISSOR 0xed /* -19 */ +#define G_SETCONVERT 0xec /* -20 */ +#define G_SETKEYR 0xeb /* -21 */ +#define G_SETKEYGB 0xea /* -22 */ +#define G_RDPFULLSYNC 0xe9 /* -23 */ +#define G_RDPTILESYNC 0xe8 /* -24 */ +#define G_RDPPIPESYNC 0xe7 /* -25 */ +#define G_RDPLOADSYNC 0xe6 /* -26 */ +#define G_TEXRECTFLIP 0xe5 /* -27 */ +#define G_TEXRECT 0xe4 /* -28 */ - -/* +/* * The following commands are the "generated" RDP commands; the user * never sees them, the RSP microcode generates them. * @@ -206,14 +205,14 @@ * These id's are -56, -52, -54, -50, -55, -51, -53, -49, ... * edge, shade, texture, zbuff bits: estz */ -#define G_TRI_FILL 0xc8 /* fill triangle: 11001000 */ -#define G_TRI_SHADE 0xcc /* shade triangle: 11001100 */ -#define G_TRI_TXTR 0xca /* texture triangle: 11001010 */ -#define G_TRI_SHADE_TXTR 0xce /* shade, texture triangle: 11001110 */ -#define G_TRI_FILL_ZBUFF 0xc9 /* fill, zbuff triangle: 11001001 */ -#define G_TRI_SHADE_ZBUFF 0xcd /* shade, zbuff triangle: 11001101 */ -#define G_TRI_TXTR_ZBUFF 0xcb /* texture, zbuff triangle: 11001011 */ -#define G_TRI_SHADE_TXTR_ZBUFF 0xcf /* shade, txtr, zbuff trngl: 11001111 */ +#define G_TRI_FILL 0xc8 /* fill triangle: 11001000 */ +#define G_TRI_SHADE 0xcc /* shade triangle: 11001100 */ +#define G_TRI_TXTR 0xca /* texture triangle: 11001010 */ +#define G_TRI_SHADE_TXTR 0xce /* shade, texture triangle: 11001110 */ +#define G_TRI_FILL_ZBUFF 0xc9 /* fill, zbuff triangle: 11001001 */ +#define G_TRI_SHADE_ZBUFF 0xcd /* shade, zbuff triangle: 11001101 */ +#define G_TRI_TXTR_ZBUFF 0xcb /* texture, zbuff triangle: 11001011 */ +#define G_TRI_SHADE_TXTR_ZBUFF 0xcf /* shade, txtr, zbuff trngl: 11001111 */ /* * A TRI_FILL triangle is just the edges. You need to set the DP @@ -229,10 +228,10 @@ */ /* masks to build RDP triangle commands: */ -#define G_RDP_TRI_FILL_MASK 0x08 -#define G_RDP_TRI_SHADE_MASK 0x04 -#define G_RDP_TRI_TXTR_MASK 0x02 -#define G_RDP_TRI_ZBUFF_MASK 0x01 +#define G_RDP_TRI_FILL_MASK 0x08 +#define G_RDP_TRI_SHADE_MASK 0x04 +#define G_RDP_TRI_TXTR_MASK 0x02 +#define G_RDP_TRI_ZBUFF_MASK 0x01 /* * HACK: @@ -247,31 +246,30 @@ * * THIS WILL BE REMOVED FOR HARDWARE VERSION 2.0! */ -#define BOWTIE_VAL 0 - +#define BOWTIE_VAL 0 /* gets added to RDP command, in order to test for addres fixup: */ -#define G_RDP_ADDR_FIXUP 3 /* |RDP cmds| <= this, do addr fixup */ +#define G_RDP_ADDR_FIXUP 3 /* |RDP cmds| <= this, do addr fixup */ #ifdef _LANGUAGE_ASSEMBLY -#define G_RDP_TEXRECT_CHECK ((-1*G_TEXRECTFLIP)& 0xff) +#define G_RDP_TEXRECT_CHECK ((-1 * G_TEXRECTFLIP) & 0xff) #endif /* macros for command parsing: */ -#define GDMACMD(x) (x) -#define GIMMCMD(x) (G_IMMFIRST-(x)) -#define GRDPCMD(x) (0xff-(x)) +#define GDMACMD(x) (x) +#define GIMMCMD(x) (G_IMMFIRST - (x)) +#define GRDPCMD(x) (0xff - (x)) -#define G_DMACMDSIZ 128 -#define G_IMMCMDSIZ 64 -#define G_RDPCMDSIZ 64 +#define G_DMACMDSIZ 128 +#define G_IMMCMDSIZ 64 +#define G_RDPCMDSIZ 64 /* * Coordinate shift values, number of bits of fraction */ -#define G_TEXTURE_IMAGE_FRAC 2 -#define G_TEXTURE_SCALE_FRAC 16 -#define G_SCALE_FRAC 8 -#define G_ROTATE_FRAC 16 +#define G_TEXTURE_IMAGE_FRAC 2 +#define G_TEXTURE_SCALE_FRAC 16 +#define G_SCALE_FRAC 8 +#define G_ROTATE_FRAC 16 /* * Parameters to graphics commands @@ -286,31 +284,29 @@ * Note : this number is NOT the viewport z-scale constant. * See the comment next to G_MAXZ for more info. */ -#define G_MAXFBZ 0x3fff /* 3b exp, 11b mantissa */ +#define G_MAXFBZ 0x3fff /* 3b exp, 11b mantissa */ -#define GPACK_RGBA5551(r, g, b, a) ((((r)<<8) & 0xf800) | \ - (((g)<<3) & 0x7c0) | \ - (((b)>>2) & 0x3e) | ((a) & 0x1)) -#define GPACK_ZDZ(z, dz) ((z) << 2 | (dz)) +#define GPACK_RGBA5551(r, g, b, a) ((((r) << 8) & 0xf800) | (((g) << 3) & 0x7c0) | (((b) >> 2) & 0x3e) | ((a) & 0x1)) +#define GPACK_ZDZ(z, dz) ((z) << 2 | (dz)) /* * G_MTX: parameter flags */ -#ifdef F3DEX_GBI_2 -# define G_MTX_MODELVIEW 0x00 /* matrix types */ -# define G_MTX_PROJECTION 0x04 -# define G_MTX_MUL 0x00 /* concat or load */ -# define G_MTX_LOAD 0x02 -# define G_MTX_NOPUSH 0x00 /* push or not */ -# define G_MTX_PUSH 0x01 -#else /* F3DEX_GBI_2 */ -# define G_MTX_MODELVIEW 0x00 /* matrix types */ -# define G_MTX_PROJECTION 0x01 -# define G_MTX_MUL 0x00 /* concat or load */ -# define G_MTX_LOAD 0x02 -# define G_MTX_NOPUSH 0x00 /* push or not */ -# define G_MTX_PUSH 0x04 -#endif /* F3DEX_GBI_2 */ +#ifdef F3DEX_GBI_2 +#define G_MTX_MODELVIEW 0x00 /* matrix types */ +#define G_MTX_PROJECTION 0x04 +#define G_MTX_MUL 0x00 /* concat or load */ +#define G_MTX_LOAD 0x02 +#define G_MTX_NOPUSH 0x00 /* push or not */ +#define G_MTX_PUSH 0x01 +#else /* F3DEX_GBI_2 */ +#define G_MTX_MODELVIEW 0x00 /* matrix types */ +#define G_MTX_PROJECTION 0x01 +#define G_MTX_MUL 0x00 /* concat or load */ +#define G_MTX_LOAD 0x02 +#define G_MTX_NOPUSH 0x00 /* push or not */ +#define G_MTX_PUSH 0x04 +#endif /* F3DEX_GBI_2 */ /* * flags for G_SETGEOMETRYMODE @@ -318,7 +314,7 @@ * * DO NOT USE THE LOW 8 BITS OF GEOMETRYMODE: * The weird bit-ordering is for the micro-code: the lower byte - * can be OR'd in with G_TRI_SHADE (11001100) to construct + * can be OR'd in with G_TRI_SHADE (11001100) to construct * the triangle command directly. Don't break it... * * DO NOT USE THE HIGH 8 BITS OF GEOMETRYMODE: @@ -332,100 +328,100 @@ * appropriately and use primcolor to see anything. * * G_SHADING_SMOOTH enabled means use all 3 colors of the triangle. - * If it is not set, then do 'flat shading', where only one vertex color + * If it is not set, then do 'flat shading', where only one vertex color * is used (and all 3 vertices are set to that same color by the ucode) * See the man page for gSP1Triangle(). * */ -#define G_ZBUFFER 0x00000001 -#define G_SHADE 0x00000004 /* enable Gouraud interp */ +#define G_ZBUFFER 0x00000001 +#define G_SHADE 0x00000004 /* enable Gouraud interp */ /* rest of low byte reserved for setup ucode */ -#ifdef F3DEX_GBI_2 -# define G_TEXTURE_ENABLE 0x00000000 /* Ignored */ -# define G_SHADING_SMOOTH 0x00200000 /* flat or smooth shaded */ -# define G_CULL_FRONT 0x00000200 -# define G_CULL_BACK 0x00000400 -# define G_CULL_BOTH 0x00000600 /* To make code cleaner */ +#ifdef F3DEX_GBI_2 +#define G_TEXTURE_ENABLE 0x00000000 /* Ignored */ +#define G_SHADING_SMOOTH 0x00200000 /* flat or smooth shaded */ +#define G_CULL_FRONT 0x00000200 +#define G_CULL_BACK 0x00000400 +#define G_CULL_BOTH 0x00000600 /* To make code cleaner */ #else -# define G_TEXTURE_ENABLE 0x00000002 /* Microcode use only */ -# define G_SHADING_SMOOTH 0x00000200 /* flat or smooth shaded */ -# define G_CULL_FRONT 0x00001000 -# define G_CULL_BACK 0x00002000 -# define G_CULL_BOTH 0x00003000 /* To make code cleaner */ +#define G_TEXTURE_ENABLE 0x00000002 /* Microcode use only */ +#define G_SHADING_SMOOTH 0x00000200 /* flat or smooth shaded */ +#define G_CULL_FRONT 0x00001000 +#define G_CULL_BACK 0x00002000 +#define G_CULL_BOTH 0x00003000 /* To make code cleaner */ #endif -#define G_FOG 0x00010000 -#define G_LIGHTING 0x00020000 -#define G_TEXTURE_GEN 0x00040000 -#define G_TEXTURE_GEN_LINEAR 0x00080000 -#define G_LOD 0x00100000 /* NOT IMPLEMENTED */ -#if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) -# define G_CLIPPING 0x00800000 +#define G_FOG 0x00010000 +#define G_LIGHTING 0x00020000 +#define G_TEXTURE_GEN 0x00040000 +#define G_TEXTURE_GEN_LINEAR 0x00080000 +#define G_LOD 0x00100000 /* NOT IMPLEMENTED */ +#if (defined(F3DEX_GBI) || defined(F3DLP_GBI)) +#define G_CLIPPING 0x00800000 #else -# define G_CLIPPING 0x00000000 +#define G_CLIPPING 0x00000000 #endif #ifdef _LANGUAGE_ASSEMBLY -#define G_FOG_H (G_FOG/0x10000) -#define G_LIGHTING_H (G_LIGHTING/0x10000) -#define G_TEXTURE_GEN_H (G_TEXTURE_GEN/0x10000) -#define G_TEXTURE_GEN_LINEAR_H (G_TEXTURE_GEN_LINEAR/0x10000) -#define G_LOD_H (G_LOD/0x10000) /* NOT IMPLEMENTED */ -#if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) -# define G_CLIPPING_H (G_CLIPPING/0x10000) +#define G_FOG_H (G_FOG / 0x10000) +#define G_LIGHTING_H (G_LIGHTING / 0x10000) +#define G_TEXTURE_GEN_H (G_TEXTURE_GEN / 0x10000) +#define G_TEXTURE_GEN_LINEAR_H (G_TEXTURE_GEN_LINEAR / 0x10000) +#define G_LOD_H (G_LOD / 0x10000) /* NOT IMPLEMENTED */ +#if (defined(F3DEX_GBI) || defined(F3DLP_GBI)) +#define G_CLIPPING_H (G_CLIPPING / 0x10000) #endif #endif /* Need these defined for Sprite Microcode */ #ifdef _LANGUAGE_ASSEMBLY -#define G_TX_LOADTILE 7 -#define G_TX_RENDERTILE 0 +#define G_TX_LOADTILE 7 +#define G_TX_RENDERTILE 0 -#define G_TX_NOMIRROR 0 -#define G_TX_WRAP 0 -#define G_TX_MIRROR 0x1 -#define G_TX_CLAMP 0x2 -#define G_TX_NOMASK 0 -#define G_TX_NOLOD 0 +#define G_TX_NOMIRROR 0 +#define G_TX_WRAP 0 +#define G_TX_MIRROR 0x1 +#define G_TX_CLAMP 0x2 +#define G_TX_NOMASK 0 +#define G_TX_NOLOD 0 #endif /* * G_SETIMG fmt: set image formats */ -#define G_IM_FMT_RGBA 0 -#define G_IM_FMT_YUV 1 -#define G_IM_FMT_CI 2 -#define G_IM_FMT_IA 3 -#define G_IM_FMT_I 4 +#define G_IM_FMT_RGBA 0 +#define G_IM_FMT_YUV 1 +#define G_IM_FMT_CI 2 +#define G_IM_FMT_IA 3 +#define G_IM_FMT_I 4 /* * G_SETIMG siz: set image pixel size */ -#define G_IM_SIZ_4b 0 -#define G_IM_SIZ_8b 1 -#define G_IM_SIZ_16b 2 -#define G_IM_SIZ_32b 3 -#define G_IM_SIZ_DD 5 +#define G_IM_SIZ_4b 0 +#define G_IM_SIZ_8b 1 +#define G_IM_SIZ_16b 2 +#define G_IM_SIZ_32b 3 +#define G_IM_SIZ_DD 5 -#define G_IM_SIZ_4b_BYTES 0 -#define G_IM_SIZ_4b_TILE_BYTES G_IM_SIZ_4b_BYTES -#define G_IM_SIZ_4b_LINE_BYTES G_IM_SIZ_4b_BYTES +#define G_IM_SIZ_4b_BYTES 0 +#define G_IM_SIZ_4b_TILE_BYTES G_IM_SIZ_4b_BYTES +#define G_IM_SIZ_4b_LINE_BYTES G_IM_SIZ_4b_BYTES -#define G_IM_SIZ_8b_BYTES 1 -#define G_IM_SIZ_8b_TILE_BYTES G_IM_SIZ_8b_BYTES -#define G_IM_SIZ_8b_LINE_BYTES G_IM_SIZ_8b_BYTES +#define G_IM_SIZ_8b_BYTES 1 +#define G_IM_SIZ_8b_TILE_BYTES G_IM_SIZ_8b_BYTES +#define G_IM_SIZ_8b_LINE_BYTES G_IM_SIZ_8b_BYTES -#define G_IM_SIZ_16b_BYTES 2 -#define G_IM_SIZ_16b_TILE_BYTES G_IM_SIZ_16b_BYTES -#define G_IM_SIZ_16b_LINE_BYTES G_IM_SIZ_16b_BYTES +#define G_IM_SIZ_16b_BYTES 2 +#define G_IM_SIZ_16b_TILE_BYTES G_IM_SIZ_16b_BYTES +#define G_IM_SIZ_16b_LINE_BYTES G_IM_SIZ_16b_BYTES -#define G_IM_SIZ_32b_BYTES 4 -#define G_IM_SIZ_32b_TILE_BYTES 2 -#define G_IM_SIZ_32b_LINE_BYTES 2 +#define G_IM_SIZ_32b_BYTES 4 +#define G_IM_SIZ_32b_TILE_BYTES 2 +#define G_IM_SIZ_32b_LINE_BYTES 2 -#define G_IM_SIZ_4b_LOAD_BLOCK G_IM_SIZ_16b -#define G_IM_SIZ_8b_LOAD_BLOCK G_IM_SIZ_16b -#define G_IM_SIZ_16b_LOAD_BLOCK G_IM_SIZ_16b -#define G_IM_SIZ_32b_LOAD_BLOCK G_IM_SIZ_32b +#define G_IM_SIZ_4b_LOAD_BLOCK G_IM_SIZ_16b +#define G_IM_SIZ_8b_LOAD_BLOCK G_IM_SIZ_16b +#define G_IM_SIZ_16b_LOAD_BLOCK G_IM_SIZ_16b +#define G_IM_SIZ_32b_LOAD_BLOCK G_IM_SIZ_32b #define G_IM_SIZ_4b_SHIFT 2 #define G_IM_SIZ_8b_SHIFT 1 @@ -441,590 +437,530 @@ * G_SETCOMBINE: color combine modes */ /* Color combiner constants: */ -#define G_CCMUX_COMBINED 0 -#define G_CCMUX_TEXEL0 1 -#define G_CCMUX_TEXEL1 2 -#define G_CCMUX_PRIMITIVE 3 -#define G_CCMUX_SHADE 4 -#define G_CCMUX_ENVIRONMENT 5 -#define G_CCMUX_CENTER 6 -#define G_CCMUX_SCALE 6 -#define G_CCMUX_COMBINED_ALPHA 7 -#define G_CCMUX_TEXEL0_ALPHA 8 -#define G_CCMUX_TEXEL1_ALPHA 9 -#define G_CCMUX_PRIMITIVE_ALPHA 10 -#define G_CCMUX_SHADE_ALPHA 11 -#define G_CCMUX_ENV_ALPHA 12 -#define G_CCMUX_LOD_FRACTION 13 -#define G_CCMUX_PRIM_LOD_FRAC 14 -#define G_CCMUX_NOISE 7 -#define G_CCMUX_K4 7 -#define G_CCMUX_K5 15 -#define G_CCMUX_1 6 -#define G_CCMUX_0 31 +#define G_CCMUX_COMBINED 0 +#define G_CCMUX_TEXEL0 1 +#define G_CCMUX_TEXEL1 2 +#define G_CCMUX_PRIMITIVE 3 +#define G_CCMUX_SHADE 4 +#define G_CCMUX_ENVIRONMENT 5 +#define G_CCMUX_CENTER 6 +#define G_CCMUX_SCALE 6 +#define G_CCMUX_COMBINED_ALPHA 7 +#define G_CCMUX_TEXEL0_ALPHA 8 +#define G_CCMUX_TEXEL1_ALPHA 9 +#define G_CCMUX_PRIMITIVE_ALPHA 10 +#define G_CCMUX_SHADE_ALPHA 11 +#define G_CCMUX_ENV_ALPHA 12 +#define G_CCMUX_LOD_FRACTION 13 +#define G_CCMUX_PRIM_LOD_FRAC 14 +#define G_CCMUX_NOISE 7 +#define G_CCMUX_K4 7 +#define G_CCMUX_K5 15 +#define G_CCMUX_1 6 +#define G_CCMUX_0 31 /* Alpha combiner constants: */ -#define G_ACMUX_COMBINED 0 -#define G_ACMUX_TEXEL0 1 -#define G_ACMUX_TEXEL1 2 -#define G_ACMUX_PRIMITIVE 3 -#define G_ACMUX_SHADE 4 -#define G_ACMUX_ENVIRONMENT 5 -#define G_ACMUX_LOD_FRACTION 0 -#define G_ACMUX_PRIM_LOD_FRAC 6 -#define G_ACMUX_1 6 -#define G_ACMUX_0 7 +#define G_ACMUX_COMBINED 0 +#define G_ACMUX_TEXEL0 1 +#define G_ACMUX_TEXEL1 2 +#define G_ACMUX_PRIMITIVE 3 +#define G_ACMUX_SHADE 4 +#define G_ACMUX_ENVIRONMENT 5 +#define G_ACMUX_LOD_FRACTION 0 +#define G_ACMUX_PRIM_LOD_FRAC 6 +#define G_ACMUX_1 6 +#define G_ACMUX_0 7 /* typical CC cycle 1 modes */ -#define G_CC_PRIMITIVE 0, 0, 0, PRIMITIVE, 0, 0, 0, PRIMITIVE -#define G_CC_SHADE 0, 0, 0, SHADE, 0, 0, 0, SHADE -#define G_CC_MODULATEI TEXEL0, 0, SHADE, 0, 0, 0, 0, SHADE -#define G_CC_MODULATEIA TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0 -#define G_CC_MODULATEIDECALA TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0 -#define G_CC_MODULATERGB G_CC_MODULATEI -#define G_CC_MODULATERGBA G_CC_MODULATEIA -#define G_CC_MODULATERGBDECALA G_CC_MODULATEIDECALA -#define G_CC_MODULATEI_PRIM TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE -#define G_CC_MODULATEIA_PRIM TEXEL0, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0 -#define G_CC_MODULATEIDECALA_PRIM TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, TEXEL0 -#define G_CC_MODULATERGB_PRIM G_CC_MODULATEI_PRIM -#define G_CC_MODULATERGBA_PRIM G_CC_MODULATEIA_PRIM -#define G_CC_MODULATERGBDECALA_PRIM G_CC_MODULATEIDECALA_PRIM -#define G_CC_DECALRGB 0, 0, 0, TEXEL0, 0, 0, 0, SHADE -#define G_CC_DECALRGBA 0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0 -#define G_CC_BLENDI ENVIRONMENT, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE -#define G_CC_BLENDIA ENVIRONMENT, SHADE, TEXEL0, SHADE, TEXEL0, 0, SHADE, 0 -#define G_CC_BLENDIDECALA ENVIRONMENT, SHADE, TEXEL0, SHADE, 0, 0, 0, TEXEL0 -#define G_CC_BLENDRGBA TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, SHADE -#define G_CC_BLENDRGBDECALA TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, TEXEL0 -#define G_CC_ADDRGB 1, 0, TEXEL0, SHADE, 0, 0, 0, SHADE -#define G_CC_ADDRGBDECALA 1, 0, TEXEL0, SHADE, 0, 0, 0, TEXEL0 -#define G_CC_REFLECTRGB ENVIRONMENT, 0, TEXEL0, SHADE, 0, 0, 0, SHADE -#define G_CC_REFLECTRGBDECALA ENVIRONMENT, 0, TEXEL0, SHADE, 0, 0, 0, TEXEL0 -#define G_CC_HILITERGB PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE -#define G_CC_HILITERGBA PRIMITIVE, SHADE, TEXEL0, SHADE, PRIMITIVE, SHADE, TEXEL0, SHADE -#define G_CC_HILITERGBDECALA PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, TEXEL0 -#define G_CC_SHADEDECALA 0, 0, 0, SHADE, 0, 0, 0, TEXEL0 -#define G_CC_BLENDPE PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, SHADE, 0 -#define G_CC_BLENDPEDECALA PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0 +#define G_CC_PRIMITIVE 0, 0, 0, PRIMITIVE, 0, 0, 0, PRIMITIVE +#define G_CC_SHADE 0, 0, 0, SHADE, 0, 0, 0, SHADE +#define G_CC_MODULATEI TEXEL0, 0, SHADE, 0, 0, 0, 0, SHADE +#define G_CC_MODULATEIA TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0 +#define G_CC_MODULATEIDECALA TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0 +#define G_CC_MODULATERGB G_CC_MODULATEI +#define G_CC_MODULATERGBA G_CC_MODULATEIA +#define G_CC_MODULATERGBDECALA G_CC_MODULATEIDECALA +#define G_CC_MODULATEI_PRIM TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE +#define G_CC_MODULATEIA_PRIM TEXEL0, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0 +#define G_CC_MODULATEIDECALA_PRIM TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, TEXEL0 +#define G_CC_MODULATERGB_PRIM G_CC_MODULATEI_PRIM +#define G_CC_MODULATERGBA_PRIM G_CC_MODULATEIA_PRIM +#define G_CC_MODULATERGBDECALA_PRIM G_CC_MODULATEIDECALA_PRIM +#define G_CC_DECALRGB 0, 0, 0, TEXEL0, 0, 0, 0, SHADE +#define G_CC_DECALRGBA 0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0 +#define G_CC_BLENDI ENVIRONMENT, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE +#define G_CC_BLENDIA ENVIRONMENT, SHADE, TEXEL0, SHADE, TEXEL0, 0, SHADE, 0 +#define G_CC_BLENDIDECALA ENVIRONMENT, SHADE, TEXEL0, SHADE, 0, 0, 0, TEXEL0 +#define G_CC_BLENDRGBA TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, SHADE +#define G_CC_BLENDRGBDECALA TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, TEXEL0 +#define G_CC_ADDRGB 1, 0, TEXEL0, SHADE, 0, 0, 0, SHADE +#define G_CC_ADDRGBDECALA 1, 0, TEXEL0, SHADE, 0, 0, 0, TEXEL0 +#define G_CC_REFLECTRGB ENVIRONMENT, 0, TEXEL0, SHADE, 0, 0, 0, SHADE +#define G_CC_REFLECTRGBDECALA ENVIRONMENT, 0, TEXEL0, SHADE, 0, 0, 0, TEXEL0 +#define G_CC_HILITERGB PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE +#define G_CC_HILITERGBA PRIMITIVE, SHADE, TEXEL0, SHADE, PRIMITIVE, SHADE, TEXEL0, SHADE +#define G_CC_HILITERGBDECALA PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, TEXEL0 +#define G_CC_SHADEDECALA 0, 0, 0, SHADE, 0, 0, 0, TEXEL0 +#define G_CC_BLENDPE PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, SHADE, 0 +#define G_CC_BLENDPEDECALA PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0 /* oddball modes */ -#define _G_CC_BLENDPE ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, SHADE, 0 -#define _G_CC_BLENDPEDECALA ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, 0, 0, 0, TEXEL0 -#define _G_CC_TWOCOLORTEX PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE +#define _G_CC_BLENDPE ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, SHADE, 0 +#define _G_CC_BLENDPEDECALA ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, 0, 0, 0, TEXEL0 +#define _G_CC_TWOCOLORTEX PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE /* used for 1-cycle sparse mip-maps, primitive color has color of lowest LOD */ -#define _G_CC_SPARSEST PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0, PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0 -#define G_CC_TEMPLERP TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0 +#define _G_CC_SPARSEST PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0, PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0 +#define G_CC_TEMPLERP TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0 /* typical CC cycle 1 modes, usually followed by other cycle 2 modes */ -#define G_CC_TRILERP TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0 -#define G_CC_INTERFERENCE TEXEL0, 0, TEXEL1, 0, TEXEL0, 0, TEXEL1, 0 +#define G_CC_TRILERP TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0 +#define G_CC_INTERFERENCE TEXEL0, 0, TEXEL1, 0, TEXEL0, 0, TEXEL1, 0 /* * One-cycle color convert operation */ -#define G_CC_1CYUV2RGB TEXEL0, K4, K5, TEXEL0, 0, 0, 0, SHADE +#define G_CC_1CYUV2RGB TEXEL0, K4, K5, TEXEL0, 0, 0, 0, SHADE /* * NOTE: YUV2RGB expects TF step1 color conversion to occur in 2nd clock. * Therefore, CC looks for step1 results in TEXEL1 */ -#define G_CC_YUV2RGB TEXEL1, K4, K5, TEXEL1, 0, 0, 0, 0 +#define G_CC_YUV2RGB TEXEL1, K4, K5, TEXEL1, 0, 0, 0, 0 /* typical CC cycle 2 modes */ -#define G_CC_PASS2 0, 0, 0, COMBINED, 0, 0, 0, COMBINED -#define G_CC_MODULATEI2 COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE -#define G_CC_MODULATEIA2 COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0 -#define G_CC_MODULATERGB2 G_CC_MODULATEI2 -#define G_CC_MODULATERGBA2 G_CC_MODULATEIA2 -#define G_CC_MODULATEI_PRIM2 COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE -#define G_CC_MODULATEIA_PRIM2 COMBINED, 0, PRIMITIVE, 0, COMBINED, 0, PRIMITIVE, 0 -#define G_CC_MODULATERGB_PRIM2 G_CC_MODULATEI_PRIM2 -#define G_CC_MODULATERGBA_PRIM2 G_CC_MODULATEIA_PRIM2 -#define G_CC_DECALRGB2 0, 0, 0, COMBINED, 0, 0, 0, SHADE +#define G_CC_PASS2 0, 0, 0, COMBINED, 0, 0, 0, COMBINED +#define G_CC_MODULATEI2 COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE +#define G_CC_MODULATEIA2 COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0 +#define G_CC_MODULATERGB2 G_CC_MODULATEI2 +#define G_CC_MODULATERGBA2 G_CC_MODULATEIA2 +#define G_CC_MODULATEI_PRIM2 COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE +#define G_CC_MODULATEIA_PRIM2 COMBINED, 0, PRIMITIVE, 0, COMBINED, 0, PRIMITIVE, 0 +#define G_CC_MODULATERGB_PRIM2 G_CC_MODULATEI_PRIM2 +#define G_CC_MODULATERGBA_PRIM2 G_CC_MODULATEIA_PRIM2 +#define G_CC_DECALRGB2 0, 0, 0, COMBINED, 0, 0, 0, SHADE /* * ? #define G_CC_DECALRGBA2 COMBINED, SHADE, COMBINED_ALPHA, SHADE, 0, 0, 0, SHADE */ -#define G_CC_BLENDI2 ENVIRONMENT, SHADE, COMBINED, SHADE, 0, 0, 0, SHADE -#define G_CC_BLENDIA2 ENVIRONMENT, SHADE, COMBINED, SHADE, COMBINED, 0, SHADE, 0 -#define G_CC_CHROMA_KEY2 TEXEL0, CENTER, SCALE, 0, 0, 0, 0, 0 -#define G_CC_HILITERGB2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, SHADE -#define G_CC_HILITERGBA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, ENVIRONMENT, COMBINED, TEXEL0, COMBINED -#define G_CC_HILITERGBDECALA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, TEXEL0 -#define G_CC_HILITERGBPASSA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, COMBINED +#define G_CC_BLENDI2 ENVIRONMENT, SHADE, COMBINED, SHADE, 0, 0, 0, SHADE +#define G_CC_BLENDIA2 ENVIRONMENT, SHADE, COMBINED, SHADE, COMBINED, 0, SHADE, 0 +#define G_CC_CHROMA_KEY2 TEXEL0, CENTER, SCALE, 0, 0, 0, 0, 0 +#define G_CC_HILITERGB2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, SHADE +#define G_CC_HILITERGBA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, ENVIRONMENT, COMBINED, TEXEL0, COMBINED +#define G_CC_HILITERGBDECALA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, TEXEL0 +#define G_CC_HILITERGBPASSA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, COMBINED /* * G_SETOTHERMODE_L sft: shift count */ -#define G_MDSFT_ALPHACOMPARE 0 -#define G_MDSFT_ZSRCSEL 2 -#define G_MDSFT_RENDERMODE 3 -#define G_MDSFT_BLENDER 16 +#define G_MDSFT_ALPHACOMPARE 0 +#define G_MDSFT_ZSRCSEL 2 +#define G_MDSFT_RENDERMODE 3 +#define G_MDSFT_BLENDER 16 /* * G_SETOTHERMODE_H sft: shift count */ -#define G_MDSFT_BLENDMASK 0 /* unsupported */ -#define G_MDSFT_ALPHADITHER 4 -#define G_MDSFT_RGBDITHER 6 +#define G_MDSFT_BLENDMASK 0 /* unsupported */ +#define G_MDSFT_ALPHADITHER 4 +#define G_MDSFT_RGBDITHER 6 -#define G_MDSFT_COMBKEY 8 -#define G_MDSFT_TEXTCONV 9 -#define G_MDSFT_TEXTFILT 12 -#define G_MDSFT_TEXTLUT 14 -#define G_MDSFT_TEXTLOD 16 -#define G_MDSFT_TEXTDETAIL 17 -#define G_MDSFT_TEXTPERSP 19 -#define G_MDSFT_CYCLETYPE 20 -#define G_MDSFT_COLORDITHER 22 /* unsupported in HW 2.0 */ -#define G_MDSFT_PIPELINE 23 +#define G_MDSFT_COMBKEY 8 +#define G_MDSFT_TEXTCONV 9 +#define G_MDSFT_TEXTFILT 12 +#define G_MDSFT_TEXTLUT 14 +#define G_MDSFT_TEXTLOD 16 +#define G_MDSFT_TEXTDETAIL 17 +#define G_MDSFT_TEXTPERSP 19 +#define G_MDSFT_CYCLETYPE 20 +#define G_MDSFT_COLORDITHER 22 /* unsupported in HW 2.0 */ +#define G_MDSFT_PIPELINE 23 /* G_SETOTHERMODE_H gPipelineMode */ -#define G_PM_1PRIMITIVE (1 << G_MDSFT_PIPELINE) -#define G_PM_NPRIMITIVE (0 << G_MDSFT_PIPELINE) +#define G_PM_1PRIMITIVE (1 << G_MDSFT_PIPELINE) +#define G_PM_NPRIMITIVE (0 << G_MDSFT_PIPELINE) /* G_SETOTHERMODE_H gSetCycleType */ -#define G_CYC_1CYCLE (0 << G_MDSFT_CYCLETYPE) -#define G_CYC_2CYCLE (1 << G_MDSFT_CYCLETYPE) -#define G_CYC_COPY (2 << G_MDSFT_CYCLETYPE) -#define G_CYC_FILL (3 << G_MDSFT_CYCLETYPE) +#define G_CYC_1CYCLE (0 << G_MDSFT_CYCLETYPE) +#define G_CYC_2CYCLE (1 << G_MDSFT_CYCLETYPE) +#define G_CYC_COPY (2 << G_MDSFT_CYCLETYPE) +#define G_CYC_FILL (3 << G_MDSFT_CYCLETYPE) /* G_SETOTHERMODE_H gSetTexturePersp */ -#define G_TP_NONE (0 << G_MDSFT_TEXTPERSP) -#define G_TP_PERSP (1 << G_MDSFT_TEXTPERSP) +#define G_TP_NONE (0 << G_MDSFT_TEXTPERSP) +#define G_TP_PERSP (1 << G_MDSFT_TEXTPERSP) /* G_SETOTHERMODE_H gSetTextureDetail */ -#define G_TD_CLAMP (0 << G_MDSFT_TEXTDETAIL) -#define G_TD_SHARPEN (1 << G_MDSFT_TEXTDETAIL) -#define G_TD_DETAIL (2 << G_MDSFT_TEXTDETAIL) +#define G_TD_CLAMP (0 << G_MDSFT_TEXTDETAIL) +#define G_TD_SHARPEN (1 << G_MDSFT_TEXTDETAIL) +#define G_TD_DETAIL (2 << G_MDSFT_TEXTDETAIL) /* G_SETOTHERMODE_H gSetTextureLOD */ -#define G_TL_TILE (0 << G_MDSFT_TEXTLOD) -#define G_TL_LOD (1 << G_MDSFT_TEXTLOD) +#define G_TL_TILE (0 << G_MDSFT_TEXTLOD) +#define G_TL_LOD (1 << G_MDSFT_TEXTLOD) /* G_SETOTHERMODE_H gSetTextureLUT */ -#define G_TT_NONE (0 << G_MDSFT_TEXTLUT) -#define G_TT_RGBA16 (2 << G_MDSFT_TEXTLUT) -#define G_TT_IA16 (3 << G_MDSFT_TEXTLUT) +#define G_TT_NONE (0 << G_MDSFT_TEXTLUT) +#define G_TT_RGBA16 (2 << G_MDSFT_TEXTLUT) +#define G_TT_IA16 (3 << G_MDSFT_TEXTLUT) /* G_SETOTHERMODE_H gSetTextureFilter */ -#define G_TF_POINT (0 << G_MDSFT_TEXTFILT) -#define G_TF_AVERAGE (3 << G_MDSFT_TEXTFILT) -#define G_TF_BILERP (2 << G_MDSFT_TEXTFILT) +#define G_TF_POINT (0 << G_MDSFT_TEXTFILT) +#define G_TF_AVERAGE (3 << G_MDSFT_TEXTFILT) +#define G_TF_BILERP (2 << G_MDSFT_TEXTFILT) /* G_SETOTHERMODE_H gSetTextureConvert */ -#define G_TC_CONV (0 << G_MDSFT_TEXTCONV) -#define G_TC_FILTCONV (5 << G_MDSFT_TEXTCONV) -#define G_TC_FILT (6 << G_MDSFT_TEXTCONV) +#define G_TC_CONV (0 << G_MDSFT_TEXTCONV) +#define G_TC_FILTCONV (5 << G_MDSFT_TEXTCONV) +#define G_TC_FILT (6 << G_MDSFT_TEXTCONV) /* G_SETOTHERMODE_H gSetCombineKey */ -#define G_CK_NONE (0 << G_MDSFT_COMBKEY) -#define G_CK_KEY (1 << G_MDSFT_COMBKEY) +#define G_CK_NONE (0 << G_MDSFT_COMBKEY) +#define G_CK_KEY (1 << G_MDSFT_COMBKEY) /* G_SETOTHERMODE_H gSetColorDither */ -#define G_CD_MAGICSQ (0 << G_MDSFT_RGBDITHER) -#define G_CD_BAYER (1 << G_MDSFT_RGBDITHER) -#define G_CD_NOISE (2 << G_MDSFT_RGBDITHER) +#define G_CD_MAGICSQ (0 << G_MDSFT_RGBDITHER) +#define G_CD_BAYER (1 << G_MDSFT_RGBDITHER) +#define G_CD_NOISE (2 << G_MDSFT_RGBDITHER) #ifndef _HW_VERSION_1 -#define G_CD_DISABLE (3 << G_MDSFT_RGBDITHER) -#define G_CD_ENABLE G_CD_NOISE /* HW 1.0 compatibility mode */ +#define G_CD_DISABLE (3 << G_MDSFT_RGBDITHER) +#define G_CD_ENABLE G_CD_NOISE /* HW 1.0 compatibility mode */ #else -#define G_CD_ENABLE (1 << G_MDSFT_COLORDITHER) -#define G_CD_DISABLE (0 << G_MDSFT_COLORDITHER) +#define G_CD_ENABLE (1 << G_MDSFT_COLORDITHER) +#define G_CD_DISABLE (0 << G_MDSFT_COLORDITHER) #endif /* G_SETOTHERMODE_H gSetAlphaDither */ -#define G_AD_PATTERN (0 << G_MDSFT_ALPHADITHER) -#define G_AD_NOTPATTERN (1 << G_MDSFT_ALPHADITHER) -#define G_AD_NOISE (2 << G_MDSFT_ALPHADITHER) -#define G_AD_DISABLE (3 << G_MDSFT_ALPHADITHER) +#define G_AD_PATTERN (0 << G_MDSFT_ALPHADITHER) +#define G_AD_NOTPATTERN (1 << G_MDSFT_ALPHADITHER) +#define G_AD_NOISE (2 << G_MDSFT_ALPHADITHER) +#define G_AD_DISABLE (3 << G_MDSFT_ALPHADITHER) /* G_SETOTHERMODE_L gSetAlphaCompare */ -#define G_AC_NONE (0 << G_MDSFT_ALPHACOMPARE) -#define G_AC_THRESHOLD (1 << G_MDSFT_ALPHACOMPARE) -#define G_AC_DITHER (3 << G_MDSFT_ALPHACOMPARE) +#define G_AC_NONE (0 << G_MDSFT_ALPHACOMPARE) +#define G_AC_THRESHOLD (1 << G_MDSFT_ALPHACOMPARE) +#define G_AC_DITHER (3 << G_MDSFT_ALPHACOMPARE) /* G_SETOTHERMODE_L gSetDepthSource */ -#define G_ZS_PIXEL (0 << G_MDSFT_ZSRCSEL) -#define G_ZS_PRIM (1 << G_MDSFT_ZSRCSEL) +#define G_ZS_PIXEL (0 << G_MDSFT_ZSRCSEL) +#define G_ZS_PRIM (1 << G_MDSFT_ZSRCSEL) /* G_SETOTHERMODE_L gSetRenderMode */ -#define AA_EN 0x8 -#define Z_CMP 0x10 -#define Z_UPD 0x20 -#define IM_RD 0x40 -#define CLR_ON_CVG 0x80 -#define CVG_DST_CLAMP 0 -#define CVG_DST_WRAP 0x100 -#define CVG_DST_FULL 0x200 -#define CVG_DST_SAVE 0x300 -#define ZMODE_OPA 0 -#define ZMODE_INTER 0x400 -#define ZMODE_XLU 0x800 -#define ZMODE_DEC 0xc00 -#define CVG_X_ALPHA 0x1000 -#define ALPHA_CVG_SEL 0x2000 -#define FORCE_BL 0x4000 -#define TEX_EDGE 0x0000 /* used to be 0x8000 */ +#define AA_EN 0x8 +#define Z_CMP 0x10 +#define Z_UPD 0x20 +#define IM_RD 0x40 +#define CLR_ON_CVG 0x80 +#define CVG_DST_CLAMP 0 +#define CVG_DST_WRAP 0x100 +#define CVG_DST_FULL 0x200 +#define CVG_DST_SAVE 0x300 +#define ZMODE_OPA 0 +#define ZMODE_INTER 0x400 +#define ZMODE_XLU 0x800 +#define ZMODE_DEC 0xc00 +#define CVG_X_ALPHA 0x1000 +#define ALPHA_CVG_SEL 0x2000 +#define FORCE_BL 0x4000 +#define TEX_EDGE 0x0000 /* used to be 0x8000 */ -#define G_BL_CLR_IN 0 -#define G_BL_CLR_MEM 1 -#define G_BL_CLR_BL 2 -#define G_BL_CLR_FOG 3 -#define G_BL_1MA 0 -#define G_BL_A_MEM 1 -#define G_BL_A_IN 0 -#define G_BL_A_FOG 1 -#define G_BL_A_SHADE 2 -#define G_BL_1 2 -#define G_BL_0 3 +#define G_BL_CLR_IN 0 +#define G_BL_CLR_MEM 1 +#define G_BL_CLR_BL 2 +#define G_BL_CLR_FOG 3 +#define G_BL_1MA 0 +#define G_BL_A_MEM 1 +#define G_BL_A_IN 0 +#define G_BL_A_FOG 1 +#define G_BL_A_SHADE 2 +#define G_BL_1 2 +#define G_BL_0 3 -#define GBL_c1(m1a, m1b, m2a, m2b) \ - (m1a) << 30 | (m1b) << 26 | (m2a) << 22 | (m2b) << 18 -#define GBL_c2(m1a, m1b, m2a, m2b) \ - (m1a) << 28 | (m1b) << 24 | (m2a) << 20 | (m2b) << 16 +#define GBL_c1(m1a, m1b, m2a, m2b) (m1a) << 30 | (m1b) << 26 | (m2a) << 22 | (m2b) << 18 +#define GBL_c2(m1a, m1b, m2a, m2b) (m1a) << 28 | (m1b) << 24 | (m2a) << 20 | (m2b) << 16 -#define RM_AA_ZB_OPA_SURF(clk) \ - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ - ZMODE_OPA | ALPHA_CVG_SEL | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_AA_ZB_OPA_SURF(clk) \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) -#define RM_RA_ZB_OPA_SURF(clk) \ - AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | \ - ZMODE_OPA | ALPHA_CVG_SEL | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_RA_ZB_OPA_SURF(clk) \ + AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) -#define RM_AA_ZB_XLU_SURF(clk) \ - AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | \ - FORCE_BL | ZMODE_XLU | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_ZB_XLU_SURF(clk) \ + AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | FORCE_BL | ZMODE_XLU \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_ZB_OPA_DECAL(clk) \ - AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | ALPHA_CVG_SEL | \ - ZMODE_DEC | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_AA_ZB_OPA_DECAL(clk) \ + AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | ALPHA_CVG_SEL | ZMODE_DEC \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) -#define RM_RA_ZB_OPA_DECAL(clk) \ - AA_EN | Z_CMP | CVG_DST_WRAP | ALPHA_CVG_SEL | \ - ZMODE_DEC | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_RA_ZB_OPA_DECAL(clk) \ + AA_EN | Z_CMP | CVG_DST_WRAP | ALPHA_CVG_SEL | ZMODE_DEC \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) -#define RM_AA_ZB_XLU_DECAL(clk) \ - AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | \ - FORCE_BL | ZMODE_DEC | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_ZB_XLU_DECAL(clk) \ + AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | FORCE_BL | ZMODE_DEC \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_ZB_OPA_INTER(clk) \ - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ - ALPHA_CVG_SEL | ZMODE_INTER | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_AA_ZB_OPA_INTER(clk) \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ALPHA_CVG_SEL | ZMODE_INTER \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) -#define RM_RA_ZB_OPA_INTER(clk) \ - AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | \ - ALPHA_CVG_SEL | ZMODE_INTER | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_RA_ZB_OPA_INTER(clk) \ + AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | ALPHA_CVG_SEL | ZMODE_INTER \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) -#define RM_AA_ZB_XLU_INTER(clk) \ - AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | \ - FORCE_BL | ZMODE_INTER | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_ZB_XLU_INTER(clk) \ + AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | FORCE_BL | ZMODE_INTER \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_ZB_XLU_LINE(clk) \ - AA_EN | Z_CMP | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | \ - ALPHA_CVG_SEL | FORCE_BL | ZMODE_XLU | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_ZB_XLU_LINE(clk) \ + AA_EN | Z_CMP | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | ZMODE_XLU \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_ZB_DEC_LINE(clk) \ - AA_EN | Z_CMP | IM_RD | CVG_DST_SAVE | CVG_X_ALPHA | \ - ALPHA_CVG_SEL | FORCE_BL | ZMODE_DEC | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_ZB_DEC_LINE(clk) \ + AA_EN | Z_CMP | IM_RD | CVG_DST_SAVE | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | ZMODE_DEC \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_ZB_TEX_EDGE(clk) \ - AA_EN | Z_CMP | Z_UPD | IM_RD | 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_A_MEM) +#define RM_AA_ZB_TEX_EDGE(clk) \ + AA_EN | Z_CMP | Z_UPD | IM_RD | 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_A_MEM) -#define RM_AA_ZB_TEX_INTER(clk) \ - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ - CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_INTER | TEX_EDGE | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_AA_ZB_TEX_INTER(clk) \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_INTER | TEX_EDGE \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) -#define RM_AA_ZB_SUB_SURF(clk) \ - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | \ - ZMODE_OPA | ALPHA_CVG_SEL | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_AA_ZB_SUB_SURF(clk) \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) -#define RM_AA_ZB_PCL_SURF(clk) \ - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ - ZMODE_OPA | G_AC_DITHER | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_ZB_PCL_SURF(clk) \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | G_AC_DITHER \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_ZB_OPA_TERR(clk) \ - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ - ZMODE_OPA | ALPHA_CVG_SEL | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_ZB_OPA_TERR(clk) \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_ZB_TEX_TERR(clk) \ - AA_EN | Z_CMP | Z_UPD | IM_RD | 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 RM_AA_ZB_TEX_TERR(clk) \ + AA_EN | Z_CMP | Z_UPD | IM_RD | 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 RM_AA_ZB_SUB_TERR(clk) \ - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | \ - ZMODE_OPA | ALPHA_CVG_SEL | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_ZB_SUB_TERR(clk) \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_OPA_SURF(clk) \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) -#define RM_AA_OPA_SURF(clk) \ - AA_EN | IM_RD | CVG_DST_CLAMP | \ - ZMODE_OPA | ALPHA_CVG_SEL | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_RA_OPA_SURF(clk) \ + AA_EN | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) -#define RM_RA_OPA_SURF(clk) \ - AA_EN | CVG_DST_CLAMP | \ - ZMODE_OPA | ALPHA_CVG_SEL | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_AA_XLU_SURF(clk) \ + AA_EN | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | FORCE_BL | ZMODE_OPA \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_XLU_SURF(clk) \ - AA_EN | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | FORCE_BL | \ - ZMODE_OPA | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_XLU_LINE(clk) \ + AA_EN | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_XLU_LINE(clk) \ - AA_EN | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | \ - ALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_DEC_LINE(clk) \ + AA_EN | IM_RD | CVG_DST_FULL | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_DEC_LINE(clk) \ - AA_EN | IM_RD | CVG_DST_FULL | CVG_X_ALPHA | \ - ALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_TEX_EDGE(clk) \ + AA_EN | IM_RD | 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_A_MEM) -#define RM_AA_TEX_EDGE(clk) \ - AA_EN | IM_RD | 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_A_MEM) +#define RM_AA_SUB_SURF(clk) \ + AA_EN | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) -#define RM_AA_SUB_SURF(clk) \ - AA_EN | IM_RD | CVG_DST_FULL | \ - ZMODE_OPA | ALPHA_CVG_SEL | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_AA_PCL_SURF(clk) \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | G_AC_DITHER | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_PCL_SURF(clk) \ - AA_EN | IM_RD | CVG_DST_CLAMP | \ - ZMODE_OPA | G_AC_DITHER | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_OPA_TERR(clk) \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_OPA_TERR(clk) \ - AA_EN | IM_RD | CVG_DST_CLAMP | \ - ZMODE_OPA | ALPHA_CVG_SEL | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_AA_TEX_TERR(clk) \ + AA_EN | IM_RD | 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 RM_AA_TEX_TERR(clk) \ - AA_EN | IM_RD | 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 RM_AA_SUB_TERR(clk) \ + AA_EN | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_AA_SUB_TERR(clk) \ - AA_EN | IM_RD | CVG_DST_FULL | \ - ZMODE_OPA | ALPHA_CVG_SEL | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_ZB_OPA_SURF(clk) \ + Z_CMP | Z_UPD | CVG_DST_FULL | ALPHA_CVG_SEL | ZMODE_OPA \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_ZB_XLU_SURF(clk) \ + Z_CMP | IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_XLU | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_ZB_OPA_SURF(clk) \ - Z_CMP | Z_UPD | CVG_DST_FULL | ALPHA_CVG_SEL | \ - ZMODE_OPA | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) - -#define RM_ZB_XLU_SURF(clk) \ - Z_CMP | IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_XLU | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) - -#define RM_ZB_OPA_DECAL(clk) \ - Z_CMP | CVG_DST_FULL | ALPHA_CVG_SEL | ZMODE_DEC | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) - -#define RM_ZB_XLU_DECAL(clk) \ - Z_CMP | IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_DEC | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) - -#define RM_ZB_CLD_SURF(clk) \ - Z_CMP | IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_XLU | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) - -#define RM_ZB_OVL_SURF(clk) \ - Z_CMP | IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_DEC | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) - -#define RM_ZB_PCL_SURF(clk) \ - Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | \ - G_AC_DITHER | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define RM_ZB_OPA_DECAL(clk) \ + Z_CMP | CVG_DST_FULL | ALPHA_CVG_SEL | ZMODE_DEC | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RM_ZB_XLU_DECAL(clk) \ + Z_CMP | IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_DEC | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_OPA_SURF(clk) \ - CVG_DST_CLAMP | FORCE_BL | ZMODE_OPA | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define RM_ZB_CLD_SURF(clk) \ + Z_CMP | IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_XLU | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_XLU_SURF(clk) \ - IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_OPA | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_ZB_OVL_SURF(clk) \ + Z_CMP | IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_DEC | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_TEX_EDGE(clk) \ - CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL |\ - ZMODE_OPA | TEX_EDGE | AA_EN | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define RM_ZB_PCL_SURF(clk) \ + Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | G_AC_DITHER | GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) -#define RM_CLD_SURF(clk) \ - IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_OPA | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RM_OPA_SURF(clk) CVG_DST_CLAMP | FORCE_BL | ZMODE_OPA | GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) -#define RM_PCL_SURF(clk) \ - CVG_DST_FULL | FORCE_BL | ZMODE_OPA | \ - G_AC_DITHER | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define RM_XLU_SURF(clk) \ + IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_OPA | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_ADD(clk) \ - IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_OPA | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_A_FOG, G_BL_CLR_MEM, G_BL_1) +#define RM_TEX_EDGE(clk) \ + CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA | TEX_EDGE | AA_EN \ + | GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) -#define RM_NOOP(clk) \ - GBL_c##clk(0, 0, 0, 0) +#define RM_CLD_SURF(clk) \ + IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_OPA | GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) -#define RM_VISCVG(clk) \ - IM_RD | FORCE_BL | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_BL, G_BL_A_MEM) +#define RM_PCL_SURF(clk) \ + CVG_DST_FULL | FORCE_BL | ZMODE_OPA | G_AC_DITHER | GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) + +#define RM_ADD(clk) \ + IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_OPA | GBL_c##clk(G_BL_CLR_IN, G_BL_A_FOG, G_BL_CLR_MEM, G_BL_1) + +#define RM_NOOP(clk) GBL_c##clk(0, 0, 0, 0) + +#define RM_VISCVG(clk) IM_RD | FORCE_BL | GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_BL, G_BL_A_MEM) /* for rendering to an 8-bit framebuffer */ -#define RM_OPA_CI(clk) \ - CVG_DST_CLAMP | ZMODE_OPA | \ - GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define RM_OPA_CI(clk) CVG_DST_CLAMP | ZMODE_OPA | GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define G_RM_AA_ZB_OPA_SURF RM_AA_ZB_OPA_SURF(1) +#define G_RM_AA_ZB_OPA_SURF2 RM_AA_ZB_OPA_SURF(2) +#define G_RM_AA_ZB_XLU_SURF RM_AA_ZB_XLU_SURF(1) +#define G_RM_AA_ZB_XLU_SURF2 RM_AA_ZB_XLU_SURF(2) +#define G_RM_AA_ZB_OPA_DECAL RM_AA_ZB_OPA_DECAL(1) +#define G_RM_AA_ZB_OPA_DECAL2 RM_AA_ZB_OPA_DECAL(2) +#define G_RM_AA_ZB_XLU_DECAL RM_AA_ZB_XLU_DECAL(1) +#define G_RM_AA_ZB_XLU_DECAL2 RM_AA_ZB_XLU_DECAL(2) +#define G_RM_AA_ZB_OPA_INTER RM_AA_ZB_OPA_INTER(1) +#define G_RM_AA_ZB_OPA_INTER2 RM_AA_ZB_OPA_INTER(2) +#define G_RM_AA_ZB_XLU_INTER RM_AA_ZB_XLU_INTER(1) +#define G_RM_AA_ZB_XLU_INTER2 RM_AA_ZB_XLU_INTER(2) +#define G_RM_AA_ZB_XLU_LINE RM_AA_ZB_XLU_LINE(1) +#define G_RM_AA_ZB_XLU_LINE2 RM_AA_ZB_XLU_LINE(2) +#define G_RM_AA_ZB_DEC_LINE RM_AA_ZB_DEC_LINE(1) +#define G_RM_AA_ZB_DEC_LINE2 RM_AA_ZB_DEC_LINE(2) +#define G_RM_AA_ZB_TEX_EDGE RM_AA_ZB_TEX_EDGE(1) +#define G_RM_AA_ZB_TEX_EDGE2 RM_AA_ZB_TEX_EDGE(2) +#define G_RM_AA_ZB_TEX_INTER RM_AA_ZB_TEX_INTER(1) +#define G_RM_AA_ZB_TEX_INTER2 RM_AA_ZB_TEX_INTER(2) +#define G_RM_AA_ZB_SUB_SURF RM_AA_ZB_SUB_SURF(1) +#define G_RM_AA_ZB_SUB_SURF2 RM_AA_ZB_SUB_SURF(2) +#define G_RM_AA_ZB_PCL_SURF RM_AA_ZB_PCL_SURF(1) +#define G_RM_AA_ZB_PCL_SURF2 RM_AA_ZB_PCL_SURF(2) +#define G_RM_AA_ZB_OPA_TERR RM_AA_ZB_OPA_TERR(1) +#define G_RM_AA_ZB_OPA_TERR2 RM_AA_ZB_OPA_TERR(2) +#define G_RM_AA_ZB_TEX_TERR RM_AA_ZB_TEX_TERR(1) +#define G_RM_AA_ZB_TEX_TERR2 RM_AA_ZB_TEX_TERR(2) +#define G_RM_AA_ZB_SUB_TERR RM_AA_ZB_SUB_TERR(1) +#define G_RM_AA_ZB_SUB_TERR2 RM_AA_ZB_SUB_TERR(2) +#define G_RM_RA_ZB_OPA_SURF RM_RA_ZB_OPA_SURF(1) +#define G_RM_RA_ZB_OPA_SURF2 RM_RA_ZB_OPA_SURF(2) +#define G_RM_RA_ZB_OPA_DECAL RM_RA_ZB_OPA_DECAL(1) +#define G_RM_RA_ZB_OPA_DECAL2 RM_RA_ZB_OPA_DECAL(2) +#define G_RM_RA_ZB_OPA_INTER RM_RA_ZB_OPA_INTER(1) +#define G_RM_RA_ZB_OPA_INTER2 RM_RA_ZB_OPA_INTER(2) -#define G_RM_AA_ZB_OPA_SURF RM_AA_ZB_OPA_SURF(1) -#define G_RM_AA_ZB_OPA_SURF2 RM_AA_ZB_OPA_SURF(2) -#define G_RM_AA_ZB_XLU_SURF RM_AA_ZB_XLU_SURF(1) -#define G_RM_AA_ZB_XLU_SURF2 RM_AA_ZB_XLU_SURF(2) -#define G_RM_AA_ZB_OPA_DECAL RM_AA_ZB_OPA_DECAL(1) -#define G_RM_AA_ZB_OPA_DECAL2 RM_AA_ZB_OPA_DECAL(2) -#define G_RM_AA_ZB_XLU_DECAL RM_AA_ZB_XLU_DECAL(1) -#define G_RM_AA_ZB_XLU_DECAL2 RM_AA_ZB_XLU_DECAL(2) -#define G_RM_AA_ZB_OPA_INTER RM_AA_ZB_OPA_INTER(1) -#define G_RM_AA_ZB_OPA_INTER2 RM_AA_ZB_OPA_INTER(2) -#define G_RM_AA_ZB_XLU_INTER RM_AA_ZB_XLU_INTER(1) -#define G_RM_AA_ZB_XLU_INTER2 RM_AA_ZB_XLU_INTER(2) -#define G_RM_AA_ZB_XLU_LINE RM_AA_ZB_XLU_LINE(1) -#define G_RM_AA_ZB_XLU_LINE2 RM_AA_ZB_XLU_LINE(2) -#define G_RM_AA_ZB_DEC_LINE RM_AA_ZB_DEC_LINE(1) -#define G_RM_AA_ZB_DEC_LINE2 RM_AA_ZB_DEC_LINE(2) -#define G_RM_AA_ZB_TEX_EDGE RM_AA_ZB_TEX_EDGE(1) -#define G_RM_AA_ZB_TEX_EDGE2 RM_AA_ZB_TEX_EDGE(2) -#define G_RM_AA_ZB_TEX_INTER RM_AA_ZB_TEX_INTER(1) -#define G_RM_AA_ZB_TEX_INTER2 RM_AA_ZB_TEX_INTER(2) -#define G_RM_AA_ZB_SUB_SURF RM_AA_ZB_SUB_SURF(1) -#define G_RM_AA_ZB_SUB_SURF2 RM_AA_ZB_SUB_SURF(2) -#define G_RM_AA_ZB_PCL_SURF RM_AA_ZB_PCL_SURF(1) -#define G_RM_AA_ZB_PCL_SURF2 RM_AA_ZB_PCL_SURF(2) -#define G_RM_AA_ZB_OPA_TERR RM_AA_ZB_OPA_TERR(1) -#define G_RM_AA_ZB_OPA_TERR2 RM_AA_ZB_OPA_TERR(2) -#define G_RM_AA_ZB_TEX_TERR RM_AA_ZB_TEX_TERR(1) -#define G_RM_AA_ZB_TEX_TERR2 RM_AA_ZB_TEX_TERR(2) -#define G_RM_AA_ZB_SUB_TERR RM_AA_ZB_SUB_TERR(1) -#define G_RM_AA_ZB_SUB_TERR2 RM_AA_ZB_SUB_TERR(2) +#define G_RM_AA_OPA_SURF RM_AA_OPA_SURF(1) +#define G_RM_AA_OPA_SURF2 RM_AA_OPA_SURF(2) +#define G_RM_AA_XLU_SURF RM_AA_XLU_SURF(1) +#define G_RM_AA_XLU_SURF2 RM_AA_XLU_SURF(2) +#define G_RM_AA_XLU_LINE RM_AA_XLU_LINE(1) +#define G_RM_AA_XLU_LINE2 RM_AA_XLU_LINE(2) +#define G_RM_AA_DEC_LINE RM_AA_DEC_LINE(1) +#define G_RM_AA_DEC_LINE2 RM_AA_DEC_LINE(2) +#define G_RM_AA_TEX_EDGE RM_AA_TEX_EDGE(1) +#define G_RM_AA_TEX_EDGE2 RM_AA_TEX_EDGE(2) +#define G_RM_AA_SUB_SURF RM_AA_SUB_SURF(1) +#define G_RM_AA_SUB_SURF2 RM_AA_SUB_SURF(2) +#define G_RM_AA_PCL_SURF RM_AA_PCL_SURF(1) +#define G_RM_AA_PCL_SURF2 RM_AA_PCL_SURF(2) +#define G_RM_AA_OPA_TERR RM_AA_OPA_TERR(1) +#define G_RM_AA_OPA_TERR2 RM_AA_OPA_TERR(2) +#define G_RM_AA_TEX_TERR RM_AA_TEX_TERR(1) +#define G_RM_AA_TEX_TERR2 RM_AA_TEX_TERR(2) +#define G_RM_AA_SUB_TERR RM_AA_SUB_TERR(1) +#define G_RM_AA_SUB_TERR2 RM_AA_SUB_TERR(2) -#define G_RM_RA_ZB_OPA_SURF RM_RA_ZB_OPA_SURF(1) -#define G_RM_RA_ZB_OPA_SURF2 RM_RA_ZB_OPA_SURF(2) -#define G_RM_RA_ZB_OPA_DECAL RM_RA_ZB_OPA_DECAL(1) -#define G_RM_RA_ZB_OPA_DECAL2 RM_RA_ZB_OPA_DECAL(2) -#define G_RM_RA_ZB_OPA_INTER RM_RA_ZB_OPA_INTER(1) -#define G_RM_RA_ZB_OPA_INTER2 RM_RA_ZB_OPA_INTER(2) +#define G_RM_RA_OPA_SURF RM_RA_OPA_SURF(1) +#define G_RM_RA_OPA_SURF2 RM_RA_OPA_SURF(2) -#define G_RM_AA_OPA_SURF RM_AA_OPA_SURF(1) -#define G_RM_AA_OPA_SURF2 RM_AA_OPA_SURF(2) -#define G_RM_AA_XLU_SURF RM_AA_XLU_SURF(1) -#define G_RM_AA_XLU_SURF2 RM_AA_XLU_SURF(2) -#define G_RM_AA_XLU_LINE RM_AA_XLU_LINE(1) -#define G_RM_AA_XLU_LINE2 RM_AA_XLU_LINE(2) -#define G_RM_AA_DEC_LINE RM_AA_DEC_LINE(1) -#define G_RM_AA_DEC_LINE2 RM_AA_DEC_LINE(2) -#define G_RM_AA_TEX_EDGE RM_AA_TEX_EDGE(1) -#define G_RM_AA_TEX_EDGE2 RM_AA_TEX_EDGE(2) -#define G_RM_AA_SUB_SURF RM_AA_SUB_SURF(1) -#define G_RM_AA_SUB_SURF2 RM_AA_SUB_SURF(2) -#define G_RM_AA_PCL_SURF RM_AA_PCL_SURF(1) -#define G_RM_AA_PCL_SURF2 RM_AA_PCL_SURF(2) -#define G_RM_AA_OPA_TERR RM_AA_OPA_TERR(1) -#define G_RM_AA_OPA_TERR2 RM_AA_OPA_TERR(2) -#define G_RM_AA_TEX_TERR RM_AA_TEX_TERR(1) -#define G_RM_AA_TEX_TERR2 RM_AA_TEX_TERR(2) -#define G_RM_AA_SUB_TERR RM_AA_SUB_TERR(1) -#define G_RM_AA_SUB_TERR2 RM_AA_SUB_TERR(2) +#define G_RM_ZB_OPA_SURF RM_ZB_OPA_SURF(1) +#define G_RM_ZB_OPA_SURF2 RM_ZB_OPA_SURF(2) +#define G_RM_ZB_XLU_SURF RM_ZB_XLU_SURF(1) +#define G_RM_ZB_XLU_SURF2 RM_ZB_XLU_SURF(2) +#define G_RM_ZB_OPA_DECAL RM_ZB_OPA_DECAL(1) +#define G_RM_ZB_OPA_DECAL2 RM_ZB_OPA_DECAL(2) +#define G_RM_ZB_XLU_DECAL RM_ZB_XLU_DECAL(1) +#define G_RM_ZB_XLU_DECAL2 RM_ZB_XLU_DECAL(2) +#define G_RM_ZB_CLD_SURF RM_ZB_CLD_SURF(1) +#define G_RM_ZB_CLD_SURF2 RM_ZB_CLD_SURF(2) +#define G_RM_ZB_OVL_SURF RM_ZB_OVL_SURF(1) +#define G_RM_ZB_OVL_SURF2 RM_ZB_OVL_SURF(2) +#define G_RM_ZB_PCL_SURF RM_ZB_PCL_SURF(1) +#define G_RM_ZB_PCL_SURF2 RM_ZB_PCL_SURF(2) -#define G_RM_RA_OPA_SURF RM_RA_OPA_SURF(1) -#define G_RM_RA_OPA_SURF2 RM_RA_OPA_SURF(2) +#define G_RM_OPA_SURF RM_OPA_SURF(1) +#define G_RM_OPA_SURF2 RM_OPA_SURF(2) +#define G_RM_XLU_SURF RM_XLU_SURF(1) +#define G_RM_XLU_SURF2 RM_XLU_SURF(2) +#define G_RM_CLD_SURF RM_CLD_SURF(1) +#define G_RM_CLD_SURF2 RM_CLD_SURF(2) +#define G_RM_TEX_EDGE RM_TEX_EDGE(1) +#define G_RM_TEX_EDGE2 RM_TEX_EDGE(2) +#define G_RM_PCL_SURF RM_PCL_SURF(1) +#define G_RM_PCL_SURF2 RM_PCL_SURF(2) +#define G_RM_ADD RM_ADD(1) +#define G_RM_ADD2 RM_ADD(2) +#define G_RM_NOOP RM_NOOP(1) +#define G_RM_NOOP2 RM_NOOP(2) +#define G_RM_VISCVG RM_VISCVG(1) +#define G_RM_VISCVG2 RM_VISCVG(2) +#define G_RM_OPA_CI RM_OPA_CI(1) +#define G_RM_OPA_CI2 RM_OPA_CI(2) -#define G_RM_ZB_OPA_SURF RM_ZB_OPA_SURF(1) -#define G_RM_ZB_OPA_SURF2 RM_ZB_OPA_SURF(2) -#define G_RM_ZB_XLU_SURF RM_ZB_XLU_SURF(1) -#define G_RM_ZB_XLU_SURF2 RM_ZB_XLU_SURF(2) -#define G_RM_ZB_OPA_DECAL RM_ZB_OPA_DECAL(1) -#define G_RM_ZB_OPA_DECAL2 RM_ZB_OPA_DECAL(2) -#define G_RM_ZB_XLU_DECAL RM_ZB_XLU_DECAL(1) -#define G_RM_ZB_XLU_DECAL2 RM_ZB_XLU_DECAL(2) -#define G_RM_ZB_CLD_SURF RM_ZB_CLD_SURF(1) -#define G_RM_ZB_CLD_SURF2 RM_ZB_CLD_SURF(2) -#define G_RM_ZB_OVL_SURF RM_ZB_OVL_SURF(1) -#define G_RM_ZB_OVL_SURF2 RM_ZB_OVL_SURF(2) -#define G_RM_ZB_PCL_SURF RM_ZB_PCL_SURF(1) -#define G_RM_ZB_PCL_SURF2 RM_ZB_PCL_SURF(2) - -#define G_RM_OPA_SURF RM_OPA_SURF(1) -#define G_RM_OPA_SURF2 RM_OPA_SURF(2) -#define G_RM_XLU_SURF RM_XLU_SURF(1) -#define G_RM_XLU_SURF2 RM_XLU_SURF(2) -#define G_RM_CLD_SURF RM_CLD_SURF(1) -#define G_RM_CLD_SURF2 RM_CLD_SURF(2) -#define G_RM_TEX_EDGE RM_TEX_EDGE(1) -#define G_RM_TEX_EDGE2 RM_TEX_EDGE(2) -#define G_RM_PCL_SURF RM_PCL_SURF(1) -#define G_RM_PCL_SURF2 RM_PCL_SURF(2) -#define G_RM_ADD RM_ADD(1) -#define G_RM_ADD2 RM_ADD(2) -#define G_RM_NOOP RM_NOOP(1) -#define G_RM_NOOP2 RM_NOOP(2) -#define G_RM_VISCVG RM_VISCVG(1) -#define G_RM_VISCVG2 RM_VISCVG(2) -#define G_RM_OPA_CI RM_OPA_CI(1) -#define G_RM_OPA_CI2 RM_OPA_CI(2) - - -#define G_RM_FOG_SHADE_A GBL_c1(G_BL_CLR_FOG, G_BL_A_SHADE, G_BL_CLR_IN, G_BL_1MA) -#define G_RM_FOG_PRIM_A GBL_c1(G_BL_CLR_FOG, G_BL_A_FOG, G_BL_CLR_IN, G_BL_1MA) -#define G_RM_PASS GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define G_RM_FOG_SHADE_A GBL_c1(G_BL_CLR_FOG, G_BL_A_SHADE, G_BL_CLR_IN, G_BL_1MA) +#define G_RM_FOG_PRIM_A GBL_c1(G_BL_CLR_FOG, G_BL_A_FOG, G_BL_CLR_IN, G_BL_1MA) +#define G_RM_PASS GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) /* * G_SETCONVERT: K0-5 */ -#define G_CV_K0 175 -#define G_CV_K1 -43 -#define G_CV_K2 -89 -#define G_CV_K3 222 -#define G_CV_K4 114 -#define G_CV_K5 42 +#define G_CV_K0 175 +#define G_CV_K1 -43 +#define G_CV_K2 -89 +#define G_CV_K3 222 +#define G_CV_K4 114 +#define G_CV_K5 42 /* * G_SETSCISSOR: interlace mode */ -#define G_SC_NON_INTERLACE 0 -#define G_SC_ODD_INTERLACE 3 -#define G_SC_EVEN_INTERLACE 2 +#define G_SC_NON_INTERLACE 0 +#define G_SC_ODD_INTERLACE 3 +#define G_SC_EVEN_INTERLACE 2 /* flags to inhibit pushing of the display list (on branch) */ -#define G_DL_PUSH 0x00 -#define G_DL_NOPUSH 0x01 +#define G_DL_PUSH 0x00 +#define G_DL_NOPUSH 0x01 /* * BEGIN C-specific section: (typedef's) @@ -1044,7 +980,7 @@ * element, we can't depend on the C compiler to align things * properly. * - * 64-bit structure alignment is enforced by wrapping structures with + * 64-bit structure alignment is enforced by wrapping structures with * unions that contain a dummy "long long int". Why this works is * explained in the ANSI C Spec, or on page 186 of the second edition * of K&R, "The C Programming Language". @@ -1068,27 +1004,27 @@ * Vertex (set up for use with colors) */ typedef struct { - short ob[3]; /* x, y, z */ - unsigned short flag; - short tc[2]; /* texture coord */ - unsigned char cn[4]; /* color & alpha */ + short ob[3]; /* x, y, z */ + unsigned short flag; + short tc[2]; /* texture coord */ + unsigned char cn[4]; /* color & alpha */ } Vtx_t; /* * Vertex (set up for use with normals) */ typedef struct { - short ob[3]; /* x, y, z */ - unsigned short flag; - short tc[2]; /* texture coord */ - signed char n[3]; /* normal */ - unsigned char a; /* alpha */ + short ob[3]; /* x, y, z */ + unsigned short flag; + short tc[2]; /* texture coord */ + signed char n[3]; /* normal */ + unsigned char a; /* alpha */ } Vtx_tn; typedef union { - Vtx_t v; /* Use this one for colors */ - Vtx_tn n; /* Use this one for normals */ - long long int force_structure_alignment; + Vtx_t v; /* Use this one for colors */ + Vtx_tn n; /* Use this one for normals */ + long long int force_structure_alignment; } Vtx; /* @@ -1096,35 +1032,35 @@ typedef union { */ typedef struct { - void *SourceImagePointer; - void *TlutPointer; - short Stride; - short SubImageWidth; - short SubImageHeight; - char SourceImageType; - char SourceImageBitSize; - short SourceImageOffsetS; - short SourceImageOffsetT; - /* 20 bytes for above */ + void* SourceImagePointer; + void* TlutPointer; + short Stride; + short SubImageWidth; + short SubImageHeight; + char SourceImageType; + char SourceImageBitSize; + short SourceImageOffsetS; + short SourceImageOffsetT; + /* 20 bytes for above */ - /* padding to bring structure size to 64 bit allignment */ - char dummy[4]; + /* padding to bring structure size to 64 bit allignment */ + char dummy[4]; } uSprite_t; -typedef union { - uSprite_t s; +typedef union { + uSprite_t s; - /* Need to make sure this is 64 bit aligned */ - long long int force_structure_allignment[3]; + /* Need to make sure this is 64 bit aligned */ + long long int force_structure_allignment[3]; } uSprite; /* * Triangle face */ typedef struct { - unsigned char flag; - unsigned char v[3]; + unsigned char flag; + unsigned char v[3]; } Tri; /* @@ -1132,11 +1068,11 @@ typedef struct { * First 8 words are integer portion of the 4x4 matrix * Last 8 words are the fraction portion of the 4x4 matrix */ -typedef long Mtx_t[4][4]; +typedef long Mtx_t[4][4]; typedef union { - Mtx_t m; - long long int force_structure_alignment; + Mtx_t m; + long long int force_structure_alignment; } Mtx; /* @@ -1160,7 +1096,7 @@ typedef union { * but we don't have the ucode to do that... * */ -#define G_MAXZ 0x03ff /* 10 bits of integer screen-Z precision */ +#define G_MAXZ 0x03ff /* 10 bits of integer screen-Z precision */ /* * The viewport structure elements have 2 bits of fraction, necessary @@ -1174,14 +1110,14 @@ typedef union { * (SCREEN_WD/2)*4, (SCREEN_HT/2)*4, 0, 0, */ typedef struct { - short vscale[4]; /* scale, 2 bits fraction */ - short vtrans[4]; /* translate, 2 bits fraction */ - /* both the above arrays are padded to 64-bit boundary */ + short vscale[4]; /* scale, 2 bits fraction */ + short vtrans[4]; /* translate, 2 bits fraction */ + /* both the above arrays are padded to 64-bit boundary */ } Vp_t; typedef union { - Vp_t vp; - long long int force_structure_alignment; + Vp_t vp; + long long int force_structure_alignment; } Vp; /* @@ -1192,42 +1128,42 @@ typedef union { * which to store a 1-4 word DMA. * */ -#ifdef F3DEX_GBI_2 +#ifdef F3DEX_GBI_2 /* 0,4 are reserved by G_MTX */ -# define G_MV_MMTX 2 -# define G_MV_PMTX 6 -# define G_MV_VIEWPORT 8 -# define G_MV_LIGHT 10 -# define G_MV_POINT 12 -# define G_MV_MATRIX 14 /* NOTE: this is in moveword table */ -# define G_MVO_LOOKATX (0*24) -# define G_MVO_LOOKATY (1*24) -# define G_MVO_L0 (2*24) -# define G_MVO_L1 (3*24) -# define G_MVO_L2 (4*24) -# define G_MVO_L3 (5*24) -# define G_MVO_L4 (6*24) -# define G_MVO_L5 (7*24) -# define G_MVO_L6 (8*24) -# define G_MVO_L7 (9*24) -#else /* F3DEX_GBI_2 */ -# define G_MV_VIEWPORT 0x80 -# define G_MV_LOOKATY 0x82 -# define G_MV_LOOKATX 0x84 -# define G_MV_L0 0x86 -# define G_MV_L1 0x88 -# define G_MV_L2 0x8a -# define G_MV_L3 0x8c -# define G_MV_L4 0x8e -# define G_MV_L5 0x90 -# define G_MV_L6 0x92 -# define G_MV_L7 0x94 -# define G_MV_TXTATT 0x96 -# define G_MV_MATRIX_1 0x9e /* NOTE: this is in moveword table */ -# define G_MV_MATRIX_2 0x98 -# define G_MV_MATRIX_3 0x9a -# define G_MV_MATRIX_4 0x9c -#endif /* F3DEX_GBI_2 */ +#define G_MV_MMTX 2 +#define G_MV_PMTX 6 +#define G_MV_VIEWPORT 8 +#define G_MV_LIGHT 10 +#define G_MV_POINT 12 +#define G_MV_MATRIX 14 /* NOTE: this is in moveword table */ +#define G_MVO_LOOKATX (0 * 24) +#define G_MVO_LOOKATY (1 * 24) +#define G_MVO_L0 (2 * 24) +#define G_MVO_L1 (3 * 24) +#define G_MVO_L2 (4 * 24) +#define G_MVO_L3 (5 * 24) +#define G_MVO_L4 (6 * 24) +#define G_MVO_L5 (7 * 24) +#define G_MVO_L6 (8 * 24) +#define G_MVO_L7 (9 * 24) +#else /* F3DEX_GBI_2 */ +#define G_MV_VIEWPORT 0x80 +#define G_MV_LOOKATY 0x82 +#define G_MV_LOOKATX 0x84 +#define G_MV_L0 0x86 +#define G_MV_L1 0x88 +#define G_MV_L2 0x8a +#define G_MV_L3 0x8c +#define G_MV_L4 0x8e +#define G_MV_L5 0x90 +#define G_MV_L6 0x92 +#define G_MV_L7 0x94 +#define G_MV_TXTATT 0x96 +#define G_MV_MATRIX_1 0x9e /* NOTE: this is in moveword table */ +#define G_MV_MATRIX_2 0x98 +#define G_MV_MATRIX_3 0x9a +#define G_MV_MATRIX_4 0x9c +#endif /* F3DEX_GBI_2 */ /* * MOVEWORD indices @@ -1237,271 +1173,293 @@ typedef union { * an immediate word will be stored. * */ -#define G_MW_MATRIX 0x00 /* NOTE: also used by movemem */ -#define G_MW_NUMLIGHT 0x02 -#define G_MW_CLIP 0x04 -#define G_MW_SEGMENT 0x06 -#define G_MW_FOG 0x08 -#define G_MW_LIGHTCOL 0x0a -#ifdef F3DEX_GBI_2 -# define G_MW_FORCEMTX 0x0c -#else /* F3DEX_GBI_2 */ -# define G_MW_POINTS 0x0c -#endif /* F3DEX_GBI_2 */ -#define G_MW_PERSPNORM 0x0e +#define G_MW_MATRIX 0x00 /* NOTE: also used by movemem */ +#define G_MW_NUMLIGHT 0x02 +#define G_MW_CLIP 0x04 +#define G_MW_SEGMENT 0x06 +#define G_MW_FOG 0x08 +#define G_MW_LIGHTCOL 0x0a +#ifdef F3DEX_GBI_2 +#define G_MW_FORCEMTX 0x0c +#else /* F3DEX_GBI_2 */ +#define G_MW_POINTS 0x0c +#endif /* F3DEX_GBI_2 */ +#define G_MW_PERSPNORM 0x0e /* * These are offsets from the address in the dmem table - */ -#define G_MWO_NUMLIGHT 0x00 -#define G_MWO_CLIP_RNX 0x04 -#define G_MWO_CLIP_RNY 0x0c -#define G_MWO_CLIP_RPX 0x14 -#define G_MWO_CLIP_RPY 0x1c -#define G_MWO_SEGMENT_0 0x00 -#define G_MWO_SEGMENT_1 0x01 -#define G_MWO_SEGMENT_2 0x02 -#define G_MWO_SEGMENT_3 0x03 -#define G_MWO_SEGMENT_4 0x04 -#define G_MWO_SEGMENT_5 0x05 -#define G_MWO_SEGMENT_6 0x06 -#define G_MWO_SEGMENT_7 0x07 -#define G_MWO_SEGMENT_8 0x08 -#define G_MWO_SEGMENT_9 0x09 -#define G_MWO_SEGMENT_A 0x0a -#define G_MWO_SEGMENT_B 0x0b -#define G_MWO_SEGMENT_C 0x0c -#define G_MWO_SEGMENT_D 0x0d -#define G_MWO_SEGMENT_E 0x0e -#define G_MWO_SEGMENT_F 0x0f -#define G_MWO_FOG 0x00 -#define G_MWO_aLIGHT_1 0x00 -#define G_MWO_bLIGHT_1 0x04 -#ifdef F3DEX_GBI_2 -#define G_MWO_aLIGHT_2 0x18 -#define G_MWO_bLIGHT_2 0x1c -#define G_MWO_aLIGHT_3 0x30 -#define G_MWO_bLIGHT_3 0x34 -#define G_MWO_aLIGHT_4 0x48 -#define G_MWO_bLIGHT_4 0x4c -#define G_MWO_aLIGHT_5 0x60 -#define G_MWO_bLIGHT_5 0x64 -#define G_MWO_aLIGHT_6 0x78 -#define G_MWO_bLIGHT_6 0x7c -#define G_MWO_aLIGHT_7 0x90 -#define G_MWO_bLIGHT_7 0x94 -#define G_MWO_aLIGHT_8 0xa8 -#define G_MWO_bLIGHT_8 0xac + */ +#define G_MWO_NUMLIGHT 0x00 +#define G_MWO_CLIP_RNX 0x04 +#define G_MWO_CLIP_RNY 0x0c +#define G_MWO_CLIP_RPX 0x14 +#define G_MWO_CLIP_RPY 0x1c +#define G_MWO_SEGMENT_0 0x00 +#define G_MWO_SEGMENT_1 0x01 +#define G_MWO_SEGMENT_2 0x02 +#define G_MWO_SEGMENT_3 0x03 +#define G_MWO_SEGMENT_4 0x04 +#define G_MWO_SEGMENT_5 0x05 +#define G_MWO_SEGMENT_6 0x06 +#define G_MWO_SEGMENT_7 0x07 +#define G_MWO_SEGMENT_8 0x08 +#define G_MWO_SEGMENT_9 0x09 +#define G_MWO_SEGMENT_A 0x0a +#define G_MWO_SEGMENT_B 0x0b +#define G_MWO_SEGMENT_C 0x0c +#define G_MWO_SEGMENT_D 0x0d +#define G_MWO_SEGMENT_E 0x0e +#define G_MWO_SEGMENT_F 0x0f +#define G_MWO_FOG 0x00 +#define G_MWO_aLIGHT_1 0x00 +#define G_MWO_bLIGHT_1 0x04 +#ifdef F3DEX_GBI_2 +#define G_MWO_aLIGHT_2 0x18 +#define G_MWO_bLIGHT_2 0x1c +#define G_MWO_aLIGHT_3 0x30 +#define G_MWO_bLIGHT_3 0x34 +#define G_MWO_aLIGHT_4 0x48 +#define G_MWO_bLIGHT_4 0x4c +#define G_MWO_aLIGHT_5 0x60 +#define G_MWO_bLIGHT_5 0x64 +#define G_MWO_aLIGHT_6 0x78 +#define G_MWO_bLIGHT_6 0x7c +#define G_MWO_aLIGHT_7 0x90 +#define G_MWO_bLIGHT_7 0x94 +#define G_MWO_aLIGHT_8 0xa8 +#define G_MWO_bLIGHT_8 0xac #else -#define G_MWO_aLIGHT_2 0x20 -#define G_MWO_bLIGHT_2 0x24 -#define G_MWO_aLIGHT_3 0x40 -#define G_MWO_bLIGHT_3 0x44 -#define G_MWO_aLIGHT_4 0x60 -#define G_MWO_bLIGHT_4 0x64 -#define G_MWO_aLIGHT_5 0x80 -#define G_MWO_bLIGHT_5 0x84 -#define G_MWO_aLIGHT_6 0xa0 -#define G_MWO_bLIGHT_6 0xa4 -#define G_MWO_aLIGHT_7 0xc0 -#define G_MWO_bLIGHT_7 0xc4 -#define G_MWO_aLIGHT_8 0xe0 -#define G_MWO_bLIGHT_8 0xe4 +#define G_MWO_aLIGHT_2 0x20 +#define G_MWO_bLIGHT_2 0x24 +#define G_MWO_aLIGHT_3 0x40 +#define G_MWO_bLIGHT_3 0x44 +#define G_MWO_aLIGHT_4 0x60 +#define G_MWO_bLIGHT_4 0x64 +#define G_MWO_aLIGHT_5 0x80 +#define G_MWO_bLIGHT_5 0x84 +#define G_MWO_aLIGHT_6 0xa0 +#define G_MWO_bLIGHT_6 0xa4 +#define G_MWO_aLIGHT_7 0xc0 +#define G_MWO_bLIGHT_7 0xc4 +#define G_MWO_aLIGHT_8 0xe0 +#define G_MWO_bLIGHT_8 0xe4 #endif -#define G_MWO_MATRIX_XX_XY_I 0x00 -#define G_MWO_MATRIX_XZ_XW_I 0x04 -#define G_MWO_MATRIX_YX_YY_I 0x08 -#define G_MWO_MATRIX_YZ_YW_I 0x0c -#define G_MWO_MATRIX_ZX_ZY_I 0x10 -#define G_MWO_MATRIX_ZZ_ZW_I 0x14 -#define G_MWO_MATRIX_WX_WY_I 0x18 -#define G_MWO_MATRIX_WZ_WW_I 0x1c -#define G_MWO_MATRIX_XX_XY_F 0x20 -#define G_MWO_MATRIX_XZ_XW_F 0x24 -#define G_MWO_MATRIX_YX_YY_F 0x28 -#define G_MWO_MATRIX_YZ_YW_F 0x2c -#define G_MWO_MATRIX_ZX_ZY_F 0x30 -#define G_MWO_MATRIX_ZZ_ZW_F 0x34 -#define G_MWO_MATRIX_WX_WY_F 0x38 -#define G_MWO_MATRIX_WZ_WW_F 0x3c -#define G_MWO_POINT_RGBA 0x10 -#define G_MWO_POINT_ST 0x14 -#define G_MWO_POINT_XYSCREEN 0x18 -#define G_MWO_POINT_ZSCREEN 0x1c +#define G_MWO_MATRIX_XX_XY_I 0x00 +#define G_MWO_MATRIX_XZ_XW_I 0x04 +#define G_MWO_MATRIX_YX_YY_I 0x08 +#define G_MWO_MATRIX_YZ_YW_I 0x0c +#define G_MWO_MATRIX_ZX_ZY_I 0x10 +#define G_MWO_MATRIX_ZZ_ZW_I 0x14 +#define G_MWO_MATRIX_WX_WY_I 0x18 +#define G_MWO_MATRIX_WZ_WW_I 0x1c +#define G_MWO_MATRIX_XX_XY_F 0x20 +#define G_MWO_MATRIX_XZ_XW_F 0x24 +#define G_MWO_MATRIX_YX_YY_F 0x28 +#define G_MWO_MATRIX_YZ_YW_F 0x2c +#define G_MWO_MATRIX_ZX_ZY_F 0x30 +#define G_MWO_MATRIX_ZZ_ZW_F 0x34 +#define G_MWO_MATRIX_WX_WY_F 0x38 +#define G_MWO_MATRIX_WZ_WW_F 0x3c +#define G_MWO_POINT_RGBA 0x10 +#define G_MWO_POINT_ST 0x14 +#define G_MWO_POINT_XYSCREEN 0x18 +#define G_MWO_POINT_ZSCREEN 0x1c /* * Light structure. * * Note: only directional (infinite) lights are currently supported. * - * Note: the weird order is for the DMEM alignment benefit of + * Note: the weird order is for the DMEM alignment benefit of * the microcode. * */ typedef struct { - unsigned char col[3]; /* diffuse light value (rgba) */ - char pad1; - unsigned char colc[3]; /* copy of diffuse light value (rgba) */ - char pad2; - signed char dir[3]; /* direction of light (normalized) */ - char pad3; + unsigned char col[3]; /* diffuse light value (rgba) */ + char pad1; + unsigned char colc[3]; /* copy of diffuse light value (rgba) */ + char pad2; + signed char dir[3]; /* direction of light (normalized) */ + char pad3; } Light_t; typedef struct { - unsigned char col[3]; /* ambient light value (rgba) */ - char pad1; - unsigned char colc[3]; /* copy of ambient light value (rgba) */ - char pad2; + unsigned char col[3]; /* ambient light value (rgba) */ + char pad1; + unsigned char colc[3]; /* copy of ambient light value (rgba) */ + char pad2; } Ambient_t; typedef struct { - int x1,y1,x2,y2; /* texture offsets for highlight 1/2 */ + int x1, y1, x2, y2; /* texture offsets for highlight 1/2 */ } Hilite_t; typedef union { - Light_t l; - long long int force_structure_alignment[2]; + Light_t l; + long long int force_structure_alignment[2]; } Light; typedef union { - Ambient_t l; - long long int force_structure_alignment[1]; + Ambient_t l; + long long int force_structure_alignment[1]; } Ambient; typedef struct { - Ambient a; - Light l[7]; + Ambient a; + Light l[7]; } Lightsn; typedef struct { - Ambient a; - Light l[1]; + Ambient a; + Light l[1]; } Lights0; typedef struct { - Ambient a; - Light l[1]; + Ambient a; + Light l[1]; } Lights1; typedef struct { - Ambient a; - Light l[2]; + Ambient a; + Light l[2]; } Lights2; typedef struct { - Ambient a; - Light l[3]; + Ambient a; + Light l[3]; } Lights3; typedef struct { - Ambient a; - Light l[4]; + Ambient a; + Light l[4]; } Lights4; typedef struct { - Ambient a; - Light l[5]; + Ambient a; + Light l[5]; } Lights5; typedef struct { - Ambient a; - Light l[6]; + Ambient a; + Light l[6]; } Lights6; typedef struct { - Ambient a; - Light l[7]; + Ambient a; + Light l[7]; } Lights7; typedef struct { - Light l[2]; + Light l[2]; } LookAt; typedef union { - Hilite_t h; - long int force_structure_alignment[4]; + Hilite_t h; + long int force_structure_alignment[4]; } Hilite; -#define gdSPDefLights0(ar,ag,ab) \ - { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ - {{{ { 0, 0, 0},0,{ 0, 0, 0},0,{ 0, 0, 0},0}}} } -#define gdSPDefLights1(ar,ag,ab,r1,g1,b1,x1,y1,z1) \ - { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ - {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}} } -#define gdSPDefLights2(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2) \ - { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ - {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ - {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}} } -#define gdSPDefLights3(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3) \ - { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ - {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ - {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, \ - {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}} } -#define gdSPDefLights4(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4) \ - { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ - {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ - {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, \ - {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, \ - {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}} } -#define gdSPDefLights5(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5) \ - { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ - {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ - {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, \ - {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, \ - {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}, \ - {{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}}} } +#define gdSPDefLights0(ar, ag, ab) \ + { \ + { { { ar, ag, ab }, 0, { ar, ag, ab }, 0 } }, { \ + {{ { 0, 0, 0},0,{ 0, 0, 0},0,{ 0, 0, 0},0}} \ + } \ + } +#define gdSPDefLights1(ar, ag, ab, r1, g1, b1, x1, y1, z1) \ + { \ + { { { ar, ag, ab }, 0, { ar, ag, ab }, 0 } }, { \ + {{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}} \ + } \ + } +#define gdSPDefLights2(ar, ag, ab, r1, g1, b1, x1, y1, z1, r2, g2, b2, x2, y2, z2) \ + { \ + { { { ar, ag, ab }, 0, { ar, ag, ab }, 0 } }, { \ + { { { r1, g1, b1 }, 0, { r1, g1, b1 }, 0, { x1, y1, z1 }, 0 } }, {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}} \ + } \ + } +#define gdSPDefLights3(ar, ag, ab, r1, g1, b1, x1, y1, z1, r2, g2, b2, x2, y2, z2, r3, g3, b3, x3, y3, z3) \ + { \ + { { { ar, ag, ab }, 0, { ar, ag, ab }, 0 } }, { \ + { { { r1, g1, b1 }, 0, { r1, g1, b1 }, 0, { x1, y1, z1 }, 0 } }, \ + { { { r2, g2, b2 }, 0, { r2, g2, b2 }, 0, { x2, y2, z2 }, 0 } }, {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}} \ + } \ + } +#define gdSPDefLights4(ar, ag, ab, r1, g1, b1, x1, y1, z1, r2, g2, b2, x2, y2, z2, r3, g3, b3, x3, y3, z3, r4, g4, b4, \ + x4, y4, z4) \ + { \ + { { { ar, ag, ab }, 0, { ar, ag, ab }, 0 } }, { \ + { { { r1, g1, b1 }, 0, { r1, g1, b1 }, 0, { x1, y1, z1 }, 0 } }, \ + { { { r2, g2, b2 }, 0, { r2, g2, b2 }, 0, { x2, y2, z2 }, 0 } }, \ + { { { r3, g3, b3 }, 0, { r3, g3, b3 }, 0, { x3, y3, z3 }, 0 } }, {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}} \ + } \ + } +#define gdSPDefLights5(ar, ag, ab, r1, g1, b1, x1, y1, z1, r2, g2, b2, x2, y2, z2, r3, g3, b3, x3, y3, z3, r4, g4, b4, \ + x4, y4, z4, r5, g5, b5, x5, y5, z5) \ + { \ + { { { ar, ag, ab }, 0, { ar, ag, ab }, 0 } }, { \ + { { { r1, g1, b1 }, 0, { r1, g1, b1 }, 0, { x1, y1, z1 }, 0 } }, \ + { { { r2, g2, b2 }, 0, { r2, g2, b2 }, 0, { x2, y2, z2 }, 0 } }, \ + { { { r3, g3, b3 }, 0, { r3, g3, b3 }, 0, { x3, y3, z3 }, 0 } }, \ + { { { r4, g4, b4 }, 0, { r4, g4, b4 }, 0, { x4, y4, z4 }, 0 } }, {{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}} \ + } \ + } +#define gdSPDefLights6(ar, ag, ab, r1, g1, b1, x1, y1, z1, r2, g2, b2, x2, y2, z2, r3, g3, b3, x3, y3, z3, r4, g4, b4, \ + x4, y4, z4, r5, g5, b5, x5, y5, z5, r6, g6, b6, x6, y6, z6) \ + { \ + { { { ar, ag, ab }, 0, { ar, ag, ab }, 0 } }, { \ + { { { r1, g1, b1 }, 0, { r1, g1, b1 }, 0, { x1, y1, z1 }, 0 } }, \ + { { { r2, g2, b2 }, 0, { r2, g2, b2 }, 0, { x2, y2, z2 }, 0 } }, \ + { { { r3, g3, b3 }, 0, { r3, g3, b3 }, 0, { x3, y3, z3 }, 0 } }, \ + { { { r4, g4, b4 }, 0, { r4, g4, b4 }, 0, { x4, y4, z4 }, 0 } }, \ + { { { r5, g5, b5 }, 0, { r5, g5, b5 }, 0, { x5, y5, z5 }, 0 } }, {{ {r6,g6,b6},0,{r6,g6,b6},0,{x6,y6,z6},0}} \ + } \ + } -#define gdSPDefLights6(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5,r6,g6,b6,x6,y6,z6) \ - { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ - {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ - {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, \ - {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, \ - {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}, \ - {{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}}, \ - {{ {r6,g6,b6},0,{r6,g6,b6},0,{x6,y6,z6},0}}} } +#define gdSPDefLights7(ar, ag, ab, r1, g1, b1, x1, y1, z1, r2, g2, b2, x2, y2, z2, r3, g3, b3, x3, y3, z3, r4, g4, b4, \ + x4, y4, z4, r5, g5, b5, x5, y5, z5, r6, g6, b6, x6, y6, z6, r7, g7, b7, x7, y7, z7) \ + { \ + { { { ar, ag, ab }, 0, { ar, ag, ab }, 0 } }, { \ + { { { r1, g1, b1 }, 0, { r1, g1, b1 }, 0, { x1, y1, z1 }, 0 } }, \ + { { { r2, g2, b2 }, 0, { r2, g2, b2 }, 0, { x2, y2, z2 }, 0 } }, \ + { { { r3, g3, b3 }, 0, { r3, g3, b3 }, 0, { x3, y3, z3 }, 0 } }, \ + { { { r4, g4, b4 }, 0, { r4, g4, b4 }, 0, { x4, y4, z4 }, 0 } }, \ + { { { r5, g5, b5 }, 0, { r5, g5, b5 }, 0, { x5, y5, z5 }, 0 } }, \ + { { { r6, g6, b6 }, 0, { r6, g6, b6 }, 0, { x6, y6, z6 }, 0 } }, {{ {r7,g7,b7},0,{r7,g7,b7},0,{x7,y7,z7},0}} \ + } \ + } - -#define gdSPDefLights7(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5,r6,g6,b6,x6,y6,z6,r7,g7,b7,x7,y7,z7) \ - { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ - {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ - {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, \ - {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, \ - {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}, \ - {{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}}, \ - {{ {r6,g6,b6},0,{r6,g6,b6},0,{x6,y6,z6},0}}, \ - {{ {r7,g7,b7},0,{r7,g7,b7},0,{x7,y7,z7},0}}} } - - -#define gdSPDefLookAt(rightx,righty,rightz,upx,upy,upz) \ - { {{ {{0,0,0},0,{0,0,0},0,{rightx,righty,rightz},0}}, \ - { {{0,0x80,0},0,{0,0x80,0},0,{upx,upy,upz},0}}} } +#define gdSPDefLookAt(rightx, righty, rightz, upx, upy, upz) \ + { \ + { \ + { { { 0, 0, 0 }, 0, { 0, 0, 0 }, 0, { rightx, righty, rightz }, 0 } }, { {{0,0x80,0},0,{0,0x80,0},0,{upx,upy,upz},0}} \ + } \ + } /* * Graphics DMA Packet */ typedef struct { - int cmd:8; - unsigned int par:8; - unsigned int len:16; - unsigned int addr; + int cmd : 8; + unsigned int par : 8; + unsigned int len : 16; + unsigned int addr; } Gdma; /* * Graphics Immediate Mode Packet types */ typedef struct { - int cmd:8; - int pad:24; - Tri tri; + int cmd : 8; + int pad : 24; + Tri tri; } Gtri; typedef struct { - int cmd:8; - int pad1:24; - int pad2:24; - unsigned char param:8; + int cmd : 8; + int pad1 : 24; + int pad2 : 24; + unsigned char param : 8; } Gpopmtx; /* @@ -1514,120 +1472,119 @@ typedef struct { * } Gsegment; */ typedef struct { - int cmd:8; - int pad0:8; - int mw_index:8; - int number:8; - int pad1:8; - int base:24; + int cmd : 8; + int pad0 : 8; + int mw_index : 8; + int number : 8; + int pad1 : 8; + int base : 24; } Gsegment; typedef struct { - int cmd:8; - int pad0:8; - int sft:8; - int len:8; - unsigned int data:32; + int cmd : 8; + int pad0 : 8; + int sft : 8; + int len : 8; + unsigned int data : 32; } GsetothermodeL; typedef struct { - int cmd:8; - int pad0:8; - int sft:8; - int len:8; - unsigned int data:32; + int cmd : 8; + int pad0 : 8; + int sft : 8; + int len : 8; + unsigned int data : 32; } GsetothermodeH; typedef struct { - unsigned char cmd; - unsigned char lodscale; - unsigned char tile; - unsigned char on; - unsigned short s; - unsigned short t; + unsigned char cmd; + unsigned char lodscale; + unsigned char tile; + unsigned char on; + unsigned short s; + unsigned short t; } Gtexture; typedef struct { - int cmd:8; - int pad:24; - Tri line; + int cmd : 8; + int pad : 24; + Tri line; } Gline3D; typedef struct { - int cmd:8; - int pad1:24; - short int pad2; - short int scale; + int cmd : 8; + int pad1 : 24; + short int pad2; + short int scale; } Gperspnorm; - /* * RDP Packet types */ typedef struct { - int cmd:8; - unsigned int fmt:3; - unsigned int siz:2; - unsigned int pad:7; - unsigned int wd:12; /* really only 10 bits, extra */ - unsigned int dram; /* to account for 1024 */ + int cmd : 8; + unsigned int fmt : 3; + unsigned int siz : 2; + unsigned int pad : 7; + unsigned int wd : 12; /* really only 10 bits, extra */ + unsigned int dram; /* to account for 1024 */ } Gsetimg; typedef struct { - int cmd:8; - unsigned int muxs0:24; - unsigned int muxs1:32; + int cmd : 8; + unsigned int muxs0 : 24; + unsigned int muxs1 : 32; } Gsetcombine; typedef struct { - int cmd:8; - unsigned char pad; - unsigned char prim_min_level; - unsigned char prim_level; - unsigned long color; + int cmd : 8; + unsigned char pad; + unsigned char prim_min_level; + unsigned char prim_level; + unsigned long color; } Gsetcolor; typedef struct { - int cmd:8; - int x0:10; - int x0frac:2; - int y0:10; - int y0frac:2; - unsigned int pad:8; - int x1:10; - int x1frac:2; - int y1:10; - int y1frac:2; + int cmd : 8; + int x0 : 10; + int x0frac : 2; + int y0 : 10; + int y0frac : 2; + unsigned int pad : 8; + int x1 : 10; + int x1frac : 2; + int y1 : 10; + int y1frac : 2; } Gfillrect; typedef struct { - int cmd:8; - unsigned int fmt:3; - unsigned int siz:2; - unsigned int pad0:1; - unsigned int line:9; - unsigned int tmem:9; - unsigned int pad1:5; - unsigned int tile:3; - unsigned int palette:4; - unsigned int ct:1; - unsigned int mt:1; - unsigned int maskt:4; - unsigned int shiftt:4; - unsigned int cs:1; - unsigned int ms:1; - unsigned int masks:4; - unsigned int shifts:4; + int cmd : 8; + unsigned int fmt : 3; + unsigned int siz : 2; + unsigned int pad0 : 1; + unsigned int line : 9; + unsigned int tmem : 9; + unsigned int pad1 : 5; + unsigned int tile : 3; + unsigned int palette : 4; + unsigned int ct : 1; + unsigned int mt : 1; + unsigned int maskt : 4; + unsigned int shiftt : 4; + unsigned int cs : 1; + unsigned int ms : 1; + unsigned int masks : 4; + unsigned int shifts : 4; } Gsettile; typedef struct { - int cmd:8; - unsigned int sl:12; - unsigned int tl:12; - int pad:5; - unsigned int tile:3; - unsigned int sh:12; - unsigned int th:12; + int cmd : 8; + unsigned int sl : 12; + unsigned int tl : 12; + int pad : 5; + unsigned int tile : 3; + unsigned int sh : 12; + unsigned int th : 12; } Gloadtile; typedef Gloadtile Gloadblock; @@ -1637,25 +1594,25 @@ typedef Gloadtile Gsettilesize; typedef Gloadtile Gloadtlut; typedef struct { - unsigned int cmd:8; /* command */ - unsigned int xl:12; /* X coordinate of upper left */ - unsigned int yl:12; /* Y coordinate of upper left */ - unsigned int pad1:5; /* Padding */ - unsigned int tile:3; /* Tile descriptor index */ - unsigned int xh:12; /* X coordinate of lower right */ - unsigned int yh:12; /* Y coordinate of lower right */ - unsigned int s:16; /* S texture coord at top left */ - unsigned int t:16; /* T texture coord at top left */ - unsigned int dsdx:16;/* Change in S per change in X */ - unsigned int dtdy:16;/* Change in T per change in Y */ + unsigned int cmd : 8; /* command */ + unsigned int xl : 12; /* X coordinate of upper left */ + unsigned int yl : 12; /* Y coordinate of upper left */ + unsigned int pad1 : 5; /* Padding */ + unsigned int tile : 3; /* Tile descriptor index */ + unsigned int xh : 12; /* X coordinate of lower right */ + unsigned int yh : 12; /* Y coordinate of lower right */ + unsigned int s : 16; /* S texture coord at top left */ + unsigned int t : 16; /* T texture coord at top left */ + unsigned int dsdx : 16; /* Change in S per change in X */ + unsigned int dtdy : 16; /* Change in T per change in Y */ } Gtexrect; -#define MakeTexRect(xh,yh,flip,tile,xl,yl,s,t,dsdx,dtdy) \ - G_TEXRECT, xh, yh, 0, flip, 0, tile, xl, yl, s, t, dsdx, dtdy +#define MakeTexRect(xh, yh, flip, tile, xl, yl, s, t, dsdx, dtdy) \ + G_TEXRECT, xh, yh, 0, flip, 0, tile, xl, yl, s, t, dsdx, dtdy /* * Textured rectangles are 128 bits not 64 bits - */ + */ typedef struct { unsigned long w0; unsigned long w1; @@ -1667,8 +1624,8 @@ typedef struct { * Generic Gfx Packet */ typedef struct { - unsigned int w0; - unsigned int w1; + unsigned int w0; + unsigned int w1; } Gwords; /* @@ -1676,25 +1633,25 @@ typedef struct { * It is, by law, exactly 64 bits in size. */ typedef union { - Gwords words; - Gdma dma; - Gtri tri; - Gline3D line; - Gpopmtx popmtx; - Gsegment segment; - GsetothermodeH setothermodeH; - GsetothermodeL setothermodeL; - Gtexture texture; - Gperspnorm perspnorm; - Gsetimg setimg; - Gsetcombine setcombine; - Gsetcolor setcolor; - Gfillrect fillrect; /* use for setscissor also */ - Gsettile settile; - Gloadtile loadtile; /* use for loadblock also, th is dxt */ - Gsettilesize settilesize; - Gloadtlut loadtlut; - long long int force_structure_alignment; + Gwords words; + Gdma dma; + Gtri tri; + Gline3D line; + Gpopmtx popmtx; + Gsegment segment; + GsetothermodeH setothermodeH; + GsetothermodeL setothermodeL; + Gtexture texture; + Gperspnorm perspnorm; + Gsetimg setimg; + Gsetcombine setcombine; + Gsetcolor setcolor; + Gfillrect fillrect; /* use for setscissor also */ + Gsettile settile; + Gloadtile loadtile; /* use for loadblock also, th is dxt */ + Gsettilesize settilesize; + Gloadtlut loadtlut; + long long int force_structure_alignment; } Gfx; /* @@ -1704,63 +1661,63 @@ typedef union { /* * DMA macros */ -#define gDma0p(pkt, c, s, l) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24); \ - _g->words.w1 = (unsigned int)(s); \ -} +#define gDma0p(pkt, c, s, l) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24); \ + _g->words.w1 = (unsigned int)(s); \ + } -#define gsDma0p(c, s, l) \ -{{ \ - _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24), (unsigned int)(s) \ -}} +#define gsDma0p(c, s, l) \ + { \ + { \ + _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24), (unsigned int)(s) \ + } \ + } -#define gDma1p(pkt, c, s, l, p) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | \ - _SHIFTL((l), 0, 16)); \ - _g->words.w1 = (unsigned int)(s); \ -} +#define gDma1p(pkt, c, s, l, p) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | _SHIFTL((l), 0, 16)); \ + _g->words.w1 = (unsigned int)(s); \ + } -#define gsDma1p(c, s, l, p) \ -{{ \ - (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | \ - _SHIFTL((l), 0, 16)), \ - (unsigned int)(s) \ -}} +#define gsDma1p(c, s, l, p) \ + { \ + { \ + (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | _SHIFTL((l), 0, 16)), (unsigned int)(s) \ + } \ + } -#define gDma2p(pkt, c, adrs, len, idx, ofs) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - _g->words.w0 = (_SHIFTL((c),24,8)|_SHIFTL(((len)-1)/8,19,5)| \ - _SHIFTL((ofs)/8,8,8)|_SHIFTL((idx),0,8)); \ - _g->words.w1 = (unsigned int)(adrs); \ -} -#define gsDma2p(c, adrs, len, idx, ofs) \ -{{ \ - (_SHIFTL((c),24,8)|_SHIFTL(((len)-1)/8,19,5)| \ - _SHIFTL((ofs)/8,8,8)|_SHIFTL((idx),0,8)), \ - (unsigned int)(adrs) \ -}} +#define gDma2p(pkt, c, adrs, len, idx, ofs) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + _g->words.w0 = \ + (_SHIFTL((c), 24, 8) | _SHIFTL(((len) - 1) / 8, 19, 5) | _SHIFTL((ofs) / 8, 8, 8) | _SHIFTL((idx), 0, 8)); \ + _g->words.w1 = (unsigned int)(adrs); \ + } +#define gsDma2p(c, adrs, len, idx, ofs) \ + { \ + { \ + (_SHIFTL((c), 24, 8) | _SHIFTL(((len) - 1) / 8, 19, 5) | _SHIFTL((ofs) / 8, 8, 8) | _SHIFTL((idx), 0, 8)), \ + (unsigned int)(adrs) \ + } \ + } -#define gSPNoOp(pkt) gDma0p(pkt, G_SPNOOP, 0, 0) -#define gsSPNoOp() gsDma0p(G_SPNOOP, 0, 0) +#define gSPNoOp(pkt) gDma0p(pkt, G_SPNOOP, 0, 0) +#define gsSPNoOp() gsDma0p(G_SPNOOP, 0, 0) -#ifdef F3DEX_GBI_2 -# define gSPMatrix(pkt, m, p) \ - gDma2p((pkt),G_MTX,(m),sizeof(Mtx),(p)^G_MTX_PUSH,0) -# define gsSPMatrix(m, p) \ - gsDma2p( G_MTX,(m),sizeof(Mtx),(p)^G_MTX_PUSH,0) -#else /* F3DEX_GBI_2 */ -# define gSPMatrix(pkt, m, p) gDma1p(pkt, G_MTX, m, sizeof(Mtx), p) -# define gsSPMatrix(m, p) gsDma1p(G_MTX, m, sizeof(Mtx), p) -#endif /* F3DEX_GBI_2 */ +#ifdef F3DEX_GBI_2 +#define gSPMatrix(pkt, m, p) gDma2p((pkt), G_MTX, (m), sizeof(Mtx), (p) ^ G_MTX_PUSH, 0) +#define gsSPMatrix(m, p) gsDma2p(G_MTX, (m), sizeof(Mtx), (p) ^ G_MTX_PUSH, 0) +#else /* F3DEX_GBI_2 */ +#define gSPMatrix(pkt, m, p) gDma1p(pkt, G_MTX, m, sizeof(Mtx), p) +#define gsSPMatrix(m, p) gsDma1p(G_MTX, m, sizeof(Mtx), p) +#endif /* F3DEX_GBI_2 */ -#if defined(F3DEX_GBI_2) +#if defined(F3DEX_GBI_2) /* * F3DEX_GBI_2: G_VTX GBI format was changed. * @@ -1770,19 +1727,19 @@ typedef union { * | |seg| address | * +-+---+-----------------------------+ */ -# define gSPVertex(pkt, v, n, v0) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - _g->words.w0 = \ - _SHIFTL(G_VTX,24,8)|_SHIFTL((n),12,8)|_SHIFTL((v0)+(n),1,7); \ - _g->words.w1 = (unsigned int)(v); \ -} -# define gsSPVertex(v, n, v0) \ -{{ \ - (_SHIFTL(G_VTX,24,8)|_SHIFTL((n),12,8)|_SHIFTL((v0)+(n),1,7)), \ - (unsigned int)(v) \ -}} -#elif (defined(F3DEX_GBI)||defined(F3DLP_GBI)) +#define gSPVertex(pkt, v, n, v0) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + _g->words.w0 = _SHIFTL(G_VTX, 24, 8) | _SHIFTL((n), 12, 8) | _SHIFTL((v0) + (n), 1, 7); \ + _g->words.w1 = (unsigned int)(v); \ + } +#define gsSPVertex(v, n, v0) \ + { \ + { \ + (_SHIFTL(G_VTX, 24, 8) | _SHIFTL((n), 12, 8) | _SHIFTL((v0) + (n), 1, 7)), (unsigned int)(v) \ + } \ + } +#elif (defined(F3DEX_GBI) || defined(F3DLP_GBI)) /* * F3DEX_GBI: G_VTX GBI format was changed to support 64 vertice. * @@ -1792,230 +1749,201 @@ typedef union { * | |seg| address | * +-+---+-----------------------------+ */ -# define gSPVertex(pkt, v, n, v0) \ - gDma1p((pkt),G_VTX,(v),((n)<<10)|(sizeof(Vtx)*(n)-1),(v0)*2) -# define gsSPVertex(v, n, v0) \ - gsDma1p(G_VTX,(v),((n)<<10)|(sizeof(Vtx)*(n)-1),(v0)*2) +#define gSPVertex(pkt, v, n, v0) gDma1p((pkt), G_VTX, (v), ((n) << 10) | (sizeof(Vtx) * (n) - 1), (v0) * 2) +#define gsSPVertex(v, n, v0) gsDma1p(G_VTX, (v), ((n) << 10) | (sizeof(Vtx) * (n) - 1), (v0) * 2) #else -# define gSPVertex(pkt, v, n, v0) \ - gDma1p(pkt, G_VTX, v, sizeof(Vtx)*(n),((n)-1)<<4|(v0)) -# define gsSPVertex(v, n, v0) \ - gsDma1p(G_VTX, v, sizeof(Vtx)*(n), ((n)-1)<<4|(v0)) +#define gSPVertex(pkt, v, n, v0) gDma1p(pkt, G_VTX, v, sizeof(Vtx) * (n), ((n) - 1) << 4 | (v0)) +#define gsSPVertex(v, n, v0) gsDma1p(G_VTX, v, sizeof(Vtx) * (n), ((n) - 1) << 4 | (v0)) #endif - -#ifdef F3DEX_GBI_2 -# define gSPViewport(pkt, v) \ - gDma2p((pkt), G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT, 0) -# define gsSPViewport(v) \ - gsDma2p( G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT, 0) -#else /* F3DEX_GBI_2 */ -# define gSPViewport(pkt,v) \ - gDma1p((pkt), G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT) -# define gsSPViewport(v) \ - gsDma1p( G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT) -#endif /* F3DEX_GBI_2 */ +#ifdef F3DEX_GBI_2 +#define gSPViewport(pkt, v) gDma2p((pkt), G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT, 0) +#define gsSPViewport(v) gsDma2p(G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT, 0) +#else /* F3DEX_GBI_2 */ +#define gSPViewport(pkt, v) gDma1p((pkt), G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT) +#define gsSPViewport(v) gsDma1p(G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT) +#endif /* F3DEX_GBI_2 */ -#define gSPDisplayList(pkt,dl) gDma1p(pkt,G_DL,dl,0,G_DL_PUSH) -#define gsSPDisplayList( dl) gsDma1p( G_DL,dl,0,G_DL_PUSH) +#define gSPDisplayList(pkt, dl) gDma1p(pkt, G_DL, dl, 0, G_DL_PUSH) +#define gsSPDisplayList(dl) gsDma1p(G_DL, dl, 0, G_DL_PUSH) -#define gSPBranchList(pkt,dl) gDma1p(pkt,G_DL,dl,0,G_DL_NOPUSH) -#define gsSPBranchList( dl) gsDma1p( G_DL,dl,0,G_DL_NOPUSH) +#define gSPBranchList(pkt, dl) gDma1p(pkt, G_DL, dl, 0, G_DL_NOPUSH) +#define gsSPBranchList(dl) gsDma1p(G_DL, dl, 0, G_DL_NOPUSH) -#define gSPSprite2DBase(pkt, s) gDma1p(pkt, G_SPRITE2D_BASE, s, sizeof(uSprite), 0) -#define gsSPSprite2DBase(s) gsDma1p(G_SPRITE2D_BASE, s, sizeof(uSprite), 0) +#define gSPSprite2DBase(pkt, s) gDma1p(pkt, G_SPRITE2D_BASE, s, sizeof(uSprite), 0) +#define gsSPSprite2DBase(s) gsDma1p(G_SPRITE2D_BASE, s, sizeof(uSprite), 0) /* * RSP short command (no DMA required) macros */ -#define gImmp0(pkt, c) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL((c), 24, 8); \ -} +#define gImmp0(pkt, c) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL((c), 24, 8); \ + } -#define gsImmp0(c) \ -{{ \ - _SHIFTL((c), 24, 8) \ -}} +#define gsImmp0(c) \ + { \ + { \ + _SHIFTL((c), 24, 8) \ + } \ + } -#define gImmp1(pkt, c, p0) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL((c), 24, 8); \ - _g->words.w1 = (unsigned int)(p0); \ -} +#define gImmp1(pkt, c, p0) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL((c), 24, 8); \ + _g->words.w1 = (unsigned int)(p0); \ + } -#define gsImmp1(c, p0) \ -{{ \ - _SHIFTL((c), 24, 8), (unsigned int)(p0) \ -}} +#define gsImmp1(c, p0) \ + { \ + { \ + _SHIFTL((c), 24, 8), (unsigned int)(p0) \ + } \ + } -#define gImmp2(pkt, c, p0, p1) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL((c), 24, 8); \ - _g->words.w1 = _SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8); \ -} +#define gImmp2(pkt, c, p0, p1) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL((c), 24, 8); \ + _g->words.w1 = _SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8); \ + } -#define gsImmp2(c, p0, p1) \ -{{ \ - _SHIFTL((c), 24, 8), _SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8)\ -}} +#define gsImmp2(c, p0, p1) \ + { \ + { \ + _SHIFTL((c), 24, 8), _SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8) \ + } \ + } -#define gImmp3(pkt, c, p0, p1, p2) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL((c), 24, 8); \ - _g->words.w1 = (_SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8) | \ - _SHIFTL((p2), 0, 8)); \ -} +#define gImmp3(pkt, c, p0, p1, p2) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL((c), 24, 8); \ + _g->words.w1 = (_SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8) | _SHIFTL((p2), 0, 8)); \ + } -#define gsImmp3(c, p0, p1, p2) \ -{{ \ - _SHIFTL((c), 24, 8), (_SHIFTL((p0), 16, 16) | \ - _SHIFTL((p1), 8, 8) | _SHIFTL((p2), 0, 8))\ -}} +#define gsImmp3(c, p0, p1, p2) \ + { \ + { \ + _SHIFTL((c), 24, 8), (_SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8) | _SHIFTL((p2), 0, 8)) \ + } \ + } -#define gImmp21(pkt, c, p0, p1, dat) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | \ - _SHIFTL((p1), 0, 8)); \ - _g->words.w1 = (unsigned int) (dat); \ -} +#define gImmp21(pkt, c, p0, p1, dat) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | _SHIFTL((p1), 0, 8)); \ + _g->words.w1 = (unsigned int)(dat); \ + } -#define gsImmp21(c, p0, p1, dat) \ -{{ \ - _SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | _SHIFTL((p1), 0, 8),\ - (unsigned int) (dat) \ -}} +#define gsImmp21(c, p0, p1, dat) \ + { \ + { \ + _SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | _SHIFTL((p1), 0, 8), (unsigned int)(dat) \ + } \ + } -#ifdef F3DEX_GBI_2 -#define gMoveWd(pkt, index, offset, data) \ - gDma1p((pkt), G_MOVEWORD, data, offset, index) -#define gsMoveWd( index, offset, data) \ - gsDma1p( G_MOVEWORD, data, offset, index) -#else /* F3DEX_GBI_2 */ -#define gMoveWd(pkt, index, offset, data) \ - gImmp21((pkt), G_MOVEWORD, offset, index, data) -#define gsMoveWd( index, offset, data) \ - gsImmp21( G_MOVEWORD, offset, index, data) -#endif /* F3DEX_GBI_2 */ +#ifdef F3DEX_GBI_2 +#define gMoveWd(pkt, index, offset, data) gDma1p((pkt), G_MOVEWORD, data, offset, index) +#define gsMoveWd(index, offset, data) gsDma1p(G_MOVEWORD, data, offset, index) +#else /* F3DEX_GBI_2 */ +#define gMoveWd(pkt, index, offset, data) gImmp21((pkt), G_MOVEWORD, offset, index, data) +#define gsMoveWd(index, offset, data) gsImmp21(G_MOVEWORD, offset, index, data) +#endif /* F3DEX_GBI_2 */ /* Sprite immediate macros, there is also a sprite dma macro above */ -#define gSPSprite2DScaleFlip(pkt, sx, sy, fx, fy) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_SPRITE2D_SCALEFLIP, 24, 8) | \ - _SHIFTL((fx), 8, 8) | \ - _SHIFTL((fy), 0, 8)); \ - _g->words.w1 = (_SHIFTL((sx), 16, 16) | \ - _SHIFTL((sy), 0, 16)); \ -} +#define gSPSprite2DScaleFlip(pkt, sx, sy, fx, fy) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_SPRITE2D_SCALEFLIP, 24, 8) | _SHIFTL((fx), 8, 8) | _SHIFTL((fy), 0, 8)); \ + _g->words.w1 = (_SHIFTL((sx), 16, 16) | _SHIFTL((sy), 0, 16)); \ + } -#define gsSPSprite2DScaleFlip(sx, sy, fx, fy) \ -{{ \ - (_SHIFTL(G_SPRITE2D_SCALEFLIP, 24, 8) | \ - _SHIFTL((fx), 8, 8) | \ - _SHIFTL((fy), 0, 8)), \ - (_SHIFTL((sx), 16, 16) | \ - _SHIFTL((sy), 0, 16)) \ -}} +#define gsSPSprite2DScaleFlip(sx, sy, fx, fy) \ + { \ + { \ + (_SHIFTL(G_SPRITE2D_SCALEFLIP, 24, 8) | _SHIFTL((fx), 8, 8) | _SHIFTL((fy), 0, 8)), \ + (_SHIFTL((sx), 16, 16) | _SHIFTL((sy), 0, 16)) \ + } \ + } -#define gSPSprite2DDraw(pkt, px, py) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_SPRITE2D_DRAW, 24, 8)); \ - _g->words.w1 = (_SHIFTL((px), 16, 16) | \ - _SHIFTL((py), 0, 16)); \ -} - -#define gsSPSprite2DDraw(px, py) \ -{{ \ - (_SHIFTL(G_SPRITE2D_DRAW, 24, 8)), \ - (_SHIFTL((px), 16, 16) | \ - _SHIFTL((py), 0, 16)) \ -}} +#define gSPSprite2DDraw(pkt, px, py) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_SPRITE2D_DRAW, 24, 8)); \ + _g->words.w1 = (_SHIFTL((px), 16, 16) | _SHIFTL((py), 0, 16)); \ + } +#define gsSPSprite2DDraw(px, py) \ + { \ + { \ + (_SHIFTL(G_SPRITE2D_DRAW, 24, 8)), (_SHIFTL((px), 16, 16) | _SHIFTL((py), 0, 16)) \ + } \ + } /* * Note: the SP1Triangle() and line macros multiply the vertex indices * by 10, this is an optimization for the microcode. */ -#if (defined(F3DLP_GBI)||defined(F3DEX_GBI)) -# define __gsSP1Triangle_w1(v0, v1, v2) \ - (_SHIFTL((v0)*2,16,8)|_SHIFTL((v1)*2,8,8)|_SHIFTL((v2)*2,0,8)) -# define __gsSP1Triangle_w1f(v0, v1, v2, flag) \ - (((flag) == 0) ? __gsSP1Triangle_w1(v0, v1, v2): \ - ((flag) == 1) ? __gsSP1Triangle_w1(v1, v2, v0): \ - __gsSP1Triangle_w1(v2, v0, v1)) -# define __gsSPLine3D_w1(v0, v1, wd) \ - (_SHIFTL((v0)*2,16,8)|_SHIFT((v1)*2,8,8)|_SHIFT((wd),0,8)) -# define __gsSPLine3D_w1f(v0, v1, wd, flag) \ - (((flag) == 0) ? __gsSPLine3D_w1(v0, v1, wd): \ - __gsSPLine3D_w1(v1, v0, wd)) -# define __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag) \ - (((flag) == 0) ? __gsSP1Triangle_w1(v0, v1, v2): \ - ((flag) == 1) ? __gsSP1Triangle_w1(v1, v2, v3): \ - ((flag) == 2) ? __gsSP1Triangle_w1(v2, v3, v0): \ - __gsSP1Triangle_w1(v3, v0, v1)) -# define __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag) \ - (((flag) == 0) ? __gsSP1Triangle_w1(v0, v2, v3): \ - ((flag) == 1) ? __gsSP1Triangle_w1(v1, v3, v0): \ - ((flag) == 2) ? __gsSP1Triangle_w1(v2, v0, v1): \ - __gsSP1Triangle_w1(v3, v1, v2)) +#if (defined(F3DLP_GBI) || defined(F3DEX_GBI)) +#define __gsSP1Triangle_w1(v0, v1, v2) (_SHIFTL((v0) * 2, 16, 8) | _SHIFTL((v1) * 2, 8, 8) | _SHIFTL((v2) * 2, 0, 8)) +#define __gsSP1Triangle_w1f(v0, v1, v2, flag) \ + (((flag) == 0) ? __gsSP1Triangle_w1(v0, v1, v2) \ + : ((flag) == 1) ? __gsSP1Triangle_w1(v1, v2, v0) \ + : __gsSP1Triangle_w1(v2, v0, v1)) +#define __gsSPLine3D_w1(v0, v1, wd) (_SHIFTL((v0) * 2, 16, 8) | _SHIFT((v1) * 2, 8, 8) | _SHIFT((wd), 0, 8)) +#define __gsSPLine3D_w1f(v0, v1, wd, flag) (((flag) == 0) ? __gsSPLine3D_w1(v0, v1, wd) : __gsSPLine3D_w1(v1, v0, wd)) +#define __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag) \ + (((flag) == 0) ? __gsSP1Triangle_w1(v0, v1, v2) \ + : ((flag) == 1) ? __gsSP1Triangle_w1(v1, v2, v3) \ + : ((flag) == 2) ? __gsSP1Triangle_w1(v2, v3, v0) \ + : __gsSP1Triangle_w1(v3, v0, v1)) +#define __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag) \ + (((flag) == 0) ? __gsSP1Triangle_w1(v0, v2, v3) \ + : ((flag) == 1) ? __gsSP1Triangle_w1(v1, v3, v0) \ + : ((flag) == 2) ? __gsSP1Triangle_w1(v2, v0, v1) \ + : __gsSP1Triangle_w1(v3, v1, v2)) #else -# define __gsSP1Triangle_w1f(v0, v1, v2, flag) \ - (_SHIFTL((flag), 24,8)|_SHIFTL((v0)*10,16,8)| \ - _SHIFTL((v1)*10, 8,8)|_SHIFTL((v2)*10, 0,8)) -# define __gsSPLine3D_w1f(v0, v1, wd, flag) \ - (_SHIFTL((flag), 24,8)|_SHIFTL((v0)*10,16,8)| \ - _SHIFTL((v1)*10, 8,8)|_SHIFTL((wd), 0,8)) +#define __gsSP1Triangle_w1f(v0, v1, v2, flag) \ + (_SHIFTL((flag), 24, 8) | _SHIFTL((v0) * 10, 16, 8) | _SHIFTL((v1) * 10, 8, 8) | _SHIFTL((v2) * 10, 0, 8)) +#define __gsSPLine3D_w1f(v0, v1, wd, flag) \ + (_SHIFTL((flag), 24, 8) | _SHIFTL((v0) * 10, 16, 8) | _SHIFTL((v1) * 10, 8, 8) | _SHIFTL((wd), 0, 8)) #endif -#ifdef F3DEX_GBI_2 +#ifdef F3DEX_GBI_2 /*** *** 1 Triangle ***/ -#define gSP1Triangle(pkt, v0, v1, v2, flag) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_TRI1, 24, 8)| \ - __gsSP1Triangle_w1f(v0, v1, v2, flag); \ - _g->words.w1 = 0; \ -} -#define gsSP1Triangle(v0, v1, v2, flag) \ -{{ \ - _SHIFTL(G_TRI1, 24, 8)|__gsSP1Triangle_w1f(v0, v1, v2, flag), \ - 0 \ -}} +#define gSP1Triangle(pkt, v0, v1, v2, flag) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_TRI1, 24, 8) | __gsSP1Triangle_w1f(v0, v1, v2, flag); \ + _g->words.w1 = 0; \ + } +#define gsSP1Triangle(v0, v1, v2, flag) { { _SHIFTL(G_TRI1, 24, 8) | __gsSP1Triangle_w1f(v0, v1, v2, flag), 0 } } /*** *** Line ***/ -#define gSPLine3D(pkt, v0, v1, flag) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8)| \ - __gsSPLine3D_w1f(v0, v1, 0, flag); \ - _g->words.w1 = 0; \ -} -#define gsSPLine3D(v0, v1, flag) \ -{{ \ - _SHIFTL(G_LINE3D, 24, 8)|__gsSPLine3D_w1f(v0, v1, 0, flag), \ - 0 \ -}} +#define gSPLine3D(pkt, v0, v1, flag) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8) | __gsSPLine3D_w1f(v0, v1, 0, flag); \ + _g->words.w1 = 0; \ + } +#define gsSPLine3D(v0, v1, flag) { { _SHIFTL(G_LINE3D, 24, 8) | __gsSPLine3D_w1f(v0, v1, 0, flag), 0 } } /*** *** LineW @@ -2026,71 +1954,68 @@ typedef union { * half-pixel units, so a width of 1 translates to (.5 + 1.5) or * a 2.0 pixels wide line. */ -#define gSPLineW3D(pkt, v0, v1, wd, flag) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8)| \ - __gsSPLine3D_w1f(v0, v1, wd, flag); \ - _g->words.w1 = 0; \ -} -#define gsSPLineW3D(v0, v1, wd, flag) \ -{{ \ - _SHIFTL(G_LINE3D, 24, 8)|__gsSPLine3D_w1f(v0, v1, wd, flag), \ - 0 \ -}} +#define gSPLineW3D(pkt, v0, v1, wd, flag) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8) | __gsSPLine3D_w1f(v0, v1, wd, flag); \ + _g->words.w1 = 0; \ + } +#define gsSPLineW3D(v0, v1, wd, flag) { { _SHIFTL(G_LINE3D, 24, 8) | __gsSPLine3D_w1f(v0, v1, wd, flag), 0 } } /*** *** 1 Quadrangle ***/ -#define gSP1Quadrangle(pkt, v0, v1, v2, v3, flag) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_QUAD, 24, 8)| \ - __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)); \ - _g->words.w1 = __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag); \ -} +#define gSP1Quadrangle(pkt, v0, v1, v2, v3, flag) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_QUAD, 24, 8) | __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)); \ + _g->words.w1 = __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag); \ + } -#define gsSP1Quadrangle(v0, v1, v2, v3, flag) \ -{{ \ - (_SHIFTL(G_QUAD, 24, 8)| \ - __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)), \ - __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag) \ -}} -#else /* F3DEX_GBI_2 */ +#define gsSP1Quadrangle(v0, v1, v2, v3, flag) \ + { \ + { \ + (_SHIFTL(G_QUAD, 24, 8) | __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)), \ + __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag) \ + } \ + } +#else /* F3DEX_GBI_2 */ /*** *** 1 Triangle - ***/ -#define gSP1Triangle(pkt, v0, v1, v2, flag) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_TRI1, 24, 8); \ - _g->words.w1 = __gsSP1Triangle_w1f(v0, v1, v2, flag); \ -} -#define gsSP1Triangle(v0, v1, v2, flag) \ -{{ \ - _SHIFTL(G_TRI1, 24, 8), \ - __gsSP1Triangle_w1f(v0, v1, v2, flag) \ -}} + ***/ +#define gSP1Triangle(pkt, v0, v1, v2, flag) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_TRI1, 24, 8); \ + _g->words.w1 = __gsSP1Triangle_w1f(v0, v1, v2, flag); \ + } +#define gsSP1Triangle(v0, v1, v2, flag) \ + { \ + { \ + _SHIFTL(G_TRI1, 24, 8), __gsSP1Triangle_w1f(v0, v1, v2, flag) \ + } \ + } /*** *** Line ***/ -#define gSPLine3D(pkt, v0, v1, flag) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8); \ - _g->words.w1 = __gsSPLine3D_w1f(v0, v1, 0, flag); \ -} -#define gsSPLine3D(v0, v1, flag) \ -{{ \ - _SHIFTL(G_LINE3D, 24, 8), \ - __gsSPLine3D_w1f(v0, v1, 0, flag) \ -}} +#define gSPLine3D(pkt, v0, v1, flag) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8); \ + _g->words.w1 = __gsSPLine3D_w1f(v0, v1, 0, flag); \ + } +#define gsSPLine3D(v0, v1, flag) \ + { \ + { \ + _SHIFTL(G_LINE3D, 24, 8), __gsSPLine3D_w1f(v0, v1, 0, flag) \ + } \ + } /*** *** LineW @@ -2101,148 +2026,141 @@ typedef union { * half-pixel units, so a width of 1 translates to (.5 + 1.5) or * a 2.0 pixels wide line. */ -#define gSPLineW3D(pkt, v0, v1, wd, flag) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8); \ - _g->words.w1 = __gsSPLine3D_w1f(v0, v1, wd, flag); \ -} -#define gsSPLineW3D(v0, v1, wd, flag) \ -{{ \ - _SHIFTL(G_LINE3D, 24, 8), \ - __gsSPLine3D_w1f(v0, v1, wd, flag) \ -}} +#define gSPLineW3D(pkt, v0, v1, wd, flag) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8); \ + _g->words.w1 = __gsSPLine3D_w1f(v0, v1, wd, flag); \ + } +#define gsSPLineW3D(v0, v1, wd, flag) \ + { \ + { \ + _SHIFTL(G_LINE3D, 24, 8), __gsSPLine3D_w1f(v0, v1, wd, flag) \ + } \ + } /*** *** 1 Quadrangle ***/ -#define gSP1Quadrangle(pkt, v0, v1, v2, v3, flag) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_TRI2, 24, 8)| \ - __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)); \ - _g->words.w1 = __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag); \ -} +#define gSP1Quadrangle(pkt, v0, v1, v2, v3, flag) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_TRI2, 24, 8) | __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)); \ + _g->words.w1 = __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag); \ + } -#define gsSP1Quadrangle(v0, v1, v2, v3, flag) \ -{{ \ - (_SHIFTL(G_TRI2, 24, 8)| \ - __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)), \ - __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag) \ -}} -#endif /* F3DEX_GBI_2 */ +#define gsSP1Quadrangle(v0, v1, v2, v3, flag) \ + { \ + { \ + (_SHIFTL(G_TRI2, 24, 8) | __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)), \ + __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag) \ + } \ + } +#endif /* F3DEX_GBI_2 */ -#if (defined(F3DLP_GBI)||defined(F3DEX_GBI)) +#if (defined(F3DLP_GBI) || defined(F3DEX_GBI)) /*** *** 2 Triangles ***/ -#define gSP2Triangles(pkt, v00, v01, v02, flag0, v10, v11, v12, flag1) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_TRI2, 24, 8)| \ - __gsSP1Triangle_w1f(v00, v01, v02, flag0)); \ - _g->words.w1 = __gsSP1Triangle_w1f(v10, v11, v12, flag1); \ -} +#define gSP2Triangles(pkt, v00, v01, v02, flag0, v10, v11, v12, flag1) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_TRI2, 24, 8) | __gsSP1Triangle_w1f(v00, v01, v02, flag0)); \ + _g->words.w1 = __gsSP1Triangle_w1f(v10, v11, v12, flag1); \ + } -#define gsSP2Triangles(v00, v01, v02, flag0, v10, v11, v12, flag1) \ -{{ \ - (_SHIFTL(G_TRI2, 24, 8)| \ - __gsSP1Triangle_w1f(v00, v01, v02, flag0)), \ - __gsSP1Triangle_w1f(v10, v11, v12, flag1) \ -}} +#define gsSP2Triangles(v00, v01, v02, flag0, v10, v11, v12, flag1) \ + { \ + { \ + (_SHIFTL(G_TRI2, 24, 8) | __gsSP1Triangle_w1f(v00, v01, v02, flag0)), \ + __gsSP1Triangle_w1f(v10, v11, v12, flag1) \ + } \ + } -#endif /* F3DEX_GBI/F3DLP_GBI */ +#endif /* F3DEX_GBI/F3DLP_GBI */ -#if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) -#define gSPCullDisplayList(pkt,vstart,vend) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_CULLDL, 24, 8) | \ - _SHIFTL((vstart)*2, 0, 16); \ - _g->words.w1 = _SHIFTL((vend)*2, 0, 16); \ -} +#if (defined(F3DEX_GBI) || defined(F3DLP_GBI)) +#define gSPCullDisplayList(pkt, vstart, vend) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_CULLDL, 24, 8) | _SHIFTL((vstart) * 2, 0, 16); \ + _g->words.w1 = _SHIFTL((vend) * 2, 0, 16); \ + } -#define gsSPCullDisplayList(vstart,vend) \ -{{ \ - _SHIFTL(G_CULLDL, 24, 8) | _SHIFTL((vstart)*2, 0, 16), \ - _SHIFTL((vend)*2, 0, 16) \ -}} +#define gsSPCullDisplayList(vstart, vend) \ + { \ + { \ + _SHIFTL(G_CULLDL, 24, 8) | _SHIFTL((vstart) * 2, 0, 16), _SHIFTL((vend) * 2, 0, 16) \ + } \ + } #else -#define gSPCullDisplayList(pkt,vstart,vend) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_CULLDL, 24, 8) | \ - ((0x0f & (vstart))*40); \ - _g->words.w1 = (unsigned int)((0x0f & ((vend)+1))*40); \ -} +#define gSPCullDisplayList(pkt, vstart, vend) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_CULLDL, 24, 8) | ((0x0f & (vstart)) * 40); \ + _g->words.w1 = (unsigned int)((0x0f & ((vend) + 1)) * 40); \ + } -#define gsSPCullDisplayList(vstart,vend) \ -{{ \ - _SHIFTL(G_CULLDL, 24, 8) | ((0x0f & (vstart))*40), \ - ((0x0f & ((vend)+1))*40) \ -}} +#define gsSPCullDisplayList(vstart, vend) \ + { \ + { \ + _SHIFTL(G_CULLDL, 24, 8) | ((0x0f & (vstart)) * 40), ((0x0f & ((vend) + 1)) * 40) \ + } \ + } #endif -#define gSPSegment(pkt, segment, base) \ - gMoveWd(pkt, G_MW_SEGMENT, (segment)*4, base) -#define gsSPSegment(segment, base) \ - gsMoveWd( G_MW_SEGMENT, (segment)*4, base) +#define gSPSegment(pkt, segment, base) gMoveWd(pkt, G_MW_SEGMENT, (segment) * 4, base) +#define gsSPSegment(segment, base) gsMoveWd(G_MW_SEGMENT, (segment) * 4, base) /* * Clipping Macros */ -#define FR_NEG_FRUSTRATIO_1 0x00000001 -#define FR_POS_FRUSTRATIO_1 0x0000ffff -#define FR_NEG_FRUSTRATIO_2 0x00000002 -#define FR_POS_FRUSTRATIO_2 0x0000fffe -#define FR_NEG_FRUSTRATIO_3 0x00000003 -#define FR_POS_FRUSTRATIO_3 0x0000fffd -#define FR_NEG_FRUSTRATIO_4 0x00000004 -#define FR_POS_FRUSTRATIO_4 0x0000fffc -#define FR_NEG_FRUSTRATIO_5 0x00000005 -#define FR_POS_FRUSTRATIO_5 0x0000fffb -#define FR_NEG_FRUSTRATIO_6 0x00000006 -#define FR_POS_FRUSTRATIO_6 0x0000fffa +#define FR_NEG_FRUSTRATIO_1 0x00000001 +#define FR_POS_FRUSTRATIO_1 0x0000ffff +#define FR_NEG_FRUSTRATIO_2 0x00000002 +#define FR_POS_FRUSTRATIO_2 0x0000fffe +#define FR_NEG_FRUSTRATIO_3 0x00000003 +#define FR_POS_FRUSTRATIO_3 0x0000fffd +#define FR_NEG_FRUSTRATIO_4 0x00000004 +#define FR_POS_FRUSTRATIO_4 0x0000fffc +#define FR_NEG_FRUSTRATIO_5 0x00000005 +#define FR_POS_FRUSTRATIO_5 0x0000fffb +#define FR_NEG_FRUSTRATIO_6 0x00000006 +#define FR_POS_FRUSTRATIO_6 0x0000fffa /* * r should be one of: FRUSTRATIO_1, FRUSTRATIO_2, FRUSTRATIO_3, ... FRUSTRATIO_6 */ -#define gSPClipRatio(pkt, r) \ -{ \ - gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_##r); \ - gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNY, FR_NEG_##r); \ - gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPX, FR_POS_##r); \ - gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPY, FR_POS_##r); \ -} +#define gSPClipRatio(pkt, r) \ + { \ + gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_##r); \ + gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNY, FR_NEG_##r); \ + gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPX, FR_POS_##r); \ + gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPY, FR_POS_##r); \ + } -#define gsSPClipRatio(r) \ - gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_##r), \ - gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNY, FR_NEG_##r), \ - gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPX, FR_POS_##r), \ - gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPY, FR_POS_##r) +#define gsSPClipRatio(r) \ + gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_##r), gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNY, FR_NEG_##r), \ + gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPX, FR_POS_##r), gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPY, FR_POS_##r) /* * Insert values into Matrix * * where = element of matrix (byte offset) - * num = new element (32 bit value replacing 2 int or 2 frac matrix + * num = new element (32 bit value replacing 2 int or 2 frac matrix * componants */ -#ifdef F3DEX_GBI_2 -#define gSPInsertMatrix(pkt, where, num) \ - ERROR!! gSPInsertMatrix is no longer supported. -#define gsSPInsertMatrix(where, num) \ - ERROR!! gsSPInsertMatrix is no longer supported. +#ifdef F3DEX_GBI_2 +#define gSPInsertMatrix(pkt, where, num) ERROR !!gSPInsertMatrix is no longer supported. +#define gsSPInsertMatrix(where, num) ERROR !!gsSPInsertMatrix is no longer supported. #else -#define gSPInsertMatrix(pkt, where, num) \ - gMoveWd(pkt, G_MW_MATRIX, where, num) -#define gsSPInsertMatrix(where, num) \ - gsMoveWd(G_MW_MATRIX, where, num) +#define gSPInsertMatrix(pkt, where, num) gMoveWd(pkt, G_MW_MATRIX, where, num) +#define gsSPInsertMatrix(where, num) gsMoveWd(G_MW_MATRIX, where, num) #endif /* @@ -2250,29 +2168,28 @@ typedef union { * * mptr = pointer to matrix */ -#ifdef F3DEX_GBI_2 -#define gSPForceMatrix(pkt, mptr) \ -{ gDma2p((pkt),G_MOVEMEM,(mptr),sizeof(Mtx),G_MV_MATRIX,0); \ - gMoveWd((pkt), G_MW_FORCEMTX,0,0x00010000); \ -} -#define gsSPForceMatrix(mptr) \ - gsDma2p(G_MOVEMEM,(mptr),sizeof(Mtx),G_MV_MATRIX,0), \ - gsMoveWd(G_MW_FORCEMTX,0,0x00010000) - -#else /* F3DEX_GBI_2 */ -#define gSPForceMatrix(pkt, mptr) \ -{ \ - gDma1p(pkt, G_MOVEMEM, mptr, 16, G_MV_MATRIX_1); \ - gDma1p(pkt, G_MOVEMEM, (char *)(mptr)+16, 16, G_MV_MATRIX_2); \ - gDma1p(pkt, G_MOVEMEM, (char *)(mptr)+32, 16, G_MV_MATRIX_3); \ - gDma1p(pkt, G_MOVEMEM, (char *)(mptr)+48, 16, G_MV_MATRIX_4); \ -} -#define gsSPForceMatrix(mptr) \ - gsDma1p( G_MOVEMEM, mptr, 16, G_MV_MATRIX_1), \ - gsDma1p( G_MOVEMEM, (char *)(mptr)+16, 16, G_MV_MATRIX_2), \ - gsDma1p( G_MOVEMEM, (char *)(mptr)+32, 16, G_MV_MATRIX_3), \ - gsDma1p( G_MOVEMEM, (char *)(mptr)+48, 16, G_MV_MATRIX_4) -#endif /* F3DEX_GBI_2 */ +#ifdef F3DEX_GBI_2 +#define gSPForceMatrix(pkt, mptr) \ + { \ + gDma2p((pkt), G_MOVEMEM, (mptr), sizeof(Mtx), G_MV_MATRIX, 0); \ + gMoveWd((pkt), G_MW_FORCEMTX, 0, 0x00010000); \ + } +#define gsSPForceMatrix(mptr) \ + gsDma2p(G_MOVEMEM, (mptr), sizeof(Mtx), G_MV_MATRIX, 0), gsMoveWd(G_MW_FORCEMTX, 0, 0x00010000) + +#else /* F3DEX_GBI_2 */ +#define gSPForceMatrix(pkt, mptr) \ + { \ + gDma1p(pkt, G_MOVEMEM, mptr, 16, G_MV_MATRIX_1); \ + gDma1p(pkt, G_MOVEMEM, (char*)(mptr) + 16, 16, G_MV_MATRIX_2); \ + gDma1p(pkt, G_MOVEMEM, (char*)(mptr) + 32, 16, G_MV_MATRIX_3); \ + gDma1p(pkt, G_MOVEMEM, (char*)(mptr) + 48, 16, G_MV_MATRIX_4); \ + } +#define gsSPForceMatrix(mptr) \ + gsDma1p(G_MOVEMEM, mptr, 16, G_MV_MATRIX_1), gsDma1p(G_MOVEMEM, (char*)(mptr) + 16, 16, G_MV_MATRIX_2), \ + gsDma1p(G_MOVEMEM, (char*)(mptr) + 32, 16, G_MV_MATRIX_3), \ + gsDma1p(G_MOVEMEM, (char*)(mptr) + 48, 16, G_MV_MATRIX_4) +#endif /* F3DEX_GBI_2 */ /* * Insert values into Points @@ -2281,32 +2198,29 @@ typedef union { * where = which element of point to modify (byte offset into point) * num = new value (32 bit) */ -#if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) -# define gSPModifyVertex(pkt, vtx, where, val) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - _g->words.w0 = (_SHIFTL(G_MODIFYVTX,24,8)| \ - _SHIFTL((where),16,8)|_SHIFTL((vtx)*2,0,16)); \ - _g->words.w1 = (unsigned int)(val); \ -} -# define gsSPModifyVertex(vtx, where, val) \ -{{ \ - _SHIFTL(G_MODIFYVTX,24,8)| \ - _SHIFTL((where),16,8)|_SHIFTL((vtx)*2,0,16), \ - (unsigned int)(val) \ -}} +#if (defined(F3DEX_GBI) || defined(F3DLP_GBI)) +#define gSPModifyVertex(pkt, vtx, where, val) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + _g->words.w0 = (_SHIFTL(G_MODIFYVTX, 24, 8) | _SHIFTL((where), 16, 8) | _SHIFTL((vtx) * 2, 0, 16)); \ + _g->words.w1 = (unsigned int)(val); \ + } +#define gsSPModifyVertex(vtx, where, val) \ + { \ + { \ + _SHIFTL(G_MODIFYVTX, 24, 8) | _SHIFTL((where), 16, 8) | _SHIFTL((vtx) * 2, 0, 16), (unsigned int)(val) \ + } \ + } #else -# define gSPModifyVertex(pkt, vtx, where, val) \ - gMoveWd(pkt, G_MW_POINTS, (vtx)*40+(where), val) -# define gsSPModifyVertex(vtx, where, val) \ - gsMoveWd(G_MW_POINTS, (vtx)*40+(where), val) +#define gSPModifyVertex(pkt, vtx, where, val) gMoveWd(pkt, G_MW_POINTS, (vtx) * 40 + (where), val) +#define gsSPModifyVertex(vtx, where, val) gsMoveWd(G_MW_POINTS, (vtx) * 40 + (where), val) #endif -#if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) +#if (defined(F3DEX_GBI) || defined(F3DLP_GBI)) /* * gSPBranchLessZ Branch DL if (vtx.z) less than or equal (zval). * - * dl = DL branch to + * dl = DL branch to * vtx = Vertex * zval = Screen depth * near = Near plane @@ -2314,65 +2228,71 @@ typedef union { * flag = G_BZ_PERSP or G_BZ_ORTHO */ -#define G_BZ_PERSP 0 -#define G_BZ_ORTHO 1 +#define G_BZ_PERSP 0 +#define G_BZ_ORTHO 1 -#define G_DEPTOZSrg(zval, near, far, flag, zmin, zmax) \ -(((unsigned int)FTOFIX32(((flag) == G_BZ_PERSP ? \ - (1.0f-(float)(near)/(float)(zval)) / \ - (1.0f-(float)(near)/(float)(far )) : \ - ((float)(zval) - (float)(near)) / \ - ((float)(far ) - (float)(near))))) * \ - (((int)((zmax) - (zmin)))&~1) + (int)FTOFIX32(zmin)) +#define G_DEPTOZSrg(zval, near, far, flag, zmin, zmax) \ + (((unsigned int)FTOFIX32(((flag) == G_BZ_PERSP \ + ? (1.0f - (float)(near) / (float)(zval)) / (1.0f - (float)(near) / (float)(far)) \ + : ((float)(zval) - (float)(near)) / ((float)(far) - (float)(near))))) \ + * (((int)((zmax) - (zmin))) & ~1) \ + + (int)FTOFIX32(zmin)) -#define G_DEPTOZS(zval, near, far, flag) \ - G_DEPTOZSrg(zval, near, far, flag, 0, G_MAXZ) +#define G_DEPTOZS(zval, near, far, flag) G_DEPTOZSrg(zval, near, far, flag, 0, G_MAXZ) -#define gSPBranchLessZrg(pkt, dl, vtx, zval, near, far, flag, zmin, zmax) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - _g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \ - _g->words.w1 = (unsigned int)(dl); \ - _g = (Gfx *)(pkt); \ - _g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)| \ - _SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12)); \ - _g->words.w1 = G_DEPTOZSrg(zval, near, far, flag, zmin, zmax); \ -} +#define gSPBranchLessZrg(pkt, dl, vtx, zval, near, far, flag, zmin, zmax) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + _g->words.w0 = _SHIFTL(G_RDPHALF_1, 24, 8); \ + _g->words.w1 = (unsigned int)(dl); \ + _g = (Gfx*)(pkt); \ + _g->words.w0 = (_SHIFTL(G_BRANCH_Z, 24, 8) | _SHIFTL((vtx) * 5, 12, 12) | _SHIFTL((vtx) * 2, 0, 12)); \ + _g->words.w1 = G_DEPTOZSrg(zval, near, far, flag, zmin, zmax); \ + } -#define gsSPBranchLessZrg(dl, vtx, zval, near, far, flag, zmin, zmax) \ -{{ _SHIFTL(G_RDPHALF_1,24,8), \ - (unsigned int)(dl), }}, \ -{{ _SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12),\ - G_DEPTOZSrg(zval, near, far, flag, zmin, zmax), }} +#define gsSPBranchLessZrg(dl, vtx, zval, near, far, flag, zmin, zmax) \ + { { \ + _SHIFTL(G_RDPHALF_1, 24, 8), \ + (unsigned int)(dl), \ + } }, \ + { \ + { \ + _SHIFTL(G_BRANCH_Z, 24, 8) | _SHIFTL((vtx) * 5, 12, 12) | _SHIFTL((vtx) * 2, 0, 12), \ + G_DEPTOZSrg(zval, near, far, flag, zmin, zmax), \ + } \ + } -#define gSPBranchLessZ(pkt, dl, vtx, zval, near, far, flag) \ - gSPBranchLessZrg(pkt, dl, vtx, zval, near, far, flag, 0, G_MAXZ) -#define gsSPBranchLessZ(dl, vtx, zval, near, far, flag) \ - gsSPBranchLessZrg(dl, vtx, zval, near, far, flag, 0, G_MAXZ) +#define gSPBranchLessZ(pkt, dl, vtx, zval, near, far, flag) \ + gSPBranchLessZrg(pkt, dl, vtx, zval, near, far, flag, 0, G_MAXZ) +#define gsSPBranchLessZ(dl, vtx, zval, near, far, flag) gsSPBranchLessZrg(dl, vtx, zval, near, far, flag, 0, G_MAXZ) /* * gSPBranchLessZraw Branch DL if (vtx.z) less than or equal (raw zval). * - * dl = DL branch to + * dl = DL branch to * vtx = Vertex * zval = Raw value of screen depth */ -#define gSPBranchLessZraw(pkt, dl, vtx, zval) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - _g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \ - _g->words.w1 = (unsigned int)(dl); \ - _g = (Gfx *)(pkt); \ - _g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)| \ - _SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12)); \ - _g->words.w1 = (unsigned int)(zval); \ -} +#define gSPBranchLessZraw(pkt, dl, vtx, zval) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + _g->words.w0 = _SHIFTL(G_RDPHALF_1, 24, 8); \ + _g->words.w1 = (unsigned int)(dl); \ + _g = (Gfx*)(pkt); \ + _g->words.w0 = (_SHIFTL(G_BRANCH_Z, 24, 8) | _SHIFTL((vtx) * 5, 12, 12) | _SHIFTL((vtx) * 2, 0, 12)); \ + _g->words.w1 = (unsigned int)(zval); \ + } -#define gsSPBranchLessZraw(dl, vtx, zval) \ -{{ _SHIFTL(G_RDPHALF_1,24,8), \ - (unsigned int)(dl), }}, \ -{{ _SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12),\ - (unsigned int)(zval), }} +#define gsSPBranchLessZraw(dl, vtx, zval) \ + { { \ + _SHIFTL(G_RDPHALF_1, 24, 8), \ + (unsigned int)(dl), \ + } }, \ + { \ + { \ + _SHIFTL(G_BRANCH_Z, 24, 8) | _SHIFTL((vtx) * 5, 12, 12) | _SHIFTL((vtx) * 2, 0, 12), (unsigned int)(zval), \ + } \ + } /* * gSPLoadUcode RSP loads specified ucode. @@ -2380,96 +2300,95 @@ typedef union { * uc_start = ucode text section start * uc_dstart = ucode data section start */ -#define gSPLoadUcodeEx(pkt, uc_start, uc_dstart, uc_dsize) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - _g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \ - _g->words.w1 = (unsigned int)(uc_dstart); \ - _g = (Gfx *)(pkt); \ - _g->words.w0 = (_SHIFTL(G_LOAD_UCODE,24,8)| \ - _SHIFTL((int)(uc_dsize)-1,0,16)); \ - _g->words.w1 = (unsigned int)(uc_start); \ -} +#define gSPLoadUcodeEx(pkt, uc_start, uc_dstart, uc_dsize) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + _g->words.w0 = _SHIFTL(G_RDPHALF_1, 24, 8); \ + _g->words.w1 = (unsigned int)(uc_dstart); \ + _g = (Gfx*)(pkt); \ + _g->words.w0 = (_SHIFTL(G_LOAD_UCODE, 24, 8) | _SHIFTL((int)(uc_dsize) - 1, 0, 16)); \ + _g->words.w1 = (unsigned int)(uc_start); \ + } -#define gsSPLoadUcodeEx(uc_start, uc_dstart, uc_dsize) \ -{{ _SHIFTL(G_RDPHALF_1,24,8), \ - (unsigned int)(uc_dstart), }}, \ -{{ _SHIFTL(G_LOAD_UCODE,24,8)| \ - _SHIFTL((int)(uc_dsize)-1,0,16), \ - (unsigned int)(uc_start), }} +#define gsSPLoadUcodeEx(uc_start, uc_dstart, uc_dsize) \ + { { \ + _SHIFTL(G_RDPHALF_1, 24, 8), \ + (unsigned int)(uc_dstart), \ + } }, \ + { \ + { \ + _SHIFTL(G_LOAD_UCODE, 24, 8) | _SHIFTL((int)(uc_dsize) - 1, 0, 16), (unsigned int)(uc_start), \ + } \ + } -#define gSPLoadUcode(pkt, uc_start, uc_dstart) \ - gSPLoadUcodeEx((pkt), (uc_start), (uc_dstart), SP_UCODE_DATA_SIZE) -#define gsSPLoadUcode(uc_start, uc_dstart) \ - gsSPLoadUcodeEx((uc_start), (uc_dstart), SP_UCODE_DATA_SIZE) +#define gSPLoadUcode(pkt, uc_start, uc_dstart) gSPLoadUcodeEx((pkt), (uc_start), (uc_dstart), SP_UCODE_DATA_SIZE) +#define gsSPLoadUcode(uc_start, uc_dstart) gsSPLoadUcodeEx((uc_start), (uc_dstart), SP_UCODE_DATA_SIZE) -#define gSPLoadUcodeL(pkt, ucode) \ - gSPLoadUcode((pkt), OS_K0_TO_PHYSICAL(&##ucode##TextStart), \ - OS_K0_TO_PHYSICAL(&##ucode##DataStart)) -#define gsSPLoadUcodeL(ucode) \ - gsSPLoadUcode(OS_K0_TO_PHYSICAL(&##ucode##TextStart), \ - OS_K0_TO_PHYSICAL(&##ucode##DataStart)) +#define gSPLoadUcodeL(pkt, ucode) \ + gSPLoadUcode((pkt), OS_K0_TO_PHYSICAL(&##ucode##TextStart), OS_K0_TO_PHYSICAL(&##ucode##DataStart)) +#define gsSPLoadUcodeL(ucode) \ + gsSPLoadUcode(OS_K0_TO_PHYSICAL(&##ucode##TextStart), OS_K0_TO_PHYSICAL(&##ucode##DataStart)) #endif -#ifdef F3DEX_GBI_2 +#ifdef F3DEX_GBI_2 /* * gSPDma_io DMA to/from DMEM/IMEM for DEBUG. */ -#define gSPDma_io(pkt, flag, dmem, dram, size) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - _g->words.w0 = _SHIFTL(G_DMA_IO,24,8)|_SHIFTL((flag),23,1)| \ - _SHIFTL((dmem)/8,13,10)|_SHIFTL((size)-1,0,12); \ - _g->words.w1 = (unsigned int)(dram); \ -} +#define gSPDma_io(pkt, flag, dmem, dram, size) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + _g->words.w0 = _SHIFTL(G_DMA_IO, 24, 8) | _SHIFTL((flag), 23, 1) | _SHIFTL((dmem) / 8, 13, 10) \ + | _SHIFTL((size) - 1, 0, 12); \ + _g->words.w1 = (unsigned int)(dram); \ + } -#define gsSPDma_io(flag, dmem, dram, size) \ -{{ \ - _SHIFTL(G_DMA_IO,24,8)|_SHIFTL((flag),23,1)| \ - _SHIFTL((dmem)/8,13,10)|_SHIFTL((size)-1,0,12), \ - (unsigned int)(dram) \ -}} +#define gsSPDma_io(flag, dmem, dram, size) \ + { \ + { \ + _SHIFTL(G_DMA_IO, 24, 8) | _SHIFTL((flag), 23, 1) | _SHIFTL((dmem) / 8, 13, 10) \ + | _SHIFTL((size) - 1, 0, 12), \ + (unsigned int)(dram) \ + } \ + } -#define gSPDmaRead(pkt,dmem,dram,size) gSPDma_io((pkt),0,(dmem),(dram),(size)) -#define gsSPDmaRead(dmem,dram,size) gsSPDma_io(0,(dmem),(dram),(size)) -#define gSPDmaWrite(pkt,dmem,dram,size) gSPDma_io((pkt),1,(dmem),(dram),(size)) -#define gsSPDmaWrite(dmem,dram,size) gsSPDma_io(1,(dmem),(dram),(size)) +#define gSPDmaRead(pkt, dmem, dram, size) gSPDma_io((pkt), 0, (dmem), (dram), (size)) +#define gsSPDmaRead(dmem, dram, size) gsSPDma_io(0, (dmem), (dram), (size)) +#define gSPDmaWrite(pkt, dmem, dram, size) gSPDma_io((pkt), 1, (dmem), (dram), (size)) +#define gsSPDmaWrite(dmem, dram, size) gsSPDma_io(1, (dmem), (dram), (size)) #endif /* * Lighting Macros */ -#ifdef F3DEX_GBI_2 -# define NUML(n) ((n)*24) +#ifdef F3DEX_GBI_2 +#define NUML(n) ((n) * 24) #else -# define NUML(n) (((n)+1)*32 + 0x80000000) +#define NUML(n) (((n) + 1) * 32 + 0x80000000) #endif -#define NUMLIGHTS_0 1 -#define NUMLIGHTS_1 1 -#define NUMLIGHTS_2 2 -#define NUMLIGHTS_3 3 -#define NUMLIGHTS_4 4 -#define NUMLIGHTS_5 5 -#define NUMLIGHTS_6 6 -#define NUMLIGHTS_7 7 +#define NUMLIGHTS_0 1 +#define NUMLIGHTS_1 1 +#define NUMLIGHTS_2 2 +#define NUMLIGHTS_3 3 +#define NUMLIGHTS_4 4 +#define NUMLIGHTS_5 5 +#define NUMLIGHTS_6 6 +#define NUMLIGHTS_7 7 /* * n should be one of: NUMLIGHTS_0, NUMLIGHTS_1, ..., NUMLIGHTS_7 - * NOTE: in addition to the number of directional lights specified, + * NOTE: in addition to the number of directional lights specified, * there is always 1 ambient light */ -#define gSPNumLights(pkt, n) \ - gMoveWd(pkt, G_MW_NUMLIGHT, G_MWO_NUMLIGHT, NUML(n)) -#define gsSPNumLights(n) \ - gsMoveWd( G_MW_NUMLIGHT, G_MWO_NUMLIGHT, NUML(n)) +#define gSPNumLights(pkt, n) gMoveWd(pkt, G_MW_NUMLIGHT, G_MWO_NUMLIGHT, NUML(n)) +#define gsSPNumLights(n) gsMoveWd(G_MW_NUMLIGHT, G_MWO_NUMLIGHT, NUML(n)) -#define LIGHT_1 1 -#define LIGHT_2 2 -#define LIGHT_3 3 -#define LIGHT_4 4 -#define LIGHT_5 5 -#define LIGHT_6 6 -#define LIGHT_7 7 -#define LIGHT_8 8 +#define LIGHT_1 1 +#define LIGHT_2 2 +#define LIGHT_3 3 +#define LIGHT_4 4 +#define LIGHT_5 5 +#define LIGHT_6 6 +#define LIGHT_7 7 +#define LIGHT_8 8 /* * l should point to a Light struct * n should be one of: LIGHT_1, LIGHT_2, ..., LIGHT_8 @@ -2478,207 +2397,153 @@ typedef union { * LIGHT_1 through LIGHT_3 will be the directional lights and light * LIGHT_4 will be the ambient light. */ -#ifdef F3DEX_GBI_2 -# define gSPLight(pkt, l, n) \ - gDma2p((pkt),G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,(n)*24+24) -# define gsSPLight(l, n) \ - gsDma2p( G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,(n)*24+24) -#else /* F3DEX_GBI_2 */ -# define gSPLight(pkt, l, n) \ - gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),((n)-1)*2+G_MV_L0) -# define gsSPLight(l, n) \ - gsDma1p( G_MOVEMEM, l, sizeof(Light),((n)-1)*2+G_MV_L0) -#endif /* F3DEX_GBI_2 */ +#ifdef F3DEX_GBI_2 +#define gSPLight(pkt, l, n) gDma2p((pkt), G_MOVEMEM, (l), sizeof(Light), G_MV_LIGHT, (n) * 24 + 24) +#define gsSPLight(l, n) gsDma2p(G_MOVEMEM, (l), sizeof(Light), G_MV_LIGHT, (n) * 24 + 24) +#else /* F3DEX_GBI_2 */ +#define gSPLight(pkt, l, n) gDma1p(pkt, G_MOVEMEM, l, sizeof(Light), ((n) - 1) * 2 + G_MV_L0) +#define gsSPLight(l, n) gsDma1p(G_MOVEMEM, l, sizeof(Light), ((n) - 1) * 2 + G_MV_L0) +#endif /* F3DEX_GBI_2 */ /* * gSPLightColor changes color of light without recalculating light direction * col is a 32 bit word with r,g,b,a (alpha is ignored) * n should be one of LIGHT_1, LIGHT_2, ..., LIGHT_8 */ -#define gSPLightColor(pkt, n, col) \ -{ \ - gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_a##n, col); \ - gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_b##n, col); \ -} -#define gsSPLightColor(n, col) \ - gsMoveWd(G_MW_LIGHTCOL, G_MWO_a##n, col), \ - gsMoveWd(G_MW_LIGHTCOL, G_MWO_b##n, col) +#define gSPLightColor(pkt, n, col) \ + { \ + gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_a##n, col); \ + gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_b##n, col); \ + } +#define gsSPLightColor(n, col) gsMoveWd(G_MW_LIGHTCOL, G_MWO_a##n, col), gsMoveWd(G_MW_LIGHTCOL, G_MWO_b##n, col) /* These macros use a structure "name" which is init'd with the gdSPDefLights macros*/ -#define gSPSetLights0(pkt,name) \ -{ \ - gSPNumLights(pkt,NUMLIGHTS_0); \ - gSPLight(pkt,&name.l[0],1); \ - gSPLight(pkt,&name.a,2); \ -} -#define gsSPSetLights0(name) \ - gsSPNumLights(NUMLIGHTS_0), \ - gsSPLight(&name.l[0],1), \ - gsSPLight(&name.a,2) +#define gSPSetLights0(pkt, name) \ + { \ + gSPNumLights(pkt, NUMLIGHTS_0); \ + gSPLight(pkt, &name.l[0], 1); \ + gSPLight(pkt, &name.a, 2); \ + } +#define gsSPSetLights0(name) gsSPNumLights(NUMLIGHTS_0), gsSPLight(&name.l[0], 1), gsSPLight(&name.a, 2) -#define gSPSetLights1(pkt,name) \ -{ \ - gSPNumLights(pkt,NUMLIGHTS_1); \ - gSPLight(pkt,&name.l[0],1); \ - gSPLight(pkt,&name.a,2); \ -} -#define gsSPSetLights1(name) \ - gsSPNumLights(NUMLIGHTS_1), \ - gsSPLight(&name.l[0],1), \ - gsSPLight(&name.a,2) +#define gSPSetLights1(pkt, name) \ + { \ + gSPNumLights(pkt, NUMLIGHTS_1); \ + gSPLight(pkt, &name.l[0], 1); \ + gSPLight(pkt, &name.a, 2); \ + } +#define gsSPSetLights1(name) gsSPNumLights(NUMLIGHTS_1), gsSPLight(&name.l[0], 1), gsSPLight(&name.a, 2) -#define gSPSetLights2(pkt,name) \ -{ \ - gSPNumLights(pkt,NUMLIGHTS_2); \ - gSPLight(pkt,&name.l[0],1); \ - gSPLight(pkt,&name.l[1],2); \ - gSPLight(pkt,&name.a,3); \ -} -#define gsSPSetLights2(name) \ - gsSPNumLights(NUMLIGHTS_2), \ - gsSPLight(&name.l[0],1), \ - gsSPLight(&name.l[1],2), \ - gsSPLight(&name.a,3) +#define gSPSetLights2(pkt, name) \ + { \ + gSPNumLights(pkt, NUMLIGHTS_2); \ + gSPLight(pkt, &name.l[0], 1); \ + gSPLight(pkt, &name.l[1], 2); \ + gSPLight(pkt, &name.a, 3); \ + } +#define gsSPSetLights2(name) \ + gsSPNumLights(NUMLIGHTS_2), gsSPLight(&name.l[0], 1), gsSPLight(&name.l[1], 2), gsSPLight(&name.a, 3) -#define gSPSetLights3(pkt,name) \ -{ \ - gSPNumLights(pkt,NUMLIGHTS_3); \ - gSPLight(pkt,&name.l[0],1); \ - gSPLight(pkt,&name.l[1],2); \ - gSPLight(pkt,&name.l[2],3); \ - gSPLight(pkt,&name.a,4); \ -} -#define gsSPSetLights3(name) \ - gsSPNumLights(NUMLIGHTS_3), \ - gsSPLight(&name.l[0],1), \ - gsSPLight(&name.l[1],2), \ - gsSPLight(&name.l[2],3), \ - gsSPLight(&name.a,4) +#define gSPSetLights3(pkt, name) \ + { \ + gSPNumLights(pkt, NUMLIGHTS_3); \ + gSPLight(pkt, &name.l[0], 1); \ + gSPLight(pkt, &name.l[1], 2); \ + gSPLight(pkt, &name.l[2], 3); \ + gSPLight(pkt, &name.a, 4); \ + } +#define gsSPSetLights3(name) \ + gsSPNumLights(NUMLIGHTS_3), gsSPLight(&name.l[0], 1), gsSPLight(&name.l[1], 2), gsSPLight(&name.l[2], 3), \ + gsSPLight(&name.a, 4) -#define gSPSetLights4(pkt,name) \ -{ \ - gSPNumLights(pkt,NUMLIGHTS_4); \ - gSPLight(pkt,&name.l[0],1); \ - gSPLight(pkt,&name.l[1],2); \ - gSPLight(pkt,&name.l[2],3); \ - gSPLight(pkt,&name.l[3],4); \ - gSPLight(pkt,&name.a,5); \ -} -#define gsSPSetLights4(name) \ - gsSPNumLights(NUMLIGHTS_4), \ - gsSPLight(&name.l[0],1), \ - gsSPLight(&name.l[1],2), \ - gsSPLight(&name.l[2],3), \ - gsSPLight(&name.l[3],4), \ - gsSPLight(&name.a,5) +#define gSPSetLights4(pkt, name) \ + { \ + gSPNumLights(pkt, NUMLIGHTS_4); \ + gSPLight(pkt, &name.l[0], 1); \ + gSPLight(pkt, &name.l[1], 2); \ + gSPLight(pkt, &name.l[2], 3); \ + gSPLight(pkt, &name.l[3], 4); \ + gSPLight(pkt, &name.a, 5); \ + } +#define gsSPSetLights4(name) \ + gsSPNumLights(NUMLIGHTS_4), gsSPLight(&name.l[0], 1), gsSPLight(&name.l[1], 2), gsSPLight(&name.l[2], 3), \ + gsSPLight(&name.l[3], 4), gsSPLight(&name.a, 5) -#define gSPSetLights5(pkt,name) \ -{ \ - gSPNumLights(pkt,NUMLIGHTS_5); \ - gSPLight(pkt,&name.l[0],1); \ - gSPLight(pkt,&name.l[1],2); \ - gSPLight(pkt,&name.l[2],3); \ - gSPLight(pkt,&name.l[3],4); \ - gSPLight(pkt,&name.l[4],5); \ - gSPLight(pkt,&name.a,6); \ -} +#define gSPSetLights5(pkt, name) \ + { \ + gSPNumLights(pkt, NUMLIGHTS_5); \ + gSPLight(pkt, &name.l[0], 1); \ + gSPLight(pkt, &name.l[1], 2); \ + gSPLight(pkt, &name.l[2], 3); \ + gSPLight(pkt, &name.l[3], 4); \ + gSPLight(pkt, &name.l[4], 5); \ + gSPLight(pkt, &name.a, 6); \ + } -#define gsSPSetLights5(name) \ - gsSPNumLights(NUMLIGHTS_5), \ - gsSPLight(&name.l[0],1), \ - gsSPLight(&name.l[1],2), \ - gsSPLight(&name.l[2],3), \ - gsSPLight(&name.l[3],4), \ - gsSPLight(&name.l[4],5), \ - gsSPLight(&name.a,6) +#define gsSPSetLights5(name) \ + gsSPNumLights(NUMLIGHTS_5), gsSPLight(&name.l[0], 1), gsSPLight(&name.l[1], 2), gsSPLight(&name.l[2], 3), \ + gsSPLight(&name.l[3], 4), gsSPLight(&name.l[4], 5), gsSPLight(&name.a, 6) -#define gSPSetLights6(pkt,name) \ -{ \ - gSPNumLights(pkt,NUMLIGHTS_6); \ - gSPLight(pkt,&name.l[0],1); \ - gSPLight(pkt,&name.l[1],2); \ - gSPLight(pkt,&name.l[2],3); \ - gSPLight(pkt,&name.l[3],4); \ - gSPLight(pkt,&name.l[4],5); \ - gSPLight(pkt,&name.l[5],6); \ - gSPLight(pkt,&name.a,7); \ -} +#define gSPSetLights6(pkt, name) \ + { \ + gSPNumLights(pkt, NUMLIGHTS_6); \ + gSPLight(pkt, &name.l[0], 1); \ + gSPLight(pkt, &name.l[1], 2); \ + gSPLight(pkt, &name.l[2], 3); \ + gSPLight(pkt, &name.l[3], 4); \ + gSPLight(pkt, &name.l[4], 5); \ + gSPLight(pkt, &name.l[5], 6); \ + gSPLight(pkt, &name.a, 7); \ + } -#define gsSPSetLights6(name) \ - gsSPNumLights(NUMLIGHTS_6), \ - gsSPLight(&name.l[0],1), \ - gsSPLight(&name.l[1],2), \ - gsSPLight(&name.l[2],3), \ - gsSPLight(&name.l[3],4), \ - gsSPLight(&name.l[4],5), \ - gsSPLight(&name.l[5],6), \ - gsSPLight(&name.a,7) +#define gsSPSetLights6(name) \ + gsSPNumLights(NUMLIGHTS_6), gsSPLight(&name.l[0], 1), gsSPLight(&name.l[1], 2), gsSPLight(&name.l[2], 3), \ + gsSPLight(&name.l[3], 4), gsSPLight(&name.l[4], 5), gsSPLight(&name.l[5], 6), gsSPLight(&name.a, 7) -#define gSPSetLights7(pkt,name) \ -{ \ - gSPNumLights(pkt,NUMLIGHTS_7); \ - gSPLight(pkt,&name.l[0],1); \ - gSPLight(pkt,&name.l[1],2); \ - gSPLight(pkt,&name.l[2],3); \ - gSPLight(pkt,&name.l[3],4); \ - gSPLight(pkt,&name.l[4],5); \ - gSPLight(pkt,&name.l[5],6); \ - gSPLight(pkt,&name.l[6],7); \ - gSPLight(pkt,&name.a,8); \ -} +#define gSPSetLights7(pkt, name) \ + { \ + gSPNumLights(pkt, NUMLIGHTS_7); \ + gSPLight(pkt, &name.l[0], 1); \ + gSPLight(pkt, &name.l[1], 2); \ + gSPLight(pkt, &name.l[2], 3); \ + gSPLight(pkt, &name.l[3], 4); \ + gSPLight(pkt, &name.l[4], 5); \ + gSPLight(pkt, &name.l[5], 6); \ + gSPLight(pkt, &name.l[6], 7); \ + gSPLight(pkt, &name.a, 8); \ + } -#define gsSPSetLights7(name) \ - gsSPNumLights(NUMLIGHTS_7), \ - gsSPLight(&name.l[0],1), \ - gsSPLight(&name.l[1],2), \ - gsSPLight(&name.l[2],3), \ - gsSPLight(&name.l[3],4), \ - gsSPLight(&name.l[4],5), \ - gsSPLight(&name.l[5],6), \ - gsSPLight(&name.l[6],7), \ - gsSPLight(&name.a,8) +#define gsSPSetLights7(name) \ + gsSPNumLights(NUMLIGHTS_7), gsSPLight(&name.l[0], 1), gsSPLight(&name.l[1], 2), gsSPLight(&name.l[2], 3), \ + gsSPLight(&name.l[3], 4), gsSPLight(&name.l[4], 5), gsSPLight(&name.l[5], 6), gsSPLight(&name.l[6], 7), \ + gsSPLight(&name.a, 8) /* * Reflection/Hiliting Macros */ -#ifdef F3DEX_GBI_2 -# define gSPLookAtX(pkt, l) \ - gDma2p((pkt),G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATX) -# define gsSPLookAtX(l) \ - gsDma2p( G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATX) -# define gSPLookAtY(pkt, l) \ - gDma2p((pkt),G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATY) -# define gsSPLookAtY(l) \ - gsDma2p( G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATY) -#else /* F3DEX_GBI_2 */ -# define gSPLookAtX(pkt, l) \ - gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATX) -# define gsSPLookAtX(l) \ - gsDma1p( G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATX) -# define gSPLookAtY(pkt, l) \ - gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATY) -# define gsSPLookAtY(l) \ - gsDma1p( G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATY) -#endif /* F3DEX_GBI_2 */ +#ifdef F3DEX_GBI_2 +#define gSPLookAtX(pkt, l) gDma2p((pkt), G_MOVEMEM, (l), sizeof(Light), G_MV_LIGHT, G_MVO_LOOKATX) +#define gsSPLookAtX(l) gsDma2p(G_MOVEMEM, (l), sizeof(Light), G_MV_LIGHT, G_MVO_LOOKATX) +#define gSPLookAtY(pkt, l) gDma2p((pkt), G_MOVEMEM, (l), sizeof(Light), G_MV_LIGHT, G_MVO_LOOKATY) +#define gsSPLookAtY(l) gsDma2p(G_MOVEMEM, (l), sizeof(Light), G_MV_LIGHT, G_MVO_LOOKATY) +#else /* F3DEX_GBI_2 */ +#define gSPLookAtX(pkt, l) gDma1p(pkt, G_MOVEMEM, l, sizeof(Light), G_MV_LOOKATX) +#define gsSPLookAtX(l) gsDma1p(G_MOVEMEM, l, sizeof(Light), G_MV_LOOKATX) +#define gSPLookAtY(pkt, l) gDma1p(pkt, G_MOVEMEM, l, sizeof(Light), G_MV_LOOKATY) +#define gsSPLookAtY(l) gsDma1p(G_MOVEMEM, l, sizeof(Light), G_MV_LOOKATY) +#endif /* F3DEX_GBI_2 */ -#define gSPLookAt(pkt, la) \ -{ \ - gSPLookAtX(pkt,la) \ - gSPLookAtY(pkt,(char *)(la)+16) \ -} -#define gsSPLookAt(la) \ - gsSPLookAtX(la), \ - gsSPLookAtY((char *)(la)+16) +#define gSPLookAt(pkt, la) { gSPLookAtX(pkt, la) gSPLookAtY(pkt, (char*)(la) + 16) } +#define gsSPLookAt(la) gsSPLookAtX(la), gsSPLookAtY((char*)(la) + 16) -#define gDPSetHilite1Tile(pkt, tile, hilite, width, height) \ - gDPSetTileSize(pkt, tile, (hilite)->h.x1 & 0xfff, (hilite)->h.y1 & 0xfff, \ - ((((width)-1)*4)+(hilite)->h.x1) & 0xfff, ((((height)-1)*4)+(hilite)->h.y1) & 0xfff) - -#define gDPSetHilite2Tile(pkt, tile, hilite, width, height) \ - gDPSetTileSize(pkt, tile, (hilite)->h.x2 & 0xfff, (hilite)->h.y2 & 0xfff, \ - ((((width)-1)*4)+(hilite)->h.x2) & 0xfff, ((((height)-1)*4)+(hilite)->h.y2) & 0xfff) +#define gDPSetHilite1Tile(pkt, tile, hilite, width, height) \ + gDPSetTileSize(pkt, tile, (hilite)->h.x1 & 0xfff, (hilite)->h.y1 & 0xfff, \ + ((((width) - 1) * 4) + (hilite)->h.x1) & 0xfff, ((((height) - 1) * 4) + (hilite)->h.y1) & 0xfff) +#define gDPSetHilite2Tile(pkt, tile, hilite, width, height) \ + gDPSetTileSize(pkt, tile, (hilite)->h.x2 & 0xfff, (hilite)->h.y2 & 0xfff, \ + ((((width) - 1) * 4) + (hilite)->h.x2) & 0xfff, ((((height) - 1) * 4) + (hilite)->h.y2) & 0xfff) /* * FOG macros @@ -2691,133 +2556,126 @@ typedef union { * min, max: range 0 to 1000: 0=nearplane, 1000=farplane * min is where fog begins (usually less than max and often 0) * max is where fog is thickest (usually 1000) - * + * */ -#define gSPFogFactor(pkt, fm, fo) \ - gMoveWd(pkt, G_MW_FOG, G_MWO_FOG, \ - (_SHIFTL(fm,16,16) | _SHIFTL(fo,0,16))) +#define gSPFogFactor(pkt, fm, fo) gMoveWd(pkt, G_MW_FOG, G_MWO_FOG, (_SHIFTL(fm, 16, 16) | _SHIFTL(fo, 0, 16))) -#define gsSPFogFactor(fm, fo) \ - gsMoveWd(G_MW_FOG, G_MWO_FOG, \ - (_SHIFTL(fm,16,16) | _SHIFTL(fo,0,16))) +#define gsSPFogFactor(fm, fo) gsMoveWd(G_MW_FOG, G_MWO_FOG, (_SHIFTL(fm, 16, 16) | _SHIFTL(fo, 0, 16))) -#define gSPFogPosition(pkt, min, max) \ - gMoveWd(pkt, G_MW_FOG, G_MWO_FOG, \ - (_SHIFTL((128000/((max)-(min))),16,16) | \ - _SHIFTL(((500-(min))*256/((max)-(min))),0,16))) +#define gSPFogPosition(pkt, min, max) \ + gMoveWd(pkt, G_MW_FOG, G_MWO_FOG, \ + (_SHIFTL((128000 / ((max) - (min))), 16, 16) | _SHIFTL(((500 - (min)) * 256 / ((max) - (min))), 0, 16))) -#define gsSPFogPosition(min, max) \ - gsMoveWd(G_MW_FOG, G_MWO_FOG, \ - (_SHIFTL((128000/((max)-(min))),16,16) | \ - _SHIFTL(((500-(min))*256/((max)-(min))),0,16))) +#define gsSPFogPosition(min, max) \ + gsMoveWd(G_MW_FOG, G_MWO_FOG, \ + (_SHIFTL((128000 / ((max) - (min))), 16, 16) | _SHIFTL(((500 - (min)) * 256 / ((max) - (min))), 0, 16))) -#ifdef F3DEX_GBI_2 +#ifdef F3DEX_GBI_2 /* * Macros to turn texture on/off */ -# define gSPTexture(pkt, s, t, level, tile, on) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_TEXTURE,24,8) | \ - _SHIFTL(BOWTIE_VAL,16,8) | \ - _SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | \ - _SHIFTL((on),1,7)); \ - _g->words.w1 = (_SHIFTL((s),16,16) | _SHIFTL((t),0,16)); \ -} -# define gsSPTexture(s, t, level, tile, on) \ -{{ \ - (_SHIFTL(G_TEXTURE,24,8) | _SHIFTL(BOWTIE_VAL,16,8) | \ - _SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | _SHIFTL((on),1,7)),\ - (_SHIFTL((s),16,16) | _SHIFTL((t),0,16)) \ -}} -/* +#define gSPTexture(pkt, s, t, level, tile, on) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL(BOWTIE_VAL, 16, 8) | _SHIFTL((level), 11, 3) \ + | _SHIFTL((tile), 8, 3) | _SHIFTL((on), 1, 7)); \ + _g->words.w1 = (_SHIFTL((s), 16, 16) | _SHIFTL((t), 0, 16)); \ + } +#define gsSPTexture(s, t, level, tile, on) \ + { \ + { \ + (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL(BOWTIE_VAL, 16, 8) | _SHIFTL((level), 11, 3) | _SHIFTL((tile), 8, 3) \ + | _SHIFTL((on), 1, 7)), \ + (_SHIFTL((s), 16, 16) | _SHIFTL((t), 0, 16)) \ + } \ + } +/* * Different version of SPTexture macro, has an additional parameter * which is currently reserved in the microcode. */ -# define gSPTextureL(pkt, s, t, level, xparam, tile, on) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_TEXTURE,24,8) | \ - _SHIFTL((xparam),16,8) | \ - _SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | \ - _SHIFTL((on),1,7)); \ - _g->words.w1 = (_SHIFTL((s),16,16) | _SHIFTL((t),0,16)); \ -} -# define gsSPTextureL(s, t, level, xparam, tile, on) \ -{{ \ - (_SHIFTL(G_TEXTURE,24,8) | _SHIFTL((xparam),16,8) | \ - _SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | _SHIFTL((on),1,7)),\ - (_SHIFTL((s),16,16) | _SHIFTL((t),0,16)) \ -}} +#define gSPTextureL(pkt, s, t, level, xparam, tile, on) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL((xparam), 16, 8) | _SHIFTL((level), 11, 3) \ + | _SHIFTL((tile), 8, 3) | _SHIFTL((on), 1, 7)); \ + _g->words.w1 = (_SHIFTL((s), 16, 16) | _SHIFTL((t), 0, 16)); \ + } +#define gsSPTextureL(s, t, level, xparam, tile, on) \ + { \ + { \ + (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL((xparam), 16, 8) | _SHIFTL((level), 11, 3) | _SHIFTL((tile), 8, 3) \ + | _SHIFTL((on), 1, 7)), \ + (_SHIFTL((s), 16, 16) | _SHIFTL((t), 0, 16)) \ + } \ + } #else /* * Macros to turn texture on/off */ -# define gSPTexture(pkt, s, t, level, tile, on) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_TEXTURE,24,8)|_SHIFTL(BOWTIE_VAL,16,8)|\ - _SHIFTL((level),11,3)|_SHIFTL((tile),8,3)| \ - _SHIFTL((on),0,8)); \ - _g->words.w1 = (_SHIFTL((s),16,16)|_SHIFTL((t),0,16)); \ -} -# define gsSPTexture(s, t, level, tile, on) \ -{{ \ - (_SHIFTL(G_TEXTURE,24,8)|_SHIFTL(BOWTIE_VAL,16,8)| \ - _SHIFTL((level),11,3)|_SHIFTL((tile),8,3)|_SHIFTL((on),0,8)), \ - (_SHIFTL((s),16,16)|_SHIFTL((t),0,16)) \ -}} -/* +#define gSPTexture(pkt, s, t, level, tile, on) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL(BOWTIE_VAL, 16, 8) | _SHIFTL((level), 11, 3) \ + | _SHIFTL((tile), 8, 3) | _SHIFTL((on), 0, 8)); \ + _g->words.w1 = (_SHIFTL((s), 16, 16) | _SHIFTL((t), 0, 16)); \ + } +#define gsSPTexture(s, t, level, tile, on) \ + { \ + { \ + (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL(BOWTIE_VAL, 16, 8) | _SHIFTL((level), 11, 3) | _SHIFTL((tile), 8, 3) \ + | _SHIFTL((on), 0, 8)), \ + (_SHIFTL((s), 16, 16) | _SHIFTL((t), 0, 16)) \ + } \ + } +/* * Different version of SPTexture macro, has an additional parameter * which is currently reserved in the microcode. */ -# define gSPTextureL(pkt, s, t, level, xparam, tile, on) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_TEXTURE,24,8)|_SHIFTL((xparam),16,8)| \ - _SHIFTL((level),11,3)|_SHIFTL((tile),8,3)| \ - _SHIFTL((on),0,8)); \ - _g->words.w1 = (_SHIFTL((s),16,16)|_SHIFTL((t),0,16)); \ -} -# define gsSPTextureL(s, t, level, xparam, tile, on) \ -{{ \ - (_SHIFTL(G_TEXTURE,24,8)|_SHIFTL((xparam),16,8)| \ - _SHIFTL((level),11,3)|_SHIFTL((tile),8,3)|_SHIFTL((on),0,8)), \ - (_SHIFTL((s),16,16)|_SHIFTL((t),0,16)) \ -}} +#define gSPTextureL(pkt, s, t, level, xparam, tile, on) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL((xparam), 16, 8) | _SHIFTL((level), 11, 3) \ + | _SHIFTL((tile), 8, 3) | _SHIFTL((on), 0, 8)); \ + _g->words.w1 = (_SHIFTL((s), 16, 16) | _SHIFTL((t), 0, 16)); \ + } +#define gsSPTextureL(s, t, level, xparam, tile, on) \ + { \ + { \ + (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL((xparam), 16, 8) | _SHIFTL((level), 11, 3) | _SHIFTL((tile), 8, 3) \ + | _SHIFTL((on), 0, 8)), \ + (_SHIFTL((s), 16, 16) | _SHIFTL((t), 0, 16)) \ + } \ + } #endif -#define gSPPerspNormalize(pkt, s) gMoveWd(pkt, G_MW_PERSPNORM, 0, (s)) -#define gsSPPerspNormalize(s) gsMoveWd( G_MW_PERSPNORM, 0, (s)) +#define gSPPerspNormalize(pkt, s) gMoveWd(pkt, G_MW_PERSPNORM, 0, (s)) +#define gsSPPerspNormalize(s) gsMoveWd(G_MW_PERSPNORM, 0, (s)) -#ifdef F3DEX_GBI_2 -# define gSPPopMatrixN(pkt, n, num) gDma2p((pkt),G_POPMTX,(num)*64,64,2,0) -# define gsSPPopMatrixN(n, num) gsDma2p( G_POPMTX,(num)*64,64,2,0) -# define gSPPopMatrix(pkt, n) gSPPopMatrixN((pkt), (n), 1) -# define gsSPPopMatrix(n) gsSPPopMatrixN( (n), 1) -#else /* F3DEX_GBI_2 */ -# define gSPPopMatrix(pkt, n) gImmp1(pkt, G_POPMTX, n) -# define gsSPPopMatrix(n) gsImmp1( G_POPMTX, n) -#endif /* F3DEX_GBI_2 */ +#ifdef F3DEX_GBI_2 +#define gSPPopMatrixN(pkt, n, num) gDma2p((pkt), G_POPMTX, (num) * 64, 64, 2, 0) +#define gsSPPopMatrixN(n, num) gsDma2p(G_POPMTX, (num) * 64, 64, 2, 0) +#define gSPPopMatrix(pkt, n) gSPPopMatrixN((pkt), (n), 1) +#define gsSPPopMatrix(n) gsSPPopMatrixN((n), 1) +#else /* F3DEX_GBI_2 */ +#define gSPPopMatrix(pkt, n) gImmp1(pkt, G_POPMTX, n) +#define gsSPPopMatrix(n) gsImmp1(G_POPMTX, n) +#endif /* F3DEX_GBI_2 */ -#define gSPEndDisplayList(pkt) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_ENDDL, 24, 8); \ - _g->words.w1 = 0; \ -} +#define gSPEndDisplayList(pkt) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_ENDDL, 24, 8); \ + _g->words.w1 = 0; \ + } -#define gsSPEndDisplayList() \ -{{ \ - _SHIFTL(G_ENDDL, 24, 8), 0 \ -}} +#define gsSPEndDisplayList() { { _SHIFTL(G_ENDDL, 24, 8), 0 } } -#ifdef F3DEX_GBI_2 +#ifdef F3DEX_GBI_2 /* * One gSPGeometryMode(pkt,c,s) GBI is equal to these two GBIs. * @@ -2826,273 +2684,233 @@ typedef union { * * gSPLoadGeometryMode(pkt, word) sets GeometryMode directly. */ -#define gSPGeometryMode(pkt, c, s) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - _g->words.w0 = _SHIFTL(G_GEOMETRYMODE,24,8)|_SHIFTL(~(u32)(c),0,24);\ - _g->words.w1 = (u32)(s); \ -} +#define gSPGeometryMode(pkt, c, s) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + _g->words.w0 = _SHIFTL(G_GEOMETRYMODE, 24, 8) | _SHIFTL(~(u32)(c), 0, 24); \ + _g->words.w1 = (u32)(s); \ + } -#define gsSPGeometryMode(c, s) \ -{{ \ - (_SHIFTL(G_GEOMETRYMODE,24,8)|_SHIFTL(~(u32)(c),0,24)),(u32)(s) \ -}} -#define gSPSetGeometryMode(pkt, word) gSPGeometryMode((pkt),0,(word)) -#define gsSPSetGeometryMode(word) gsSPGeometryMode(0,(word)) -#define gSPClearGeometryMode(pkt, word) gSPGeometryMode((pkt),(word),0) -#define gsSPClearGeometryMode(word) gsSPGeometryMode((word),0) -#define gSPLoadGeometryMode(pkt, word) gSPGeometryMode((pkt),-1,(word)) -#define gsSPLoadGeometryMode(word) gsSPGeometryMode(-1,(word)) +#define gsSPGeometryMode(c, s) \ + { \ + { \ + (_SHIFTL(G_GEOMETRYMODE, 24, 8) | _SHIFTL(~(u32)(c), 0, 24)), (u32)(s) \ + } \ + } +#define gSPSetGeometryMode(pkt, word) gSPGeometryMode((pkt), 0, (word)) +#define gsSPSetGeometryMode(word) gsSPGeometryMode(0, (word)) +#define gSPClearGeometryMode(pkt, word) gSPGeometryMode((pkt), (word), 0) +#define gsSPClearGeometryMode(word) gsSPGeometryMode((word), 0) +#define gSPLoadGeometryMode(pkt, word) gSPGeometryMode((pkt), -1, (word)) +#define gsSPLoadGeometryMode(word) gsSPGeometryMode(-1, (word)) -#else /* F3DEX_GBI_2 */ -#define gSPSetGeometryMode(pkt, word) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_SETGEOMETRYMODE, 24, 8); \ - _g->words.w1 = (unsigned int)(word); \ -} +#else /* F3DEX_GBI_2 */ +#define gSPSetGeometryMode(pkt, word) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_SETGEOMETRYMODE, 24, 8); \ + _g->words.w1 = (unsigned int)(word); \ + } -#define gsSPSetGeometryMode(word) \ -{{ \ - _SHIFTL(G_SETGEOMETRYMODE, 24, 8), (unsigned int)(word) \ -}} +#define gsSPSetGeometryMode(word) \ + { \ + { \ + _SHIFTL(G_SETGEOMETRYMODE, 24, 8), (unsigned int)(word) \ + } \ + } -#define gSPClearGeometryMode(pkt, word) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_CLEARGEOMETRYMODE, 24, 8); \ - _g->words.w1 = (unsigned int)(word); \ -} +#define gSPClearGeometryMode(pkt, word) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_CLEARGEOMETRYMODE, 24, 8); \ + _g->words.w1 = (unsigned int)(word); \ + } -#define gsSPClearGeometryMode(word) \ -{{ \ - _SHIFTL(G_CLEARGEOMETRYMODE, 24, 8), (unsigned int)(word) \ -}} -#endif /* F3DEX_GBI_2 */ +#define gsSPClearGeometryMode(word) \ + { \ + { \ + _SHIFTL(G_CLEARGEOMETRYMODE, 24, 8), (unsigned int)(word) \ + } \ + } +#endif /* F3DEX_GBI_2 */ -#ifdef F3DEX_GBI_2 -#define gSPSetOtherMode(pkt, cmd, sft, len, data) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - _g->words.w0 = (_SHIFTL(cmd,24,8)|_SHIFTL(32-(sft)-(len),8,8)| \ - _SHIFTL((len)-1,0,8)); \ - _g->words.w1 = (unsigned int)(data); \ -} +#ifdef F3DEX_GBI_2 +#define gSPSetOtherMode(pkt, cmd, sft, len, data) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + _g->words.w0 = (_SHIFTL(cmd, 24, 8) | _SHIFTL(32 - (sft) - (len), 8, 8) | _SHIFTL((len) - 1, 0, 8)); \ + _g->words.w1 = (unsigned int)(data); \ + } -#define gsSPSetOtherMode(cmd, sft, len, data) \ -{{ \ - _SHIFTL(cmd,24,8)|_SHIFTL(32-(sft)-(len),8,8)|_SHIFTL((len)-1,0,8), \ - (unsigned int)(data) \ -}} +#define gsSPSetOtherMode(cmd, sft, len, data) \ + { \ + { \ + _SHIFTL(cmd, 24, 8) | _SHIFTL(32 - (sft) - (len), 8, 8) | _SHIFTL((len) - 1, 0, 8), (unsigned int)(data) \ + } \ + } #else -#define gSPSetOtherMode(pkt, cmd, sft, len, data) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(cmd, 24, 8) | _SHIFTL(sft, 8, 8) | \ - _SHIFTL(len, 0, 8)); \ - _g->words.w1 = (unsigned int)(data); \ -} +#define gSPSetOtherMode(pkt, cmd, sft, len, data) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(cmd, 24, 8) | _SHIFTL(sft, 8, 8) | _SHIFTL(len, 0, 8)); \ + _g->words.w1 = (unsigned int)(data); \ + } -#define gsSPSetOtherMode(cmd, sft, len, data) \ -{{ \ - _SHIFTL(cmd, 24, 8) | _SHIFTL(sft, 8, 8) | _SHIFTL(len, 0, 8), \ - (unsigned int)(data) \ -}} +#define gsSPSetOtherMode(cmd, sft, len, data) \ + { \ + { \ + _SHIFTL(cmd, 24, 8) | _SHIFTL(sft, 8, 8) | _SHIFTL(len, 0, 8), (unsigned int)(data) \ + } \ + } #endif /* * RDP setothermode register commands - register shadowed in RSP */ -#define gDPPipelineMode(pkt, mode) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_PIPELINE, 1, mode) -#define gsDPPipelineMode(mode) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_PIPELINE, 1, mode) +#define gDPPipelineMode(pkt, mode) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_PIPELINE, 1, mode) +#define gsDPPipelineMode(mode) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_PIPELINE, 1, mode) -#define gDPSetCycleType(pkt, type) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_CYCLETYPE, 2, type) -#define gsDPSetCycleType(type) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_CYCLETYPE, 2, type) +#define gDPSetCycleType(pkt, type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_CYCLETYPE, 2, type) +#define gsDPSetCycleType(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_CYCLETYPE, 2, type) -#define gDPSetTexturePersp(pkt, type) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTPERSP, 1, type) -#define gsDPSetTexturePersp(type) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTPERSP, 1, type) +#define gDPSetTexturePersp(pkt, type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTPERSP, 1, type) +#define gsDPSetTexturePersp(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTPERSP, 1, type) -#define gDPSetTextureDetail(pkt, type) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTDETAIL, 2, type) -#define gsDPSetTextureDetail(type) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTDETAIL, 2, type) +#define gDPSetTextureDetail(pkt, type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTDETAIL, 2, type) +#define gsDPSetTextureDetail(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTDETAIL, 2, type) -#define gDPSetTextureLOD(pkt, type) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTLOD, 1, type) -#define gsDPSetTextureLOD(type) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTLOD, 1, type) +#define gDPSetTextureLOD(pkt, type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTLOD, 1, type) +#define gsDPSetTextureLOD(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTLOD, 1, type) -#define gDPSetTextureLUT(pkt, type) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTLUT, 2, type) -#define gsDPSetTextureLUT(type) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTLUT, 2, type) +#define gDPSetTextureLUT(pkt, type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTLUT, 2, type) +#define gsDPSetTextureLUT(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTLUT, 2, type) -#define gDPSetTextureFilter(pkt, type) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTFILT, 2, type) -#define gsDPSetTextureFilter(type) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTFILT, 2, type) +#define gDPSetTextureFilter(pkt, type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTFILT, 2, type) +#define gsDPSetTextureFilter(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTFILT, 2, type) -#define gDPSetTextureConvert(pkt, type) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTCONV, 3, type) -#define gsDPSetTextureConvert(type) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTCONV, 3, type) +#define gDPSetTextureConvert(pkt, type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTCONV, 3, type) +#define gsDPSetTextureConvert(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTCONV, 3, type) -#define gDPSetCombineKey(pkt, type) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_COMBKEY, 1, type) -#define gsDPSetCombineKey(type) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_COMBKEY, 1, type) +#define gDPSetCombineKey(pkt, type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_COMBKEY, 1, type) +#define gsDPSetCombineKey(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_COMBKEY, 1, type) #ifndef _HW_VERSION_1 -#define gDPSetColorDither(pkt, mode) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_RGBDITHER, 2, mode) -#define gsDPSetColorDither(mode) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_RGBDITHER, 2, mode) +#define gDPSetColorDither(pkt, mode) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_RGBDITHER, 2, mode) +#define gsDPSetColorDither(mode) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_RGBDITHER, 2, mode) #else -#define gDPSetColorDither(pkt, mode) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_COLORDITHER, 1, mode) -#define gsDPSetColorDither(mode) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_COLORDITHER, 1, mode) +#define gDPSetColorDither(pkt, mode) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_COLORDITHER, 1, mode) +#define gsDPSetColorDither(mode) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_COLORDITHER, 1, mode) #endif #ifndef _HW_VERSION_1 -#define gDPSetAlphaDither(pkt, mode) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 2, mode) -#define gsDPSetAlphaDither(mode) \ - gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 2, mode) +#define gDPSetAlphaDither(pkt, mode) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 2, mode) +#define gsDPSetAlphaDither(mode) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 2, mode) #endif -/* 'blendmask' is not supported anymore. +/* 'blendmask' is not supported anymore. * The bits are reserved for future use. * Fri May 26 13:45:55 PDT 1995 */ -#define gDPSetBlendMask(pkt, mask) gDPNoOp(pkt) -#define gsDPSetBlendMask(mask) gsDPNoOp() +#define gDPSetBlendMask(pkt, mask) gDPNoOp(pkt) +#define gsDPSetBlendMask(mask) gsDPNoOp() -#define gDPSetAlphaCompare(pkt, type) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_ALPHACOMPARE, 2, type) -#define gsDPSetAlphaCompare(type) \ - gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_ALPHACOMPARE, 2, type) +#define gDPSetAlphaCompare(pkt, type) gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_ALPHACOMPARE, 2, type) +#define gsDPSetAlphaCompare(type) gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_ALPHACOMPARE, 2, type) -#define gDPSetDepthSource(pkt, src) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_ZSRCSEL, 1, src) -#define gsDPSetDepthSource(src) \ - gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_ZSRCSEL, 1, src) +#define gDPSetDepthSource(pkt, src) gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_ZSRCSEL, 1, src) +#define gsDPSetDepthSource(src) gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_ZSRCSEL, 1, src) -#define gDPSetRenderMode(pkt, c0, c1) \ - gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_RENDERMODE, 29, \ - (c0) | (c1)) -#define gsDPSetRenderMode(c0, c1) \ - gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_RENDERMODE, 29, \ - (c0) | (c1)) +#define gDPSetRenderMode(pkt, c0, c1) gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_RENDERMODE, 29, (c0) | (c1)) +#define gsDPSetRenderMode(c0, c1) gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_RENDERMODE, 29, (c0) | (c1)) -#define gSetImage(pkt, cmd, fmt, siz, width, i) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) | \ - _SHIFTL(siz, 19, 2) | _SHIFTL((width)-1, 0, 12); \ - _g->words.w1 = (unsigned int)(i); \ -} +#define gSetImage(pkt, cmd, fmt, siz, width, i) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) | _SHIFTL(siz, 19, 2) | _SHIFTL((width) - 1, 0, 12); \ + _g->words.w1 = (unsigned int)(i); \ + } -#define gsSetImage(cmd, fmt, siz, width, i) \ -{{ \ - _SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) | \ - _SHIFTL(siz, 19, 2) | _SHIFTL((width)-1, 0, 12), \ - (unsigned int)(i) \ -}} - -#define gDPSetColorImage(pkt, f, s, w, i) gSetImage(pkt, G_SETCIMG, f, s, w, i) -#define gsDPSetColorImage(f, s, w, i) gsSetImage(G_SETCIMG, f, s, w, i) +#define gsSetImage(cmd, fmt, siz, width, i) \ + { \ + { \ + _SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) | _SHIFTL(siz, 19, 2) | _SHIFTL((width) - 1, 0, 12), \ + (unsigned int)(i) \ + } \ + } +#define gDPSetColorImage(pkt, f, s, w, i) gSetImage(pkt, G_SETCIMG, f, s, w, i) +#define gsDPSetColorImage(f, s, w, i) gsSetImage(G_SETCIMG, f, s, w, i) /* use these for new code */ -#define gDPSetDepthImage(pkt, i) gSetImage(pkt, G_SETZIMG, 0, 0, 1, i) -#define gsDPSetDepthImage(i) gsSetImage(G_SETZIMG, 0, 0, 1, i) +#define gDPSetDepthImage(pkt, i) gSetImage(pkt, G_SETZIMG, 0, 0, 1, i) +#define gsDPSetDepthImage(i) gsSetImage(G_SETZIMG, 0, 0, 1, i) /* kept for compatibility */ -#define gDPSetMaskImage(pkt, i) gDPSetDepthImage(pkt, i) -#define gsDPSetMaskImage(i) gsDPSetDepthImage(i) +#define gDPSetMaskImage(pkt, i) gDPSetDepthImage(pkt, i) +#define gsDPSetMaskImage(i) gsDPSetDepthImage(i) -#define gDPSetTextureImage(pkt, f, s, w, i) gSetImage(pkt, G_SETTIMG, f, s, w, i) -#define gsDPSetTextureImage(f, s, w, i) gsSetImage(G_SETTIMG, f, s, w, i) +#define gDPSetTextureImage(pkt, f, s, w, i) gSetImage(pkt, G_SETTIMG, f, s, w, i) +#define gsDPSetTextureImage(f, s, w, i) gsSetImage(G_SETTIMG, f, s, w, i) /* * RDP macros */ -#define gDPSetCombine(pkt, muxs0, muxs1) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24);\ - _g->words.w1 = (unsigned int)(muxs1); \ -} +#define gDPSetCombine(pkt, muxs0, muxs1) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24); \ + _g->words.w1 = (unsigned int)(muxs1); \ + } -#define gsDPSetCombine(muxs0, muxs1) \ -{{ \ - _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24), \ - (unsigned int)(muxs1) \ -}} +#define gsDPSetCombine(muxs0, muxs1) \ + { \ + { \ + _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24), (unsigned int)(muxs1) \ + } \ + } -#define GCCc0w0(saRGB0, mRGB0, saA0, mA0) \ - (_SHIFTL((saRGB0), 20, 4) | _SHIFTL((mRGB0), 15, 5) | \ - _SHIFTL((saA0), 12, 3) | _SHIFTL((mA0), 9, 3)) +#define GCCc0w0(saRGB0, mRGB0, saA0, mA0) \ + (_SHIFTL((saRGB0), 20, 4) | _SHIFTL((mRGB0), 15, 5) | _SHIFTL((saA0), 12, 3) | _SHIFTL((mA0), 9, 3)) -#define GCCc1w0(saRGB1, mRGB1) \ - (_SHIFTL((saRGB1), 5, 4) | _SHIFTL((mRGB1), 0, 5)) +#define GCCc1w0(saRGB1, mRGB1) (_SHIFTL((saRGB1), 5, 4) | _SHIFTL((mRGB1), 0, 5)) -#define GCCc0w1(sbRGB0, aRGB0, sbA0, aA0) \ - (_SHIFTL((sbRGB0), 28, 4) | _SHIFTL((aRGB0), 15, 3) | \ - _SHIFTL((sbA0), 12, 3) | _SHIFTL((aA0), 9, 3)) +#define GCCc0w1(sbRGB0, aRGB0, sbA0, aA0) \ + (_SHIFTL((sbRGB0), 28, 4) | _SHIFTL((aRGB0), 15, 3) | _SHIFTL((sbA0), 12, 3) | _SHIFTL((aA0), 9, 3)) -#define GCCc1w1(sbRGB1, saA1, mA1, aRGB1, sbA1, aA1) \ - (_SHIFTL((sbRGB1), 24, 4) | _SHIFTL((saA1), 21, 3) | \ - _SHIFTL((mA1), 18, 3) | _SHIFTL((aRGB1), 6, 3) | \ - _SHIFTL((sbA1), 3, 3) | _SHIFTL((aA1), 0, 3)) +#define GCCc1w1(sbRGB1, saA1, mA1, aRGB1, sbA1, aA1) \ + (_SHIFTL((sbRGB1), 24, 4) | _SHIFTL((saA1), 21, 3) | _SHIFTL((mA1), 18, 3) | _SHIFTL((aRGB1), 6, 3) \ + | _SHIFTL((sbA1), 3, 3) | _SHIFTL((aA1), 0, 3)) -#define gDPSetCombineLERP(pkt, a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, \ - a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_SETCOMBINE, 24, 8) | \ - _SHIFTL(GCCc0w0(G_CCMUX_##a0, G_CCMUX_##c0, \ - G_ACMUX_##Aa0, G_ACMUX_##Ac0) | \ - GCCc1w0(G_CCMUX_##a1, G_CCMUX_##c1), \ - 0, 24); \ - _g->words.w1 = (unsigned int)(GCCc0w1(G_CCMUX_##b0, \ - G_CCMUX_##d0, \ - G_ACMUX_##Ab0, \ - G_ACMUX_##Ad0) | \ - GCCc1w1(G_CCMUX_##b1, \ - G_ACMUX_##Aa1, \ - G_ACMUX_##Ac1, \ - G_CCMUX_##d1, \ - G_ACMUX_##Ab1, \ - G_ACMUX_##Ad1)); \ -} +#define gDPSetCombineLERP(pkt, a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_SETCOMBINE, 24, 8) \ + | _SHIFTL(GCCc0w0(G_CCMUX_##a0, G_CCMUX_##c0, G_ACMUX_##Aa0, G_ACMUX_##Ac0) \ + | GCCc1w0(G_CCMUX_##a1, G_CCMUX_##c1), \ + 0, 24); \ + _g->words.w1 = (unsigned int)(GCCc0w1(G_CCMUX_##b0, G_CCMUX_##d0, G_ACMUX_##Ab0, G_ACMUX_##Ad0) \ + | GCCc1w1(G_CCMUX_##b1, G_ACMUX_##Aa1, G_ACMUX_##Ac1, G_CCMUX_##d1, \ + G_ACMUX_##Ab1, G_ACMUX_##Ad1)); \ + } -#define gsDPSetCombineLERP(a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, \ - a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \ -{{ \ - _SHIFTL(G_SETCOMBINE, 24, 8) | \ - _SHIFTL(GCCc0w0(G_CCMUX_##a0, G_CCMUX_##c0, \ - G_ACMUX_##Aa0, G_ACMUX_##Ac0) | \ - GCCc1w0(G_CCMUX_##a1, G_CCMUX_##c1), 0, 24), \ - (unsigned int)(GCCc0w1(G_CCMUX_##b0, G_CCMUX_##d0, \ - G_ACMUX_##Ab0, G_ACMUX_##Ad0) | \ - GCCc1w1(G_CCMUX_##b1, G_ACMUX_##Aa1, \ - G_ACMUX_##Ac1, G_CCMUX_##d1, \ - G_ACMUX_##Ab1, G_ACMUX_##Ad1)) \ -}} +#define gsDPSetCombineLERP(a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \ + { \ + { \ + _SHIFTL(G_SETCOMBINE, 24, 8) \ + | _SHIFTL(GCCc0w0(G_CCMUX_##a0, G_CCMUX_##c0, G_ACMUX_##Aa0, G_ACMUX_##Ac0) \ + | GCCc1w0(G_CCMUX_##a1, G_CCMUX_##c1), \ + 0, 24), \ + (unsigned int)(GCCc0w1(G_CCMUX_##b0, G_CCMUX_##d0, G_ACMUX_##Ab0, G_ACMUX_##Ad0) \ + | GCCc1w1(G_CCMUX_##b1, G_ACMUX_##Aa1, G_ACMUX_##Ac1, G_CCMUX_##d1, G_ACMUX_##Ab1, \ + G_ACMUX_##Ad1)) \ + } \ + } /* * SetCombineMode macros are NOT redunant. It allow the C preprocessor @@ -3104,79 +2922,63 @@ typedef union { * TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0) */ -#define gDPSetCombineMode(pkt, a, b) gDPSetCombineLERP(pkt, a, b) -#define gsDPSetCombineMode(a, b) gsDPSetCombineLERP(a, b) +#define gDPSetCombineMode(pkt, a, b) gDPSetCombineLERP(pkt, a, b) +#define gsDPSetCombineMode(a, b) gsDPSetCombineLERP(a, b) -#define gDPSetColor(pkt, c, d) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(c, 24, 8); \ - _g->words.w1 = (unsigned int)(d); \ -} +#define gDPSetColor(pkt, c, d) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(c, 24, 8); \ + _g->words.w1 = (unsigned int)(d); \ + } -#define gsDPSetColor(c, d) \ -{{ \ - _SHIFTL(c, 24, 8), (unsigned int)(d) \ -}} +#define gsDPSetColor(c, d) \ + { \ + { \ + _SHIFTL(c, 24, 8), (unsigned int)(d) \ + } \ + } -#define DPRGBColor(pkt, cmd, r, g, b, a) \ - gDPSetColor(pkt, cmd, \ - (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | \ - _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8))) -#define sDPRGBColor(cmd, r, g, b, a) \ - gsDPSetColor(cmd, \ - (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | \ - _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8))) +#define DPRGBColor(pkt, cmd, r, g, b, a) \ + gDPSetColor(pkt, cmd, (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8))) +#define sDPRGBColor(cmd, r, g, b, a) \ + gsDPSetColor(cmd, (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8))) -#define gDPSetEnvColor(pkt, r, g, b, a) \ - DPRGBColor(pkt, G_SETENVCOLOR, r,g,b,a) -#define gsDPSetEnvColor(r, g, b, a) \ - sDPRGBColor(G_SETENVCOLOR, r,g,b,a) -#define gDPSetBlendColor(pkt, r, g, b, a) \ - DPRGBColor(pkt, G_SETBLENDCOLOR, r,g,b,a) -#define gsDPSetBlendColor(r, g, b, a) \ - sDPRGBColor(G_SETBLENDCOLOR, r,g,b,a) -#define gDPSetFogColor(pkt, r, g, b, a) \ - DPRGBColor(pkt, G_SETFOGCOLOR, r,g,b,a) -#define gsDPSetFogColor(r, g, b, a) \ - sDPRGBColor(G_SETFOGCOLOR, r,g,b,a) -#define gDPSetFillColor(pkt, d) \ - gDPSetColor(pkt, G_SETFILLCOLOR, (d)) -#define gsDPSetFillColor(d) \ - gsDPSetColor(G_SETFILLCOLOR, (d)) +#define gDPSetEnvColor(pkt, r, g, b, a) DPRGBColor(pkt, G_SETENVCOLOR, r, g, b, a) +#define gsDPSetEnvColor(r, g, b, a) sDPRGBColor(G_SETENVCOLOR, r, g, b, a) +#define gDPSetBlendColor(pkt, r, g, b, a) DPRGBColor(pkt, G_SETBLENDCOLOR, r, g, b, a) +#define gsDPSetBlendColor(r, g, b, a) sDPRGBColor(G_SETBLENDCOLOR, r, g, b, a) +#define gDPSetFogColor(pkt, r, g, b, a) DPRGBColor(pkt, G_SETFOGCOLOR, r, g, b, a) +#define gsDPSetFogColor(r, g, b, a) sDPRGBColor(G_SETFOGCOLOR, r, g, b, a) +#define gDPSetFillColor(pkt, d) gDPSetColor(pkt, G_SETFILLCOLOR, (d)) +#define gsDPSetFillColor(d) gsDPSetColor(G_SETFILLCOLOR, (d)) -#define gDPSetPrimDepth(pkt, z, dz) \ - gDPSetColor(pkt, G_SETPRIMDEPTH, \ - _SHIFTL(z, 16, 16) | _SHIFTL(dz, 0, 16)) -#define gsDPSetPrimDepth(z, dz) \ - gsDPSetColor(G_SETPRIMDEPTH, _SHIFTL(z, 16, 16) | \ - _SHIFTL(dz, 0, 16)) +#define gDPSetPrimDepth(pkt, z, dz) gDPSetColor(pkt, G_SETPRIMDEPTH, _SHIFTL(z, 16, 16) | _SHIFTL(dz, 0, 16)) +#define gsDPSetPrimDepth(z, dz) gsDPSetColor(G_SETPRIMDEPTH, _SHIFTL(z, 16, 16) | _SHIFTL(dz, 0, 16)) -#define gDPSetPrimColor(pkt, m, l, r, g, b, a) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_SETPRIMCOLOR, 24, 8) | \ - _SHIFTL(m, 8, 8) | _SHIFTL(l, 0, 8)); \ - _g->words.w1 = (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | \ - _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8)); \ -} +#define gDPSetPrimColor(pkt, m, l, r, g, b, a) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_SETPRIMCOLOR, 24, 8) | _SHIFTL(m, 8, 8) | _SHIFTL(l, 0, 8)); \ + _g->words.w1 = (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8)); \ + } -#define gsDPSetPrimColor(m, l, r, g, b, a) \ -{{ \ - (_SHIFTL(G_SETPRIMCOLOR, 24, 8) | _SHIFTL(m, 8, 8) | \ - _SHIFTL(l, 0, 8)), \ - (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | _SHIFTL(b, 8, 8) | \ - _SHIFTL(a, 0, 8)) \ -}} +#define gsDPSetPrimColor(m, l, r, g, b, a) \ + { \ + { \ + (_SHIFTL(G_SETPRIMCOLOR, 24, 8) | _SHIFTL(m, 8, 8) | _SHIFTL(l, 0, 8)), \ + (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8)) \ + } \ + } /* * gDPSetOtherMode (This is for expert user.) * * This command makes all othermode parameters set. * Do not use this command in the same DL with another g*SPSetOtherMode DLs. - * + * * [Usage] * gDPSetOtherMode(pkt, modeA, modeB) * @@ -3199,19 +3001,20 @@ typedef union { * * modeB = G_AC_* | G_ZS_* | G_RM_* | G_RM_*2; */ -#define gDPSetOtherMode(pkt, mode0, mode1) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_RDPSETOTHERMODE,24,8)|_SHIFTL(mode0,0,24);\ - _g->words.w1 = (unsigned int)(mode1); \ -} +#define gDPSetOtherMode(pkt, mode0, mode1) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_RDPSETOTHERMODE, 24, 8) | _SHIFTL(mode0, 0, 24); \ + _g->words.w1 = (unsigned int)(mode1); \ + } -#define gsDPSetOtherMode(mode0, mode1) \ -{{ \ - _SHIFTL(G_RDPSETOTHERMODE,24,8)|_SHIFTL(mode0,0,24), \ - (unsigned int)(mode1) \ -}} +#define gsDPSetOtherMode(mode0, mode1) \ + { \ + { \ + _SHIFTL(G_RDPSETOTHERMODE, 24, 8) | _SHIFTL(mode0, 0, 24), (unsigned int)(mode1) \ + } \ + } /* * Texturing macros @@ -3219,23 +3022,22 @@ typedef union { /* These are also defined defined above for Sprite Microcode */ -#define G_TX_LOADTILE 7 -#define G_TX_RENDERTILE 0 - -#define G_TX_NOMIRROR 0 -#define G_TX_WRAP 0 -#define G_TX_MIRROR 0x1 -#define G_TX_CLAMP 0x2 -#define G_TX_NOMASK 0 -#define G_TX_NOLOD 0 +#define G_TX_LOADTILE 7 +#define G_TX_RENDERTILE 0 +#define G_TX_NOMIRROR 0 +#define G_TX_WRAP 0 +#define G_TX_MIRROR 0x1 +#define G_TX_CLAMP 0x2 +#define G_TX_NOMASK 0 +#define G_TX_NOLOD 0 #ifndef MAX -#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif #ifndef MIN -#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif /* * Dxt is the inverse of the number of 64-bit words in a line of @@ -3245,7 +3047,7 @@ typedef union { * this. The 4b macros are a special case since 4-bit textures * are loaded as 8-bit textures. Dxt is fixed point 1.11. RJM */ -#define G_TX_DXT_FRAC 11 +#define G_TX_DXT_FRAC 11 /* * For RCP 2.0, the maximum number of texels that can be loaded @@ -3258,70 +3060,57 @@ typedef union { * tile manipulation yourself. RJM. */ #ifdef _HW_VERSION_1 -#define G_TX_LDBLK_MAX_TXL 4095 +#define G_TX_LDBLK_MAX_TXL 4095 #else -#define G_TX_LDBLK_MAX_TXL 2047 +#define G_TX_LDBLK_MAX_TXL 2047 #endif /* _HW_VERSION_1 */ -#define TXL2WORDS(txls, b_txl) MAX(1, ((txls)*(b_txl)/8)) -#define CALC_DXT(width, b_txl) \ - (((1 << G_TX_DXT_FRAC) + TXL2WORDS(width, b_txl) - 1) / \ - TXL2WORDS(width, b_txl)) +#define TXL2WORDS(txls, b_txl) MAX(1, ((txls) * (b_txl) / 8)) +#define CALC_DXT(width, b_txl) (((1 << G_TX_DXT_FRAC) + TXL2WORDS(width, b_txl) - 1) / TXL2WORDS(width, b_txl)) -#define TXL2WORDS_4b(txls) MAX(1, ((txls)/16)) -#define CALC_DXT_4b(width) \ - (((1 << G_TX_DXT_FRAC) + TXL2WORDS_4b(width) - 1) / \ - TXL2WORDS_4b(width)) +#define TXL2WORDS_4b(txls) MAX(1, ((txls) / 16)) +#define CALC_DXT_4b(width) (((1 << G_TX_DXT_FRAC) + TXL2WORDS_4b(width) - 1) / TXL2WORDS_4b(width)) -#define gDPLoadTileGeneric(pkt, c, tile, uls, ult, lrs, lrt) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(c, 24, 8) | _SHIFTL(uls, 12, 12) | \ - _SHIFTL(ult, 0, 12); \ - _g->words.w1 = _SHIFTL(tile, 24, 3) | _SHIFTL(lrs, 12, 12) | \ - _SHIFTL(lrt, 0, 12); \ -} +#define gDPLoadTileGeneric(pkt, c, tile, uls, ult, lrs, lrt) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(c, 24, 8) | _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12); \ + _g->words.w1 = _SHIFTL(tile, 24, 3) | _SHIFTL(lrs, 12, 12) | _SHIFTL(lrt, 0, 12); \ + } -#define gsDPLoadTileGeneric(c, tile, uls, ult, lrs, lrt) \ -{{ \ - _SHIFTL(c, 24, 8) | _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12), \ - _SHIFTL(tile, 24, 3) | _SHIFTL(lrs, 12, 12) | _SHIFTL(lrt, 0, 12)\ -}} +#define gsDPLoadTileGeneric(c, tile, uls, ult, lrs, lrt) \ + { \ + { \ + _SHIFTL(c, 24, 8) | _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12), \ + _SHIFTL(tile, 24, 3) | _SHIFTL(lrs, 12, 12) | _SHIFTL(lrt, 0, 12) \ + } \ + } -#define gDPSetTileSize(pkt, t, uls, ult, lrs, lrt) \ - gDPLoadTileGeneric(pkt, G_SETTILESIZE, t, uls, ult, lrs, lrt) -#define gsDPSetTileSize(t, uls, ult, lrs, lrt) \ - gsDPLoadTileGeneric(G_SETTILESIZE, t, uls, ult, lrs, lrt) -#define gDPLoadTile(pkt, t, uls, ult, lrs, lrt) \ - gDPLoadTileGeneric(pkt, G_LOADTILE, t, uls, ult, lrs, lrt) -#define gsDPLoadTile(t, uls, ult, lrs, lrt) \ - gsDPLoadTileGeneric(G_LOADTILE, t, uls, ult, lrs, lrt) +#define gDPSetTileSize(pkt, t, uls, ult, lrs, lrt) gDPLoadTileGeneric(pkt, G_SETTILESIZE, t, uls, ult, lrs, lrt) +#define gsDPSetTileSize(t, uls, ult, lrs, lrt) gsDPLoadTileGeneric(G_SETTILESIZE, t, uls, ult, lrs, lrt) +#define gDPLoadTile(pkt, t, uls, ult, lrs, lrt) gDPLoadTileGeneric(pkt, G_LOADTILE, t, uls, ult, lrs, lrt) +#define gsDPLoadTile(t, uls, ult, lrs, lrt) gsDPLoadTileGeneric(G_LOADTILE, t, uls, ult, lrs, lrt) -#define gDPSetTile(pkt, fmt, siz, line, tmem, tile, palette, cmt, \ - maskt, shiftt, cms, masks, shifts) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_SETTILE, 24, 8) | _SHIFTL(fmt, 21, 3) |\ - _SHIFTL(siz, 19, 2) | _SHIFTL(line, 9, 9) | \ - _SHIFTL(tmem, 0, 9); \ - _g->words.w1 = _SHIFTL(tile, 24, 3) | _SHIFTL(palette, 20, 4) | \ - _SHIFTL(cmt, 18, 2) | _SHIFTL(maskt, 14, 4) | \ - _SHIFTL(shiftt, 10, 4) |_SHIFTL(cms, 8, 2) | \ - _SHIFTL(masks, 4, 4) | _SHIFTL(shifts, 0, 4); \ -} +#define gDPSetTile(pkt, fmt, siz, line, tmem, tile, palette, cmt, maskt, shiftt, cms, masks, shifts) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_SETTILE, 24, 8) | _SHIFTL(fmt, 21, 3) | _SHIFTL(siz, 19, 2) | _SHIFTL(line, 9, 9) \ + | _SHIFTL(tmem, 0, 9); \ + _g->words.w1 = _SHIFTL(tile, 24, 3) | _SHIFTL(palette, 20, 4) | _SHIFTL(cmt, 18, 2) | _SHIFTL(maskt, 14, 4) \ + | _SHIFTL(shiftt, 10, 4) | _SHIFTL(cms, 8, 2) | _SHIFTL(masks, 4, 4) | _SHIFTL(shifts, 0, 4); \ + } -#define gsDPSetTile(fmt, siz, line, tmem, tile, palette, cmt, \ - maskt, shiftt, cms, masks, shifts) \ -{{ \ - (_SHIFTL(G_SETTILE, 24, 8) | _SHIFTL(fmt, 21, 3) | \ - _SHIFTL(siz, 19, 2) | _SHIFTL(line, 9, 9) | _SHIFTL(tmem, 0, 9)),\ - (_SHIFTL(tile, 24, 3) | _SHIFTL(palette, 20, 4) | \ - _SHIFTL(cmt, 18, 2) | _SHIFTL(maskt, 14, 4) | \ - _SHIFTL(shiftt, 10, 4) | _SHIFTL(cms, 8, 2) | \ - _SHIFTL(masks, 4, 4) | _SHIFTL(shifts, 0, 4)) \ -}} +#define gsDPSetTile(fmt, siz, line, tmem, tile, palette, cmt, maskt, shiftt, cms, masks, shifts) \ + { \ + { \ + (_SHIFTL(G_SETTILE, 24, 8) | _SHIFTL(fmt, 21, 3) | _SHIFTL(siz, 19, 2) | _SHIFTL(line, 9, 9) \ + | _SHIFTL(tmem, 0, 9)), \ + (_SHIFTL(tile, 24, 3) | _SHIFTL(palette, 20, 4) | _SHIFTL(cmt, 18, 2) | _SHIFTL(maskt, 14, 4) \ + | _SHIFTL(shiftt, 10, 4) | _SHIFTL(cms, 8, 2) | _SHIFTL(masks, 4, 4) | _SHIFTL(shifts, 0, 4)) \ + } \ + } /* * For RCP 2.0, the maximum number of texels that can be loaded @@ -3333,592 +3122,429 @@ typedef union { * the g*DPLoadBlock macros directly, you will need to handle this * tile manipulation yourself. RJM. */ -#define gDPLoadBlock(pkt, tile, uls, ult, lrs, dxt) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_LOADBLOCK, 24, 8) | \ - _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12)); \ - _g->words.w1 = (_SHIFTL(tile, 24, 3) | \ - _SHIFTL((MIN(lrs,G_TX_LDBLK_MAX_TXL)), 12, 12) |\ - _SHIFTL(dxt, 0, 12)); \ -} +#define gDPLoadBlock(pkt, tile, uls, ult, lrs, dxt) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_LOADBLOCK, 24, 8) | _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12)); \ + _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL((MIN(lrs, G_TX_LDBLK_MAX_TXL)), 12, 12) | _SHIFTL(dxt, 0, 12)); \ + } -#define gsDPLoadBlock(tile, uls, ult, lrs, dxt) \ -{{ \ - (_SHIFTL(G_LOADBLOCK, 24, 8) | _SHIFTL(uls, 12, 12) | \ - _SHIFTL(ult, 0, 12)), \ - (_SHIFTL(tile, 24, 3) | \ - _SHIFTL((MIN(lrs,G_TX_LDBLK_MAX_TXL)), 12, 12) | \ - _SHIFTL(dxt, 0, 12)) \ -}} +#define gsDPLoadBlock(tile, uls, ult, lrs, dxt) \ + { \ + { \ + (_SHIFTL(G_LOADBLOCK, 24, 8) | _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12)), \ + (_SHIFTL(tile, 24, 3) | _SHIFTL((MIN(lrs, G_TX_LDBLK_MAX_TXL)), 12, 12) | _SHIFTL(dxt, 0, 12)) \ + } \ + } -#define gDPLoadTLUTCmd(pkt, tile, count) \ -{ \ - Gfx *_g = (Gfx *)pkt; \ - \ - _g->words.w0 = _SHIFTL(G_LOADTLUT, 24, 8); \ - _g->words.w1 = _SHIFTL((tile), 24, 3) | _SHIFTL((count), 14, 10);\ -} +#define gDPLoadTLUTCmd(pkt, tile, count) \ + { \ + Gfx* _g = (Gfx*)pkt; \ + \ + _g->words.w0 = _SHIFTL(G_LOADTLUT, 24, 8); \ + _g->words.w1 = _SHIFTL((tile), 24, 3) | _SHIFTL((count), 14, 10); \ + } -#define gsDPLoadTLUTCmd(tile, count) \ -{{ \ - _SHIFTL(G_LOADTLUT, 24, 8), \ - _SHIFTL((tile), 24, 3) | _SHIFTL((count), 14, 10) \ -}} +#define gsDPLoadTLUTCmd(tile, count) \ + { \ + { \ + _SHIFTL(G_LOADTLUT, 24, 8), _SHIFTL((tile), 24, 3) | _SHIFTL((count), 14, 10) \ + } \ + } -#define gDPLoadTextureBlock(pkt, timg, fmt, siz, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ - gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \ - 0 , cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT) -1, \ - CALC_DXT(width, siz##_BYTES)); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, siz, \ - (((width) * siz##_LINE_BYTES)+7)>>3, 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define gDPLoadTextureBlock(pkt, timg, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ + gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, \ + CALC_DXT(width, siz##_BYTES)); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES) + 7) >> 3, 0, G_TX_RENDERTILE, pal, cmt, maskt, \ + shiftt, cms, masks, shifts); \ + gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } -#define gDPLoadTextureBlockYuv(pkt, timg, fmt, siz, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ - gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \ - 0 , cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT) -1, \ - CALC_DXT(width, siz##_BYTES)); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, siz, \ - (((width) * 1)+7)>>3, 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define gDPLoadTextureBlockYuv(pkt, timg, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ + gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, \ + CALC_DXT(width, siz##_BYTES)); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, siz, (((width) * 1) + 7) >> 3, 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ + shifts); \ + gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } /* Load fix rww 27jun95 */ /* The S at the end means odd lines are already word Swapped */ -#define gDPLoadTextureBlockS(pkt, timg, fmt, siz, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ - gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \ - 0 , cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,0); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, siz, \ - (((width) * siz##_LINE_BYTES)+7)>>3, 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define gDPLoadTextureBlockS(pkt, timg, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ + gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, 0); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES) + 7) >> 3, 0, G_TX_RENDERTILE, pal, cmt, maskt, \ + shiftt, cms, masks, shifts); \ + gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } -/* +/* * Allow tmem address and render tile to be specified. - * The S at the end means odd lines are already word Swapped + * The S at the end means odd lines are already word Swapped */ -#define gDPLoadMultiBlockS(pkt, timg, tmem, rtile, fmt, siz, width, \ - height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ - gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \ - 0 , cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,0); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, siz, \ - (((width) * siz##_LINE_BYTES)+7)>>3, tmem, \ - rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, rtile, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define gDPLoadMultiBlockS(pkt, timg, tmem, rtile, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, \ + shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ + gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, 0); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES) + 7) >> 3, tmem, rtile, pal, cmt, maskt, shiftt, cms, \ + masks, shifts); \ + gDPSetTileSize(pkt, rtile, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } - -#define gDPLoadTextureBlockYuvS(pkt, timg, fmt, siz, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ - gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \ - 0 , cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,0); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, siz, \ - (((width) * 1)+7)>>3, 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define gDPLoadTextureBlockYuvS(pkt, timg, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ + gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, 0); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, siz, (((width) * 1) + 7) >> 3, 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ + shifts); \ + gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } /* * allows tmem address to be specified */ -#define _gDPLoadTextureBlock(pkt, timg, tmem, fmt, siz, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ - gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \ - 0, cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ - CALC_DXT(width, siz##_BYTES)); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES)+7)>>3, \ - tmem, G_TX_RENDERTILE, pal, cmt, \ - maskt, shiftt, cms, masks, shifts); \ - gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define _gDPLoadTextureBlock(pkt, timg, tmem, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ + gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, \ + CALC_DXT(width, siz##_BYTES)); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES) + 7) >> 3, tmem, G_TX_RENDERTILE, pal, cmt, maskt, \ + shiftt, cms, masks, shifts); \ + gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } /* * allows tmem address and render tile to be specified */ -#define _gDPLoadTextureBlockTile(pkt, timg, tmem, rtile, fmt, siz, width, \ - height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ - gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0,\ - cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ - CALC_DXT(width, siz##_BYTES)); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES)+7)>>3, \ - tmem, rtile, pal, cmt, \ - maskt, shiftt, cms, masks, shifts); \ - gDPSetTileSize(pkt, rtile, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define _gDPLoadTextureBlockTile(pkt, timg, tmem, rtile, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, \ + shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ + gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, \ + CALC_DXT(width, siz##_BYTES)); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES) + 7) >> 3, tmem, rtile, pal, cmt, maskt, shiftt, cms, \ + masks, shifts); \ + gDPSetTileSize(pkt, rtile, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } /* * allows tmem address and render tile to be specified */ -#define gDPLoadMultiBlock(pkt, timg, tmem, rtile, fmt, siz, width, \ - height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ - gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0,\ - cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ - CALC_DXT(width, siz##_BYTES)); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES)+7)>>3, \ - tmem, rtile, pal, cmt, \ - maskt, shiftt, cms, masks, shifts); \ - gDPSetTileSize(pkt, rtile, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define gDPLoadMultiBlock(pkt, timg, tmem, rtile, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, \ + shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ + gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, \ + CALC_DXT(width, siz##_BYTES)); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES) + 7) >> 3, tmem, rtile, pal, cmt, maskt, shiftt, cms, \ + masks, shifts); \ + gDPSetTileSize(pkt, rtile, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } -#define gsDPLoadTextureBlock(timg, fmt, siz, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ - gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, 0, \ - G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, \ - masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ - CALC_DXT(width, siz##_BYTES)), \ - gsDPPipeSync(), \ - gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES)+7)>>3), 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define gsDPLoadTextureBlock(timg, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + \ + gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ + gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), \ + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, \ + CALC_DXT(width, siz##_BYTES)), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, \ + cms, masks, shifts), \ + gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) /* Here is the static form of the pre-swapped texture block loading */ /* See gDPLoadTextureBlockS() for reference. Basically, just don't calculate DxT, use 0 */ -#define gsDPLoadTextureBlockS(timg, fmt, siz, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ - gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0 , \ - cmt, maskt,shiftt, cms, masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, 0 ),\ - gsDPPipeSync(), \ - gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES)+7)>>3), 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define gsDPLoadTextureBlockS(timg, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + \ + gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ + gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, 0), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, \ + cms, masks, shifts), \ + gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) /* * Allow tmem address to be specified */ -#define _gsDPLoadTextureBlock(timg, tmem, fmt, siz, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ - gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \ - 0 , cmt, maskt, shiftt, cms, masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ - CALC_DXT(width, siz##_BYTES)), \ - gsDPPipeSync(), \ - gsDPSetTile(fmt, siz, \ - ((((width) * siz##_LINE_BYTES)+7)>>3), tmem, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) - +#define _gsDPLoadTextureBlock(timg, tmem, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + \ + gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ + gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), \ + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, \ + CALC_DXT(width, siz##_BYTES)), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES) + 7) >> 3), tmem, G_TX_RENDERTILE, pal, cmt, maskt, \ + shiftt, cms, masks, shifts), \ + gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) /* * Allow tmem address and render_tile to be specified */ -#define _gsDPLoadTextureBlockTile(timg, tmem, rtile, fmt, siz, width, \ - height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ - gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \ - 0 , cmt, maskt, shiftt, cms, masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ - CALC_DXT(width, siz##_BYTES)), \ - gsDPPipeSync(), \ - gsDPSetTile(fmt, siz, \ - ((((width) * siz##_LINE_BYTES)+7)>>3), tmem, \ - rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(rtile, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) - +#define _gsDPLoadTextureBlockTile(timg, tmem, rtile, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, \ + shiftt) \ + \ + gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ + gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), \ + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, \ + CALC_DXT(width, siz##_BYTES)), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES) + 7) >> 3), tmem, rtile, pal, cmt, maskt, shiftt, cms, \ + masks, shifts), \ + gsDPSetTileSize(rtile, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, ((height) - 1) << G_TEXTURE_IMAGE_FRAC) /* * Allow tmem address and render_tile to be specified, useful when loading * mutilple tiles at a time. */ -#define gsDPLoadMultiBlock(timg, tmem, rtile, fmt, siz, width, \ - height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ - gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \ - 0 , cmt, maskt, shiftt, cms, masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ - CALC_DXT(width, siz##_BYTES)), \ - gsDPPipeSync(), \ - gsDPSetTile(fmt, siz, \ - ((((width) * siz##_LINE_BYTES)+7)>>3), tmem, \ - rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(rtile, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define gsDPLoadMultiBlock(timg, tmem, rtile, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + \ + gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ + gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), \ + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, \ + CALC_DXT(width, siz##_BYTES)), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES) + 7) >> 3), tmem, rtile, pal, cmt, maskt, shiftt, cms, \ + masks, shifts), \ + gsDPSetTileSize(rtile, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, ((height) - 1) << G_TEXTURE_IMAGE_FRAC) -/* +/* * Allows tmem and render tile to be specified. Useful when loading * several tiles at a time. * * Here is the static form of the pre-swapped texture block loading * See gDPLoadTextureBlockS() for reference. Basically, just don't - * calculate DxT, use 0 + * calculate DxT, use 0 */ -#define gsDPLoadMultiBlockS(timg, tmem, rtile, fmt, siz, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ - gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0 , \ - cmt, maskt,shiftt, cms, masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ - (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, 0 ),\ - gsDPPipeSync(), \ - gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES)+7)>>3), tmem,\ - rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(rtile, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define gsDPLoadMultiBlockS(timg, tmem, rtile, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + \ + gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ + gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width) * (height) + siz##_INCR) >> siz##_SHIFT) - 1, 0), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES) + 7) >> 3), tmem, rtile, pal, cmt, maskt, shiftt, cms, \ + masks, shifts), \ + gsDPSetTileSize(rtile, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, ((height) - 1) << G_TEXTURE_IMAGE_FRAC) - -#define gDPLoadTextureBlock_4b(pkt, timg, fmt, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, \ - cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height)+3)>>2)-1, \ - CALC_DXT_4b(width)); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define gDPLoadTextureBlock_4b(pkt, timg, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + 3) >> 2) - 1, CALC_DXT_4b(width)); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width) >> 1) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, \ + cms, masks, shifts); \ + gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } /* Load fix rww 27jun95 */ /* The S at the end means odd lines are already word Swapped */ -#define gDPLoadTextureBlock_4bS(pkt, timg, fmt, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, \ - cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height)+3)>>2)-1, 0 ); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define gDPLoadTextureBlock_4bS(pkt, timg, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + 3) >> 2) - 1, 0); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width) >> 1) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, \ + cms, masks, shifts); \ + gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } /* * 4-bit load block. Useful when loading multiple tiles */ -#define gDPLoadMultiBlock_4b(pkt, timg, tmem, rtile, fmt, width, height,\ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, \ - cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height)+3)>>2)-1, \ - CALC_DXT_4b(width)); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ - rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, rtile, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define gDPLoadMultiBlock_4b(pkt, timg, tmem, rtile, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + 3) >> 2) - 1, CALC_DXT_4b(width)); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width) >> 1) + 7) >> 3), tmem, rtile, pal, cmt, maskt, shiftt, cms, \ + masks, shifts); \ + gDPSetTileSize(pkt, rtile, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } /* - * 4-bit load block. Allows tmem and render tile to be specified. Useful when + * 4-bit load block. Allows tmem and render tile to be specified. Useful when * loading multiple tiles. The S means odd lines are already word swapped. */ -#define gDPLoadMultiBlock_4bS(pkt, timg, tmem, rtile, fmt, width, height,\ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, \ - cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height)+3)>>2)-1, 0 ); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ - rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, rtile, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define gDPLoadMultiBlock_4bS(pkt, timg, tmem, rtile, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + 3) >> 2) - 1, 0); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width) >> 1) + 7) >> 3), tmem, rtile, pal, cmt, maskt, shiftt, cms, \ + masks, shifts); \ + gDPSetTileSize(pkt, rtile, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } +#define _gDPLoadTextureBlock_4b(pkt, timg, tmem, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + { \ + gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width) * (height) + 3) >> 2) - 1, CALC_DXT_4b(width)); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width) >> 1) + 7) >> 3), tmem, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, \ + cms, masks, shifts); \ + gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) \ + } -#define _gDPLoadTextureBlock_4b(pkt, timg, tmem, fmt, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, \ - cmt, maskt, shiftt, cms, masks, shifts); \ - gDPLoadSync(pkt); \ - gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ - (((width)*(height)+3)>>2)-1, \ - CALC_DXT_4b(width)); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ -} +#define gsDPLoadTextureBlock_4b(timg, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + \ + gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ + gsDPSetTile(fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width) * (height) + 3) >> 2) - 1, CALC_DXT_4b(width)), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width) >> 1) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, \ + masks, shifts), \ + gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) -#define gsDPLoadTextureBlock_4b(timg, fmt, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ - gsDPSetTile(fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0 , cmt, \ - maskt, shiftt, cms, masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, \ - CALC_DXT_4b(width)), \ - gsDPPipeSync(), \ - gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) - -#define gsDPLoadTextureBlock_4bS(timg, fmt, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ - gsDPSetTile(fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0 , cmt, \ - maskt, shiftt, cms, masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1,0),\ - gsDPPipeSync(), \ - gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define gsDPLoadTextureBlock_4bS(timg, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + \ + gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ + gsDPSetTile(fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width) * (height) + 3) >> 2) - 1, 0), gsDPPipeSync(), \ + gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width) >> 1) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, \ + masks, shifts), \ + gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) /* * 4-bit load block. Allows tmem address and render tile to be specified. * Useful when loading multiple tiles. */ -#define gsDPLoadMultiBlock_4b(timg, tmem, rtile, fmt, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ - gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt, \ - maskt, shiftt, cms, masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, \ - CALC_DXT_4b(width)), \ - gsDPPipeSync(), \ - gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ - rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(rtile, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) - +#define gsDPLoadMultiBlock_4b(timg, tmem, rtile, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + \ + gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ + gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width) * (height) + 3) >> 2) - 1, CALC_DXT_4b(width)), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width) >> 1) + 7) >> 3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, \ + shifts), \ + gsDPSetTileSize(rtile, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, ((height) - 1) << G_TEXTURE_IMAGE_FRAC) /* * 4-bit load block. Allows tmem address and render tile to be specified. * Useful when loading multiple tiles. S means odd lines are already swapped. */ -#define gsDPLoadMultiBlock_4bS(timg, tmem, rtile, fmt, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ - gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt, \ - maskt, shiftt, cms, masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1,0),\ - gsDPPipeSync(), \ - gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ - rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(rtile, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) - +#define gsDPLoadMultiBlock_4bS(timg, tmem, rtile, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + \ + gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ + gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width) * (height) + 3) >> 2) - 1, 0), gsDPPipeSync(), \ + gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width) >> 1) + 7) >> 3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, \ + shifts), \ + gsDPSetTileSize(rtile, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, ((height) - 1) << G_TEXTURE_IMAGE_FRAC) /* * Allows tmem address to be specified */ -#define _gsDPLoadTextureBlock_4b(timg, tmem, fmt, width, height, \ - pal, cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ - gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt, \ - maskt, shiftt, cms, masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, \ - CALC_DXT_4b(width)), \ - gsDPPipeSync(), \ - gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ - ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ - ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define _gsDPLoadTextureBlock_4b(timg, tmem, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ + \ + gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ + gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width) * (height) + 3) >> 2) - 1, CALC_DXT_4b(width)), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width) >> 1) + 7) >> 3), tmem, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, \ + cms, masks, shifts), \ + gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width) - 1) << G_TEXTURE_IMAGE_FRAC, \ + ((height) - 1) << G_TEXTURE_IMAGE_FRAC) #ifndef _HW_VERSION_1 -#define gDPLoadTextureTile(pkt, timg, fmt, siz, width, height, \ - uls, ult, lrs, lrt, pal, \ - cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, siz, width, timg); \ - gDPSetTile(pkt, fmt, siz, \ - (((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), 0, \ - G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPLoadSync(pkt); \ - gDPLoadTile( pkt, G_TX_LOADTILE, \ - (uls)<>3), 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, G_TX_RENDERTILE, \ - (uls)<> 3), 0, G_TX_LOADTILE, 0, cmt, \ + maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadTile(pkt, G_TX_LOADTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, siz, (((((lrs) - (uls) + 1) * siz##_LINE_BYTES) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, \ + maskt, shiftt, cms, masks, shifts); \ + gDPSetTileSize(pkt, G_TX_RENDERTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC) \ + } #else /******** WORKAROUND hw 1 load tile bug ********/ -#define gDPLoadTextureTile(pkt, timg, fmt, siz, width, height, \ - uls, ult, lrs, lrt, pal, \ - cms, cmt, masks, maskt, shifts, shiftt) \ - \ -{ \ - int _loadtile_i, _loadtile_nw; Gfx *_loadtile_temp = pkt; \ - guDPLoadTextureTile(_loadtile_temp, timg, fmt, siz, \ - width, height, \ - uls, ult, lrs, lrt, pal, \ - cms, cmt, masks, maskt, shifts, shiftt); \ - _loadtile_nw = guGetDPLoadTextureTileSz(ult, lrt) - 1; \ - for(_loadtile_i = 0; _loadtile_i < _loadtile_nw; _loadtile_i++) \ - pkt; \ -} +#define gDPLoadTextureTile(pkt, timg, fmt, siz, width, height, uls, ult, lrs, lrt, pal, cms, cmt, masks, maskt, \ + shifts, shiftt) \ + \ + { \ + int _loadtile_i, _loadtile_nw; \ + Gfx* _loadtile_temp = pkt; \ + guDPLoadTextureTile(_loadtile_temp, timg, fmt, siz, width, height, uls, ult, lrs, lrt, pal, cms, cmt, masks, \ + maskt, shifts, shiftt); \ + _loadtile_nw = guGetDPLoadTextureTileSz(ult, lrt) - 1; \ + for (_loadtile_i = 0; _loadtile_i < _loadtile_nw; _loadtile_i++) \ + pkt; \ + } #endif /* HW_VERSION_1 */ @@ -3926,199 +3552,125 @@ typedef union { * Load texture tile. Allows tmem address and render tile to be specified. * Useful for loading multiple tiles. */ -#define gDPLoadMultiTile(pkt, timg, tmem, rtile, fmt, siz, width, height,\ - uls, ult, lrs, lrt, pal, \ - cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, siz, width, timg); \ - gDPSetTile(pkt, fmt, siz, \ - (((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), tmem, \ - G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPLoadSync(pkt); \ - gDPLoadTile( pkt, G_TX_LOADTILE, \ - (uls)<>3), tmem, \ - rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, rtile, \ - (uls)<> 3), tmem, G_TX_LOADTILE, 0, cmt, \ + maskt, shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadTile(pkt, G_TX_LOADTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, siz, (((((lrs) - (uls) + 1) * siz##_LINE_BYTES) + 7) >> 3), tmem, rtile, pal, cmt, maskt, \ + shiftt, cms, masks, shifts); \ + gDPSetTileSize(pkt, rtile, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC) \ + } - -#define gsDPLoadTextureTile(timg, fmt, siz, width, height, \ - uls, ult, lrs, lrt, pal, \ - cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, siz, width, timg), \ - gsDPSetTile(fmt, siz, \ - (((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), 0, \ - G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPLoadSync(), \ - gsDPLoadTile( G_TX_LOADTILE, \ - (uls)<>3), 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\ - shifts), \ - gsDPSetTileSize(G_TX_RENDERTILE, \ - (uls)<> 3), 0, G_TX_LOADTILE, 0, cmt, maskt, \ + shiftt, cms, masks, shifts), \ + gsDPLoadSync(), \ + gsDPLoadTile(G_TX_LOADTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, siz, (((((lrs) - (uls) + 1) * siz##_LINE_BYTES) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, \ + maskt, shiftt, cms, masks, shifts), \ + gsDPSetTileSize(G_TX_RENDERTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC) /* * Load texture tile. Allows tmem address and render tile to be specified. * Useful for loading multiple tiles. */ -#define gsDPLoadMultiTile(timg, tmem, rtile, fmt, siz, width, height, \ - uls, ult, lrs, lrt, pal, \ - cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, siz, width, timg), \ - gsDPSetTile(fmt, siz, \ - (((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), \ - tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, \ - masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadTile( G_TX_LOADTILE, \ - (uls)<>3), \ - tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(rtile, \ - (uls)<> 3), tmem, G_TX_LOADTILE, 0, cmt, \ + maskt, shiftt, cms, masks, shifts), \ + gsDPLoadSync(), \ + gsDPLoadTile(G_TX_LOADTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, siz, (((((lrs) - (uls) + 1) * siz##_LINE_BYTES) + 7) >> 3), tmem, rtile, pal, cmt, maskt, \ + shiftt, cms, masks, shifts), \ + gsDPSetTileSize(rtile, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC) -#define gDPLoadTextureTile_4b(pkt, timg, fmt, width, height, \ - uls, ult, lrs, lrt, pal, \ - cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, G_IM_SIZ_8b, ((width)>>1), timg); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_8b, \ - (((((lrs)-(uls)+1)>>1)+7)>>3), 0, \ - G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPLoadSync(pkt); \ - gDPLoadTile( pkt, G_TX_LOADTILE, \ - (uls)<<(G_TEXTURE_IMAGE_FRAC-1), \ - (ult)<<(G_TEXTURE_IMAGE_FRAC), \ - (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), \ - (lrt)<<(G_TEXTURE_IMAGE_FRAC)); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_4b, \ - (((((lrs)-(uls)+1)>>1)+7)>>3), 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, \ - masks, shifts); \ - gDPSetTileSize(pkt, G_TX_RENDERTILE, \ - (uls)<> 1), timg); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_8b, (((((lrs) - (uls) + 1) >> 1) + 7) >> 3), 0, G_TX_LOADTILE, 0, cmt, maskt, \ + shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadTile(pkt, G_TX_LOADTILE, (uls) << (G_TEXTURE_IMAGE_FRAC - 1), (ult) << (G_TEXTURE_IMAGE_FRAC), \ + (lrs) << (G_TEXTURE_IMAGE_FRAC - 1), (lrt) << (G_TEXTURE_IMAGE_FRAC)); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_4b, (((((lrs) - (uls) + 1) >> 1) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, \ + maskt, shiftt, cms, masks, shifts); \ + gDPSetTileSize(pkt, G_TX_RENDERTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC) \ + } /* * Load texture tile. Allows tmem address and render tile to be specified. * Useful for loading multiple tiles. */ -#define gDPLoadMultiTile_4b(pkt, timg, tmem, rtile, fmt, width, height, \ - uls, ult, lrs, lrt, pal, \ - cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ - gDPSetTextureImage(pkt, fmt, G_IM_SIZ_8b, ((width)>>1), timg); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_8b, \ - (((((lrs)-(uls)+1)>>1)+7)>>3), tmem, \ - G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPLoadSync(pkt); \ - gDPLoadTile( pkt, G_TX_LOADTILE, \ - (uls)<<(G_TEXTURE_IMAGE_FRAC-1), \ - (ult)<<(G_TEXTURE_IMAGE_FRAC), \ - (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), \ - (lrt)<<(G_TEXTURE_IMAGE_FRAC)); \ - gDPPipeSync(pkt); \ - gDPSetTile(pkt, fmt, G_IM_SIZ_4b, \ - (((((lrs)-(uls)+1)>>1)+7)>>3), tmem, \ - rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts); \ - gDPSetTileSize(pkt, rtile, \ - (uls)<> 1), timg); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_8b, (((((lrs) - (uls) + 1) >> 1) + 7) >> 3), tmem, G_TX_LOADTILE, 0, cmt, maskt, \ + shiftt, cms, masks, shifts); \ + gDPLoadSync(pkt); \ + gDPLoadTile(pkt, G_TX_LOADTILE, (uls) << (G_TEXTURE_IMAGE_FRAC - 1), (ult) << (G_TEXTURE_IMAGE_FRAC), \ + (lrs) << (G_TEXTURE_IMAGE_FRAC - 1), (lrt) << (G_TEXTURE_IMAGE_FRAC)); \ + gDPPipeSync(pkt); \ + gDPSetTile(pkt, fmt, G_IM_SIZ_4b, (((((lrs) - (uls) + 1) >> 1) + 7) >> 3), tmem, rtile, pal, cmt, maskt, \ + shiftt, cms, masks, shifts); \ + gDPSetTileSize(pkt, rtile, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC) \ + } -#define gsDPLoadTextureTile_4b(timg, fmt, width, height, \ - uls, ult, lrs, lrt, pal, \ - cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, G_IM_SIZ_8b, ((width)>>1), timg), \ - gsDPSetTile(fmt, G_IM_SIZ_8b, (((((lrs)-(uls)+1)>>1)+7)>>3), 0, \ - G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPLoadSync(), \ - gsDPLoadTile( G_TX_LOADTILE, \ - (uls)<<(G_TEXTURE_IMAGE_FRAC-1), \ - (ult)<<(G_TEXTURE_IMAGE_FRAC), \ - (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), \ - (lrt)<<(G_TEXTURE_IMAGE_FRAC)), \ - gsDPPipeSync(), \ - gsDPSetTile(fmt, G_IM_SIZ_4b, (((((lrs)-(uls)+1)>>1)+7)>>3), 0, \ - G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(G_TX_RENDERTILE, \ - (uls)<> 1), timg), \ + gsDPSetTile(fmt, G_IM_SIZ_8b, (((((lrs) - (uls) + 1) >> 1) + 7) >> 3), 0, G_TX_LOADTILE, 0, cmt, maskt, \ + shiftt, cms, masks, shifts), \ + gsDPLoadSync(), \ + gsDPLoadTile(G_TX_LOADTILE, (uls) << (G_TEXTURE_IMAGE_FRAC - 1), (ult) << (G_TEXTURE_IMAGE_FRAC), \ + (lrs) << (G_TEXTURE_IMAGE_FRAC - 1), (lrt) << (G_TEXTURE_IMAGE_FRAC)), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, G_IM_SIZ_4b, (((((lrs) - (uls) + 1) >> 1) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, maskt, \ + shiftt, cms, masks, shifts), \ + gsDPSetTileSize(G_TX_RENDERTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC) /* * Load texture tile. Allows tmem address and render tile to be specified. * Useful for loading multiple tiles. */ -#define gsDPLoadMultiTile_4b(timg, tmem, rtile, fmt, width, height, \ - uls, ult, lrs, lrt, pal, \ - cms, cmt, masks, maskt, shifts, shiftt) \ - \ - gsDPSetTextureImage(fmt, G_IM_SIZ_8b, ((width)>>1), timg), \ - gsDPSetTile(fmt, G_IM_SIZ_8b, (((((lrs)-(uls)+1)>>1)+7)>>3), \ - tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, \ - masks, shifts), \ - gsDPLoadSync(), \ - gsDPLoadTile( G_TX_LOADTILE, \ - (uls)<<(G_TEXTURE_IMAGE_FRAC-1), \ - (ult)<<(G_TEXTURE_IMAGE_FRAC), \ - (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), \ - (lrt)<<(G_TEXTURE_IMAGE_FRAC)), \ - gsDPPipeSync(), \ - gsDPSetTile(fmt, G_IM_SIZ_4b, (((((lrs)-(uls)+1)>>1)+7)>>3), \ - tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, \ - shifts), \ - gsDPSetTileSize(rtile, \ - (uls)<> 1), timg), \ + gsDPSetTile(fmt, G_IM_SIZ_8b, (((((lrs) - (uls) + 1) >> 1) + 7) >> 3), tmem, G_TX_LOADTILE, 0, cmt, maskt, \ + shiftt, cms, masks, shifts), \ + gsDPLoadSync(), \ + gsDPLoadTile(G_TX_LOADTILE, (uls) << (G_TEXTURE_IMAGE_FRAC - 1), (ult) << (G_TEXTURE_IMAGE_FRAC), \ + (lrs) << (G_TEXTURE_IMAGE_FRAC - 1), (lrt) << (G_TEXTURE_IMAGE_FRAC)), \ + gsDPPipeSync(), \ + gsDPSetTile(fmt, G_IM_SIZ_4b, (((((lrs) - (uls) + 1) >> 1) + 7) >> 3), tmem, rtile, pal, cmt, maskt, shiftt, \ + cms, masks, shifts), \ + gsDPSetTileSize(rtile, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC) /* * Load a 16-entry palette (for 4-bit CI textures) @@ -4126,53 +3678,45 @@ typedef union { */ #ifndef _HW_VERSION_1 -#define gDPLoadTLUT_pal16(pkt, pal, dram) \ -{ \ - gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \ - gDPTileSync(pkt); \ - gDPSetTile(pkt, 0, 0, 0, (256+(((pal)&0xf)*16)), \ - G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); \ - gDPLoadSync(pkt); \ - gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 15); \ - gDPPipeSync(pkt) \ -} +#define gDPLoadTLUT_pal16(pkt, pal, dram) \ + { \ + gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \ + gDPTileSync(pkt); \ + gDPSetTile(pkt, 0, 0, 0, (256 + (((pal) & 0xf) * 16)), G_TX_LOADTILE, 0, 0, 0, 0, 0, 0, 0); \ + gDPLoadSync(pkt); \ + gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 15); \ + gDPPipeSync(pkt) \ + } #else /* **** WORKAROUND hardware 1 load_tlut bug ****** */ -#define gDPLoadTLUT_pal16(pkt, pal, dram) \ - \ - _gDPLoadTextureBlock(pkt, dram, (256+(((pal)&0xf)*16)), \ - G_IM_FMT_RGBA, G_IM_SIZ_16b, 4*16, 1, \ - pal, 0, 0, 0, 0, 0, 0) +#define gDPLoadTLUT_pal16(pkt, pal, dram) \ + \ + _gDPLoadTextureBlock(pkt, dram, (256 + (((pal) & 0xf) * 16)), G_IM_FMT_RGBA, G_IM_SIZ_16b, 4 * 16, 1, pal, 0, 0, \ + 0, 0, 0, 0) #endif /* _HW_VERSION_1 */ - /* * Load a 16-entry palette (for 4-bit CI textures) * Assumes a 16 entry tlut is being loaded, palette # is 0-15 */ #ifndef _HW_VERSION_1 -#define gsDPLoadTLUT_pal16(pal, dram) \ - \ - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), \ - gsDPTileSync(), \ - gsDPSetTile(0, 0, 0, (256+(((pal)&0xf)*16)), \ - G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0), \ - gsDPLoadSync(), \ - gsDPLoadTLUTCmd(G_TX_LOADTILE, 15), \ - gsDPPipeSync() +#define gsDPLoadTLUT_pal16(pal, dram) \ + \ + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), gsDPTileSync(), \ + gsDPSetTile(0, 0, 0, (256 + (((pal) & 0xf) * 16)), G_TX_LOADTILE, 0, 0, 0, 0, 0, 0, 0), gsDPLoadSync(), \ + gsDPLoadTLUTCmd(G_TX_LOADTILE, 15), gsDPPipeSync() #else /* **** WORKAROUND hardware 1 load_tlut bug ****** */ -#define gsDPLoadTLUT_pal16(pal, dram) \ - \ - _gsDPLoadTextureBlock(dram, (256+(((pal)&0xf)*16)), \ - G_IM_FMT_RGBA, G_IM_SIZ_16b, 4*16, 1, \ - pal, 0, 0, 0, 0, 0, 0) +#define gsDPLoadTLUT_pal16(pal, dram) \ + \ + _gsDPLoadTextureBlock(dram, (256 + (((pal) & 0xf) * 16)), G_IM_FMT_RGBA, G_IM_SIZ_16b, 4 * 16, 1, pal, 0, 0, 0, 0, \ + 0, 0) -#endif /* _HW_VERSION_1 */ +#endif /* _HW_VERSION_1 */ /* * Load a 256-entry palette (for 8-bit CI textures) @@ -4180,393 +3724,339 @@ typedef union { */ #ifndef _HW_VERSION_1 -#define gDPLoadTLUT_pal256(pkt, dram) \ -{ \ - gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \ - gDPTileSync(pkt); \ - gDPSetTile(pkt, 0, 0, 0, 256, \ - G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); \ - gDPLoadSync(pkt); \ - gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 255); \ - gDPPipeSync(pkt) \ -} +#define gDPLoadTLUT_pal256(pkt, dram) \ + { \ + gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \ + gDPTileSync(pkt); \ + gDPSetTile(pkt, 0, 0, 0, 256, G_TX_LOADTILE, 0, 0, 0, 0, 0, 0, 0); \ + gDPLoadSync(pkt); \ + gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 255); \ + gDPPipeSync(pkt) \ + } #else /* **** WORKAROUND hardware 1 load_tlut bug ****** */ -#define gDPLoadTLUT_pal256(pkt, dram) \ - \ - _gDPLoadTextureBlock(pkt, dram, 256, \ - G_IM_FMT_RGBA, G_IM_SIZ_16b, 4*256, 1, \ - 0, 0, 0, 0, 0, 0, 0) - +#define gDPLoadTLUT_pal256(pkt, dram) \ + \ + _gDPLoadTextureBlock(pkt, dram, 256, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4 * 256, 1, 0, 0, 0, 0, 0, 0, 0) #endif /* _HW_VERSION_1 */ - #ifndef _HW_VERSION_1 -#define gsDPLoadTLUT_pal256(dram) \ - \ - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), \ - gsDPTileSync(), \ - gsDPSetTile(0, 0, 0, 256, \ - G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0), \ - gsDPLoadSync(), \ - gsDPLoadTLUTCmd(G_TX_LOADTILE, 255), \ - gsDPPipeSync() - +#define gsDPLoadTLUT_pal256(dram) \ + \ + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), gsDPTileSync(), \ + gsDPSetTile(0, 0, 0, 256, G_TX_LOADTILE, 0, 0, 0, 0, 0, 0, 0), gsDPLoadSync(), \ + gsDPLoadTLUTCmd(G_TX_LOADTILE, 255), gsDPPipeSync() + #else /* **** WORKAROUND hardware 1 load_tlut bug ****** */ -#define gsDPLoadTLUT_pal256(dram) \ - \ - _gsDPLoadTextureBlock(dram, 256, \ - G_IM_FMT_RGBA, G_IM_SIZ_16b, 4*256, 1, \ - 0, 0, 0, 0, 0, 0, 0) +#define gsDPLoadTLUT_pal256(dram) \ + \ + _gsDPLoadTextureBlock(dram, 256, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4 * 256, 1, 0, 0, 0, 0, 0, 0, 0) #endif /* _HW_VERSION_1 */ - #ifndef _HW_VERSION_1 -#define gDPLoadTLUT(pkt, count, tmemaddr, dram) \ -{ \ - gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \ - gDPTileSync(pkt); \ - gDPSetTile(pkt, 0, 0, 0, tmemaddr, \ - G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); \ - gDPLoadSync(pkt); \ - gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, ((count)-1)); \ - gDPPipeSync(pkt); \ -} +#define gDPLoadTLUT(pkt, count, tmemaddr, dram) \ + { \ + gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \ + gDPTileSync(pkt); \ + gDPSetTile(pkt, 0, 0, 0, tmemaddr, G_TX_LOADTILE, 0, 0, 0, 0, 0, 0, 0); \ + gDPLoadSync(pkt); \ + gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, ((count) - 1)); \ + gDPPipeSync(pkt); \ + } #else /* **** WORKAROUND hardware 1 load_tlut bug ****** */ -#define gDPLoadTLUT(pkt, count, tmemaddr, dram) \ - \ - _gDPLoadTextureBlock(pkt, dram, tmemaddr, \ - G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, count, \ - 0, 0, 0, 0, 0, 0, 0) +#define gDPLoadTLUT(pkt, count, tmemaddr, dram) \ + \ + _gDPLoadTextureBlock(pkt, dram, tmemaddr, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, count, 0, 0, 0, 0, 0, 0, 0) #endif /* _HW_VERSION_1 */ - #ifndef _HW_VERSION_1 -#define gsDPLoadTLUT(count, tmemaddr, dram) \ - \ - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), \ - gsDPTileSync(), \ - gsDPSetTile(0, 0, 0, tmemaddr, \ - G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0), \ - gsDPLoadSync(), \ - gsDPLoadTLUTCmd(G_TX_LOADTILE, ((count)-1)), \ - gsDPPipeSync() +#define gsDPLoadTLUT(count, tmemaddr, dram) \ + \ + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), gsDPTileSync(), \ + gsDPSetTile(0, 0, 0, tmemaddr, G_TX_LOADTILE, 0, 0, 0, 0, 0, 0, 0), gsDPLoadSync(), \ + gsDPLoadTLUTCmd(G_TX_LOADTILE, ((count) - 1)), gsDPPipeSync() #else /* **** WORKAROUND hardware 1 load_tlut bug ****** */ -#define gsDPLoadTLUT(count, tmemaddr, dram) \ - \ - _gsDPLoadTextureBlock(dram, tmemaddr, \ - G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, count, \ - 0, 0, 0, 0, 0, 0, 0) +#define gsDPLoadTLUT(count, tmemaddr, dram) \ + \ + _gsDPLoadTextureBlock(dram, tmemaddr, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, count, 0, 0, 0, 0, 0, 0, 0) -#endif /* _HW_VERSION_1 */ +#endif /* _HW_VERSION_1 */ -#define gDPSetScissor(pkt, mode, ulx, uly, lrx, lry) \ -{ \ - Gfx *_g = (Gfx *)pkt; \ - \ - _g->words.w0 = _SHIFTL(G_SETSCISSOR, 24, 8) | \ - _SHIFTL((int)((float)(ulx)*4.0F), 12, 12) | \ - _SHIFTL((int)((float)(uly)*4.0F), 0, 12); \ - _g->words.w1 = _SHIFTL(mode, 24, 2) | \ - _SHIFTL((int)((float)(lrx)*4.0F), 12, 12) | \ - _SHIFTL((int)((float)(lry)*4.0F), 0, 12); \ -} +#define gDPSetScissor(pkt, mode, ulx, uly, lrx, lry) \ + { \ + Gfx* _g = (Gfx*)pkt; \ + \ + _g->words.w0 = _SHIFTL(G_SETSCISSOR, 24, 8) | _SHIFTL((int)((float)(ulx) * 4.0F), 12, 12) \ + | _SHIFTL((int)((float)(uly) * 4.0F), 0, 12); \ + _g->words.w1 = _SHIFTL(mode, 24, 2) | _SHIFTL((int)((float)(lrx) * 4.0F), 12, 12) \ + | _SHIFTL((int)((float)(lry) * 4.0F), 0, 12); \ + } +#define gDPSetScissorFrac(pkt, mode, ulx, uly, lrx, lry) \ + { \ + Gfx* _g = (Gfx*)pkt; \ + \ + _g->words.w0 = _SHIFTL(G_SETSCISSOR, 24, 8) | _SHIFTL((int)((ulx)), 12, 12) | _SHIFTL((int)((uly)), 0, 12); \ + _g->words.w1 = _SHIFTL(mode, 24, 2) | _SHIFTL((int)((lrx)), 12, 12) | _SHIFTL((int)((lry)), 0, 12); \ + } -#define gDPSetScissorFrac(pkt, mode, ulx, uly, lrx, lry) \ -{ \ - Gfx *_g = (Gfx *)pkt; \ - \ - _g->words.w0 = _SHIFTL(G_SETSCISSOR, 24, 8) | \ - _SHIFTL((int)((ulx)), 12, 12) | \ - _SHIFTL((int)((uly)), 0, 12); \ - _g->words.w1 = _SHIFTL(mode, 24, 2) | \ - _SHIFTL((int)((lrx)), 12, 12) | \ - _SHIFTL((int)((lry)), 0, 12); \ -} +#define gsDPSetScissor(mode, ulx, uly, lrx, lry) \ + { \ + { \ + _SHIFTL(G_SETSCISSOR, 24, 8) | _SHIFTL((int)((float)(ulx) * 4.0F), 12, 12) \ + | _SHIFTL((int)((float)(uly) * 4.0F), 0, 12), \ + _SHIFTL(mode, 24, 2) | _SHIFTL((int)((float)(lrx) * 4.0F), 12, 12) \ + | _SHIFTL((int)((float)(lry) * 4.0F), 0, 12) \ + } \ + } -#define gsDPSetScissor(mode, ulx, uly, lrx, lry) \ -{{ \ - _SHIFTL(G_SETSCISSOR, 24, 8) | \ - _SHIFTL((int)((float)(ulx)*4.0F), 12, 12) | \ - _SHIFTL((int)((float)(uly)*4.0F), 0, 12), \ - _SHIFTL(mode, 24, 2) | \ - _SHIFTL((int)((float)(lrx)*4.0F), 12, 12) | \ - _SHIFTL((int)((float)(lry)*4.0F), 0, 12) \ -}} - -#define gsDPSetScissorFrac(mode, ulx, uly, lrx, lry) \ -{{ \ - _SHIFTL(G_SETSCISSOR, 24, 8) | \ - _SHIFTL((int)((ulx)), 12, 12) | \ - _SHIFTL((int)((uly)), 0, 12), \ - _SHIFTL(mode, 24, 2) | \ - _SHIFTL((int)(lrx), 12, 12) | \ - _SHIFTL((int)(lry), 0, 12) \ -}} +#define gsDPSetScissorFrac(mode, ulx, uly, lrx, lry) \ + { \ + { \ + _SHIFTL(G_SETSCISSOR, 24, 8) | _SHIFTL((int)((ulx)), 12, 12) | _SHIFTL((int)((uly)), 0, 12), \ + _SHIFTL(mode, 24, 2) | _SHIFTL((int)(lrx), 12, 12) | _SHIFTL((int)(lry), 0, 12) \ + } \ + } /* Fraction never used in fill */ -#define gDPFillRectangle(pkt, ulx, uly, lrx, lry) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | \ - _SHIFTL((lrx), 14, 10) | _SHIFTL((lry), 2, 10));\ - _g->words.w1 = (_SHIFTL((ulx), 14, 10) | _SHIFTL((uly), 2, 10));\ -} +#define gDPFillRectangle(pkt, ulx, uly, lrx, lry) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | _SHIFTL((lrx), 14, 10) | _SHIFTL((lry), 2, 10)); \ + _g->words.w1 = (_SHIFTL((ulx), 14, 10) | _SHIFTL((uly), 2, 10)); \ + } -#define gsDPFillRectangle(ulx, uly, lrx, lry) \ -{{ \ - (_SHIFTL(G_FILLRECT, 24, 8) | _SHIFTL((lrx), 14, 10) | \ - _SHIFTL((lry), 2, 10)), \ - (_SHIFTL((ulx), 14, 10) | _SHIFTL((uly), 2, 10)) \ -}} +#define gsDPFillRectangle(ulx, uly, lrx, lry) \ + { \ + { \ + (_SHIFTL(G_FILLRECT, 24, 8) | _SHIFTL((lrx), 14, 10) | _SHIFTL((lry), 2, 10)), \ + (_SHIFTL((ulx), 14, 10) | _SHIFTL((uly), 2, 10)) \ + } \ + } /* like gDPFillRectangle but accepts negative arguments */ -#define gDPScisFillRectangle(pkt, ulx, uly, lrx, lry) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | \ - _SHIFTL(MAX((lrx),0), 14, 10) | \ - _SHIFTL(MAX((lry),0), 2, 10)); \ - _g->words.w1 = (_SHIFTL(MAX((ulx),0), 14, 10) | \ - _SHIFTL(MAX((uly),0), 2, 10)); \ -} +#define gDPScisFillRectangle(pkt, ulx, uly, lrx, lry) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | _SHIFTL(MAX((lrx), 0), 14, 10) | _SHIFTL(MAX((lry), 0), 2, 10)); \ + _g->words.w1 = (_SHIFTL(MAX((ulx), 0), 14, 10) | _SHIFTL(MAX((uly), 0), 2, 10)); \ + } -#define gDPSetConvert(pkt, k0, k1, k2, k3, k4, k5) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_SETCONVERT, 24, 8) | \ - _SHIFTL(k0, 13, 9) | _SHIFTL(k1, 4, 9) | \ - _SHIFTR(k2, 5, 4)); \ - _g->words.w1 = (_SHIFTL(k2, 27, 5) | _SHIFTL(k3, 18, 9) | \ - _SHIFTL(k4, 9, 9) | _SHIFTL(k5, 0, 9)); \ -} +#define gDPSetConvert(pkt, k0, k1, k2, k3, k4, k5) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_SETCONVERT, 24, 8) | _SHIFTL(k0, 13, 9) | _SHIFTL(k1, 4, 9) | _SHIFTR(k2, 5, 4)); \ + _g->words.w1 = (_SHIFTL(k2, 27, 5) | _SHIFTL(k3, 18, 9) | _SHIFTL(k4, 9, 9) | _SHIFTL(k5, 0, 9)); \ + } -#define gsDPSetConvert(k0, k1, k2, k3, k4, k5) \ -{{ \ - (_SHIFTL(G_SETCONVERT, 24, 8) | \ - _SHIFTL(k0, 13, 9) | _SHIFTL(k1, 4, 9) | _SHIFTR(k2, 5, 4)), \ - (_SHIFTL(k2, 27, 5) | _SHIFTL(k3, 18, 9) | _SHIFTL(k4, 9, 9) | \ - _SHIFTL(k5, 0, 9)) \ -}} +#define gsDPSetConvert(k0, k1, k2, k3, k4, k5) \ + { \ + { \ + (_SHIFTL(G_SETCONVERT, 24, 8) | _SHIFTL(k0, 13, 9) | _SHIFTL(k1, 4, 9) | _SHIFTR(k2, 5, 4)), \ + (_SHIFTL(k2, 27, 5) | _SHIFTL(k3, 18, 9) | _SHIFTL(k4, 9, 9) | _SHIFTL(k5, 0, 9)) \ + } \ + } -#define gDPSetKeyR(pkt, cR, sR, wR) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(G_SETKEYR, 24, 8); \ - _g->words.w1 = (_SHIFTL(wR, 16, 12) | _SHIFTL(cR, 8, 8) | \ - _SHIFTL(sR, 0, 8)); \ -} +#define gDPSetKeyR(pkt, cR, sR, wR) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(G_SETKEYR, 24, 8); \ + _g->words.w1 = (_SHIFTL(wR, 16, 12) | _SHIFTL(cR, 8, 8) | _SHIFTL(sR, 0, 8)); \ + } -#define gsDPSetKeyR(cR, sR, wR) \ -{{ \ - _SHIFTL(G_SETKEYR, 24, 8), \ - _SHIFTL(wR, 16, 12) | _SHIFTL(cR, 8, 8) | _SHIFTL(sR, 0, 8) \ -}} +#define gsDPSetKeyR(cR, sR, wR) \ + { \ + { \ + _SHIFTL(G_SETKEYR, 24, 8), _SHIFTL(wR, 16, 12) | _SHIFTL(cR, 8, 8) | _SHIFTL(sR, 0, 8) \ + } \ + } -#define gDPSetKeyGB(pkt, cG, sG, wG, cB, sB, wB) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_SETKEYGB, 24, 8) | \ - _SHIFTL(wG, 12, 12) | _SHIFTL(wB, 0, 12)); \ - _g->words.w1 = (_SHIFTL(cG, 24, 8) | _SHIFTL(sG, 16, 8) | \ - _SHIFTL(cB, 8, 8) | _SHIFTL(sB, 0, 8)); \ -} +#define gDPSetKeyGB(pkt, cG, sG, wG, cB, sB, wB) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_SETKEYGB, 24, 8) | _SHIFTL(wG, 12, 12) | _SHIFTL(wB, 0, 12)); \ + _g->words.w1 = (_SHIFTL(cG, 24, 8) | _SHIFTL(sG, 16, 8) | _SHIFTL(cB, 8, 8) | _SHIFTL(sB, 0, 8)); \ + } -#define gsDPSetKeyGB(cG, sG, wG, cB, sB, wB) \ -{{ \ - (_SHIFTL(G_SETKEYGB, 24, 8) | _SHIFTL(wG, 12, 12) | \ - _SHIFTL(wB, 0, 12)), \ - (_SHIFTL(cG, 24, 8) | _SHIFTL(sG, 16, 8) | _SHIFTL(cB, 8, 8) | \ - _SHIFTL(sB, 0, 8)) \ -}} +#define gsDPSetKeyGB(cG, sG, wG, cB, sB, wB) \ + { \ + { \ + (_SHIFTL(G_SETKEYGB, 24, 8) | _SHIFTL(wG, 12, 12) | _SHIFTL(wB, 0, 12)), \ + (_SHIFTL(cG, 24, 8) | _SHIFTL(sG, 16, 8) | _SHIFTL(cB, 8, 8) | _SHIFTL(sB, 0, 8)) \ + } \ + } -#define gDPNoParam(pkt, cmd) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(cmd, 24, 8); \ - _g->words.w1 = 0; \ -} +#define gDPNoParam(pkt, cmd) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(cmd, 24, 8); \ + _g->words.w1 = 0; \ + } -#define gsDPNoParam(cmd) \ -{{ \ - _SHIFTL(cmd, 24, 8), 0 \ -}} +#define gsDPNoParam(cmd) { { _SHIFTL(cmd, 24, 8), 0 } } -#define gDPParam(pkt, cmd, param) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = _SHIFTL(cmd, 24, 8); \ - _g->words.w1 = (param); \ -} +#define gDPParam(pkt, cmd, param) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = _SHIFTL(cmd, 24, 8); \ + _g->words.w1 = (param); \ + } -#define gsDPParam(cmd, param) \ -{{ \ - _SHIFTL(cmd, 24, 8), (param) \ -}} +#define gsDPParam(cmd, param) \ + { \ + { \ + _SHIFTL(cmd, 24, 8), (param) \ + } \ + } /* Notice that textured rectangles are 128-bit commands, therefore - * gsDPTextureRectangle() should not be used in display lists + * gsDPTextureRectangle() should not be used in display lists * under normal circumstances (use gsSPTextureRectangle()). * That is also why there is no gDPTextureRectangle() macros. */ -#define gsDPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ -{{ \ - (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | \ - _SHIFTL(yh, 0, 12)), \ - (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)), \ -}}, \ -{{ \ - _SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16), \ - _SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16) \ -}} +#define gsDPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ + { { \ + (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)), \ + (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)), \ + } }, \ + { \ + { \ + _SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16), _SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16) \ + } \ + } -#define gDPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - if (pkt); \ - _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | \ - _SHIFTL(yh, 0, 12)); \ - _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | \ - _SHIFTL(yl, 0, 12)); \ - _g ++; \ - _g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); \ - _g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)); \ -} +#define gDPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + if (pkt) \ + ; \ + _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)); \ + _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)); \ + _g++; \ + _g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); \ + _g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)); \ + } -#define gsDPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ -{{ \ - (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | \ - _SHIFTL(yh, 0, 12)), \ - (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)), \ -}}, \ -{{ \ - _SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16), \ - _SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16) \ -}} +#define gsDPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ + { { \ + (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)), \ + (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)), \ + } }, \ + { \ + { \ + _SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16), _SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16) \ + } \ + } -#define gDPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - if (pkt); \ - _g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | \ - _SHIFTL(yh, 0, 12)); \ - _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | \ - _SHIFTL(yl, 0, 12)); \ - _g ++; \ - _g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); \ - _g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)); \ -} +#define gDPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + if (pkt) \ + ; \ + _g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)); \ + _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)); \ + _g++; \ + _g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); \ + _g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)); \ + } -#define gsSPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ - {{(_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)),\ - (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12))}}, \ - gsImmp1(G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))), \ - gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))) +#define gsSPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ + { { (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)), \ + (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)) } }, \ + gsImmp1(G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))), \ + gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))) -#define gSPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | \ - _SHIFTL(yh, 0, 12)); \ - _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | \ - _SHIFTL(yl, 0, 12)); \ - gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))); \ - gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)));\ -} +#define gSPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)); \ + _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)); \ + gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))); \ + gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))); \ + } /* like gSPTextureRectangle but accepts negative position arguments */ -#define gSPScisTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | \ - _SHIFTL(MAX((s16)(xh),0), 12, 12) | \ - _SHIFTL(MAX((s16)(yh),0), 0, 12)); \ - _g->words.w1 = (_SHIFTL((tile), 24, 3) | \ - _SHIFTL(MAX((s16)(xl),0), 12, 12) | \ - _SHIFTL(MAX((s16)(yl),0), 0, 12)); \ - gImmp1(pkt, G_RDPHALF_1, \ - (_SHIFTL(((s) - \ - (((s16)(xl) < 0) ? \ - (((s16)(dsdx) < 0) ? \ - (MAX((((s16)(xl)*(s16)(dsdx))>>7),0)) : \ - (MIN((((s16)(xl)*(s16)(dsdx))>>7),0))) : 0)), \ - 16, 16) | \ - _SHIFTL(((t) - \ - (((yl) < 0) ? \ - (((s16)(dtdy) < 0) ? \ - (MAX((((s16)(yl)*(s16)(dtdy))>>7),0)) : \ - (MIN((((s16)(yl)*(s16)(dtdy))>>7),0))) : 0)), \ - 0, 16))); \ - gImmp1(pkt, G_RDPHALF_2, (_SHIFTL((dsdx), 16, 16) | \ - _SHIFTL((dtdy), 0, 16))); \ -} +#define gSPScisTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = \ + (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(MAX((s16)(xh), 0), 12, 12) | _SHIFTL(MAX((s16)(yh), 0), 0, 12)); \ + _g->words.w1 = \ + (_SHIFTL((tile), 24, 3) | _SHIFTL(MAX((s16)(xl), 0), 12, 12) | _SHIFTL(MAX((s16)(yl), 0), 0, 12)); \ + gImmp1(pkt, G_RDPHALF_1, \ + (_SHIFTL(((s) \ + - (((s16)(xl) < 0) ? (((s16)(dsdx) < 0) ? (MAX((((s16)(xl) * (s16)(dsdx)) >> 7), 0)) \ + : (MIN((((s16)(xl) * (s16)(dsdx)) >> 7), 0))) \ + : 0)), \ + 16, 16) \ + | _SHIFTL(((t) \ + - (((yl) < 0) ? (((s16)(dtdy) < 0) ? (MAX((((s16)(yl) * (s16)(dtdy)) >> 7), 0)) \ + : (MIN((((s16)(yl) * (s16)(dtdy)) >> 7), 0))) \ + : 0)), \ + 0, 16))); \ + gImmp1(pkt, G_RDPHALF_2, (_SHIFTL((dsdx), 16, 16) | _SHIFTL((dtdy), 0, 16))); \ + } -#define gsSPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ - {{(_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | \ - _SHIFTL(yh, 0, 12)), \ - (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12))}}, \ - gsImmp1(G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))), \ - gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))) +#define gsSPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ + { { (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)), \ + (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)) } }, \ + gsImmp1(G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))), \ + gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))) -#define gSPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - _g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) |\ - _SHIFTL(yh, 0, 12)); \ - _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | \ - _SHIFTL(yl, 0, 12)); \ - gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))); \ - gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))); \ -} +#define gSPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + _g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)); \ + _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)); \ + gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))); \ + gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))); \ + } -#define gsDPWord(wordhi, wordlo) \ - gsImmp1(G_RDPHALF_1, (unsigned int)(wordhi)), \ - gsImmp1(G_RDPHALF_2, (unsigned int)(wordlo)) +#define gsDPWord(wordhi, wordlo) \ + gsImmp1(G_RDPHALF_1, (unsigned int)(wordhi)), gsImmp1(G_RDPHALF_2, (unsigned int)(wordlo)) -#define gDPWord(pkt, wordhi, wordlo) \ -{ \ - Gfx *_g = (Gfx *)(pkt); \ - \ - gImmp1(pkt, G_RDPHALF_1, (unsigned int)(wordhi)); \ - gImmp1(pkt, G_RDPHALF_2, (unsigned int)(wordlo)); \ -} +#define gDPWord(pkt, wordhi, wordlo) \ + { \ + Gfx* _g = (Gfx*)(pkt); \ + \ + gImmp1(pkt, G_RDPHALF_1, (unsigned int)(wordhi)); \ + gImmp1(pkt, G_RDPHALF_2, (unsigned int)(wordlo)); \ + } -#define gDPFullSync(pkt) gDPNoParam(pkt, G_RDPFULLSYNC) -#define gsDPFullSync() gsDPNoParam(G_RDPFULLSYNC) -#define gDPTileSync(pkt) gDPNoParam(pkt, G_RDPTILESYNC) -#define gsDPTileSync() gsDPNoParam(G_RDPTILESYNC) -#define gDPPipeSync(pkt) gDPNoParam(pkt, G_RDPPIPESYNC) -#define gsDPPipeSync() gsDPNoParam(G_RDPPIPESYNC) -#define gDPLoadSync(pkt) gDPNoParam(pkt, G_RDPLOADSYNC) -#define gsDPLoadSync() gsDPNoParam(G_RDPLOADSYNC) -#define gDPNoOp(pkt) gDPNoParam(pkt, G_NOOP) -#define gsDPNoOp() gsDPNoParam(G_NOOP) -#define gDPNoOpTag(pkt, tag) gDPParam(pkt, G_NOOP, tag) -#define gsDPNoOpTag(tag) gsDPParam(G_NOOP, tag) +#define gDPFullSync(pkt) gDPNoParam(pkt, G_RDPFULLSYNC) +#define gsDPFullSync() gsDPNoParam(G_RDPFULLSYNC) +#define gDPTileSync(pkt) gDPNoParam(pkt, G_RDPTILESYNC) +#define gsDPTileSync() gsDPNoParam(G_RDPTILESYNC) +#define gDPPipeSync(pkt) gDPNoParam(pkt, G_RDPPIPESYNC) +#define gsDPPipeSync() gsDPNoParam(G_RDPPIPESYNC) +#define gDPLoadSync(pkt) gDPNoParam(pkt, G_RDPLOADSYNC) +#define gsDPLoadSync() gsDPNoParam(G_RDPLOADSYNC) +#define gDPNoOp(pkt) gDPNoParam(pkt, G_NOOP) +#define gsDPNoOp() gsDPNoParam(G_NOOP) +#define gDPNoOpTag(pkt, tag) gDPParam(pkt, G_NOOP, tag) +#define gsDPNoOpTag(tag) gsDPParam(G_NOOP, tag) #endif /* _LANGUAGE_C */ - #endif /* _GBI_H_ */ diff --git a/include/PR/gs2dex.h b/include/PR/gs2dex.h index ced4685..81559cd 100644 --- a/include/PR/gs2dex.h +++ b/include/PR/gs2dex.h @@ -1,16 +1,16 @@ /*--------------------------------------------------------------------- - 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 $ + 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_ +#ifndef _GS2DEX_H_ +#define _GS2DEX_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -21,9 +21,9 @@ extern "C" { /*===========================================================================* * 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))) +#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 @@ -32,356 +32,362 @@ extern "C" { /*---------------------------------------------------------------------------* * Background *---------------------------------------------------------------------------*/ -#define G_BGLT_LOADBLOCK 0x0033 -#define G_BGLT_LOADTILE 0xfff4 +#define G_BGLT_LOADBLOCK 0x0033 +#define G_BGLT_LOADTILE 0xfff4 -#define G_BG_FLAG_FLIPS 0x01 -#define G_BG_FLAG_FLIPT 0x10 +#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) */ +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) */ + 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) */ + 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 */ + /* 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) */ +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) */ + 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) */ + 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 */ + 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_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 */ +#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 */ + 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_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 */ + 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_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 */ + 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_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 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)))) +#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 */ +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) +#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 */ +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) +#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 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; + 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 */ +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 +#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 +#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)) +#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) +#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) +#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) +#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); } +#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 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)) +#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 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)) +#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 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 +#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 + * 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 *); +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 *); +#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 *); +extern void guS2DEmuSetScissor(u32, u32, u32, u32, u8); +extern void guS2DEmuBgRect1Cyc(Gfx**, uObjBg*); #endif #ifdef _LANGUAGE_C_PLUS_PLUS diff --git a/include/PR/gt.h b/include/PR/gt.h index 09b6ba2..bfc39b4 100644 --- a/include/PR/gt.h +++ b/include/PR/gt.h @@ -45,15 +45,15 @@ **************************************************************************/ #ifndef _GT_H_ -#define _GT_H_ +#define _GT_H_ /* this file should be #included AFTER gbi.h */ #include "sptask.h" -#ifdef _LANGUAGE_C_PLUS_PLUS +#ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { -#endif /* _LANGUAGE_C_PLUS_PLUS */ +#endif /* _LANGUAGE_C_PLUS_PLUS */ #include @@ -61,19 +61,19 @@ extern "C" { * 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 */ +#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 @@ -83,43 +83,42 @@ extern "C" { * 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 */ - +#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[]; +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 + * 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) - */ + 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: @@ -129,11 +128,10 @@ typedef struct { */ typedef union { - gtGlobState_t sp; - long long int force_structure_alignment; + 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 @@ -141,38 +139,38 @@ typedef union { * 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 */ + 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_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; + 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_t sp; + long long int force_structure_alignment; } gtStateL; /* @@ -181,23 +179,21 @@ typedef union { * */ - /* * 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 + * 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 */ + 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 @@ -214,29 +210,27 @@ typedef struct { * */ typedef struct { - short int xscrn; /* x,y screen coordinates are SSSS10.2 */ - short int yscrn; - int zscrn; /* z screen is S15.16 */ + 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; + short int s; /* transformed texture coord, S10.5 */ + short int t; - u8 r; /* color (or normal) */ - u8 g; - u8 b; - u8 a; + 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_t v; + long long int force_structure_alignment; } gtVtxOut; - - /* * state field: rdpOthermode * @@ -244,10 +238,10 @@ typedef union { * 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). + * on your own). * - * gtStateSetOthermode() accomplishs this, taking as arguments - * the state, one of the following mode enums, and a piece of data + * 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 @@ -255,16 +249,16 @@ typedef union { * 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 + * 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). + * 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_CLEAR, /* special gt mode, clears othermode state */ GT_ALPHACOMPARE, GT_ZSRCSEL, GT_RENDERMODE, @@ -286,39 +280,36 @@ typedef enum { * 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); +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); +#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 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 \ -} +#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() +#define gDPEndDisplayList(pkt) gSPNoOp(pkt) +#define gsDPEndDisplayList() gsSPNoOp() /* * This structure is a turbo 'object', the turbo display list is @@ -337,29 +328,28 @@ extern void gtDumpTurbo(OSTask *tp,u8 flags); * */ 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 */ + 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_t obj; + long long int force_structure_alignment; } gtGfx; +#endif /* _LANGUAGE_C */ -#endif /* _LANGUAGE_C */ - -#ifdef _LANGUAGE_ASSEMBLY +#ifdef _LANGUAGE_ASSEMBLY #include -#endif /* _LANGUAGE_ASSEMBLY */ +#endif /* _LANGUAGE_ASSEMBLY */ -#ifdef _LANGUAGE_C_PLUS_PLUS +#ifdef _LANGUAGE_C_PLUS_PLUS } -#endif /* _LANGUAGE_C_PLUS_PLUS */ +#endif /* _LANGUAGE_C_PLUS_PLUS */ -#ifdef _LANGUAGE_MAKEROM -#endif /* _LANGUAGE_MAKEROM */ +#ifdef _LANGUAGE_MAKEROM +#endif /* _LANGUAGE_MAKEROM */ -#endif /* _GT_H_ */ +#endif /* _GT_H_ */ diff --git a/include/PR/gu.h b/include/PR/gu.h index 9a2fa2b..bd5858c 100644 --- a/include/PR/gu.h +++ b/include/PR/gu.h @@ -27,162 +27,119 @@ #include #ifndef MAX -#define MAX(a,b) (((a)>(b))?(a):(b)) +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) #endif #ifndef MIN -#define MIN(a,b) (((a)<(b))?(a):(b)) +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif -#define M_PI 3.14159265358979323846 -#define M_DTOR (3.14159265358979323846/180.0) +#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.0f)), 127.0f) & 0xff) +#define FTOFIX32(x) (long)((x) * (float)0x00010000) +#define FIX32TOF(x) ((float)(x) * (1.0f / (float)0x00010000)) +#define FTOFRAC8(x) ((int)MIN(((x) * (128.0f)), 127.0f) & 0xff) -#define FILTER_WRAP 0 -#define FILTER_CLAMP 1 +#define FILTER_WRAP 0 +#define FILTER_CLAMP 1 -#define RAND(x) (guRandom()%x) /* random number between 0 to x */ +#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; + 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) */ + 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 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); +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 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 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 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 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 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 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 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); +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); +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); +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); /* @@ -190,8 +147,8 @@ extern int guRandom(void); */ 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 signed short sins(unsigned short angle); +extern signed short coss(unsigned short angle); extern float sqrtf(float value); #if defined(__sgi) && BUILD_VERSION >= VERSION_K #pragma intrinsic(sqrtf); @@ -201,70 +158,59 @@ extern float sqrtf(float value); * 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 */ +#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); +extern void guParseRdpDL(u64* rdp_dl, u64 nbytes, u8 flags); +extern void guParseString(char* StringPointer, u64 nbytes); -/* - * NO LONGER SUPPORTED, +/* + * 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 +#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); -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_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); +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 +#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; + 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); +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_ */ diff --git a/include/PR/libaudio.h b/include/PR/libaudio.h index 33017b7..cb3c959 100644 --- a/include/PR/libaudio.h +++ b/include/PR/libaudio.h @@ -35,362 +35,367 @@ extern "C" { #include #include - + /*********************************************************************** * misc defines - ***********************************************************************/ + ***********************************************************************/ #ifndef _EMULATOR -# ifdef AUD_PROFILE +#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; \ -} +#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 /* 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_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 -#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 +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; } +#define ALFailIf(condition, error) \ + if (condition) { \ + __osError(error, 0); \ + return; \ + } #else -#define ALFailIf(condition, error) \ - if (condition) { \ - return; } +#define ALFailIf(condition, error) \ + if (condition) { \ + return; \ + } #endif #ifdef _DEBUG -#define ALFlagFailIf(condition, flag, error) \ - if (condition) { \ - if(flag) __osError(error, 0); \ - return; } +#define ALFlagFailIf(condition, flag, error) \ + if (condition) { \ + if (flag) \ + __osError(error, 0); \ + return; \ + } #else -#define ALFlagFailIf(condition, flag, error) \ - if (condition) { \ - return; } +#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; + struct ALLink_s* next; + struct ALLink_s* prev; } ALLink; -void alUnlink(ALLink *element); -void alLink(ALLink *element, ALLink *after); +void alUnlink(ALLink* element); +void alLink(ALLink* element, ALLink* after); -typedef s32 (*ALDMAproc)(s32 addr, s32 len, void *state); -typedef ALDMAproc (*ALDMANew)(void *state); +typedef s32 (*ALDMAproc)(s32 addr, s32 len, void* state); +typedef ALDMAproc (*ALDMANew)(void* state); -void alCopy(void *src, void *dest, s32 len); +void alCopy(void* src, void* dest, s32 len); typedef struct { - u8 *base; - u8 *cur; - s32 len; - s32 count; + u8* base; + u8* cur; + s32 len; + s32 count; } ALHeap; -#define AL_HEAP_DEBUG 1 -#define AL_HEAP_MAGIC 0x20736a73 -#define AL_HEAP_INIT 0 +#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); +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)) +#define alHeapAlloc(hp, elem, size) alHeapDBAlloc((u8*)__FILE__, __LINE__, (hp), (elem), (size)) #else -#define alHeapAlloc(hp, elem ,size) alHeapDBAlloc(0, 0,(hp),(elem),(size)) +#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 +#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; +typedef u8 ALFxId; +typedef void* ALFxRef; /*********************************************************************** * data structures for sound banks ***********************************************************************/ -#define AL_BANK_VERSION 0x4231 /* 'B1' */ +#define AL_BANK_VERSION 0x4231 /* 'B1' */ /* Possible wavetable types */ -enum {AL_ADPCM_WAVE = 0, - AL_RAW16_WAVE}; +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 */ + s16 book[1]; /* Actually variable size. Must be 8-byte aligned */ } ALADPCMBook; typedef struct { - u32 start; - u32 end; - u32 count; + u32 start; + u32 end; + u32 count; ADPCM_STATE state; } ALADPCMloop; typedef struct { - u32 start; - u32 end; - u32 count; + u32 start; + u32 end; + u32 count; } ALRawLoop; typedef struct { ALMicroTime attackTime; ALMicroTime decayTime; ALMicroTime releaseTime; - u8 attackVolume; - u8 decayVolume; + u8 attackVolume; + u8 decayVolume; } ALEnvelope; typedef struct { - u8 velocityMin; - u8 velocityMax; - u8 keyMin; - u8 keyMax; - u8 keyBase; - s8 detune; + u8 velocityMin; + u8 velocityMax; + u8 keyMin; + u8 keyMax; + u8 keyBase; + s8 detune; } ALKeyMap; typedef struct { - ALADPCMloop *loop; - ALADPCMBook *book; + ALADPCMloop* loop; + ALADPCMBook* book; } ALADPCMWaveInfo; typedef struct { - ALRawLoop *loop; + 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 */ + 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; + ALRAWWaveInfo rawWave; } waveInfo; } ALWaveTable; typedef struct ALSound_s { - ALEnvelope *envelope; - ALKeyMap *keyMap; - ALWaveTable *wavetable; /* offset to wavetable struct */ - ALPan samplePan; - u8 sampleVolume; - u8 flags; + 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]; + 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 */ + 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 */ +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); +void alBnkfNew(ALBankFile* f, u8* table); /*********************************************************************** * Sequence Files ***********************************************************************/ -#define AL_SEQBANK_VERSION 'S1' +#define AL_SEQBANK_VERSION 'S1' typedef struct { - u8 *offset; - s32 len; + 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 */ +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); +void alSeqFileNew(ALSeqFile* f, u8* base); /*********************************************************************** * Synthesis driver stuff ***********************************************************************/ -typedef ALMicroTime (*ALVoiceHandler)(void *); +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; + 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 */ + 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; + 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 */ + 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 */ + 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; - s32 numPVoices; - s32 maxAuxBusses; - s32 outputRate; /* output sample rate */ - s32 maxOutSamples; /* Maximum samples rsp can generate - at one time at output rate */ + 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 alSynNew(ALSynth* s, ALSynConfig* config); +void alSynDelete(ALSynth* s); -void alSynAddPlayer(ALSynth *s, ALPlayer *client); -void alSynRemovePlayer(ALSynth *s, ALPlayer *client); +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); +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 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); +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); +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; + ALSynth drvr; } ALGlobals; -extern ALGlobals *alGlobals; +extern ALGlobals* alGlobals; -void alInit(ALGlobals *glob, ALSynConfig *c); -void alClose(ALGlobals *glob); +void alInit(ALGlobals* glob, ALSynConfig* c); +void alClose(ALGlobals* glob); -Acmd *alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen); +Acmd* alAudioFrame(Acmd* cmdList, s32* cmdLen, s16* outBuf, s32 outLen); /*********************************************************************** * Sequence Player stuff @@ -399,19 +404,19 @@ Acmd *alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen); /* * Play states */ -#define AL_STOPPED 0 -#define AL_PLAYING 1 -#define AL_STOPPING 2 +#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 +#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_REF_EVT, /* Reference to a pending event in the sequence. */ AL_SEQ_MIDI_EVT, AL_SEQP_MIDI_EVT, AL_TEMPO_EVT, @@ -440,508 +445,490 @@ enum ALMsg { /* * Midi event definitions */ -#define AL_EVTQ_END 0x7fffffff +#define AL_EVTQ_END 0x7fffffff enum AL_MIDIstatus { /* For distinguishing channel number from status */ - AL_MIDI_ChannelMask = 0x0F, - AL_MIDI_StatusMask = 0xF0, + 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, + 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 */ + 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 */ + 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 */ + 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 + 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 -}; +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 +#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 */ + 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; + 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; + 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; + s32 ticks; + u8 status; + u8 type; + u8 len; } ALEndEvent; typedef struct { - struct ALVoice_s *voice; + struct ALVoice_s* voice; } ALNoteEvent; typedef struct { - struct ALVoice_s *voice; - ALMicroTime delta; - u8 vol; + struct ALVoice_s* voice; + ALMicroTime delta; + u8 vol; } ALVolumeEvent; typedef struct { - s16 vol; + s16 vol; } ALSeqpVolEvent; typedef struct { - ALSeqMarker *start; - ALSeqMarker *end; - s32 count; + ALSeqMarker* start; + ALSeqMarker* end; + s32 count; } ALSeqpLoopEvent; typedef struct { - u8 chan; - u8 priority; + u8 chan; + u8 priority; } ALSeqpPriorityEvent; typedef struct { - void *seq; /* pointer to a seq (could be an ALSeq or an ALCSeq). */ + void* seq; /* pointer to a seq (could be an ALSeq or an ALCSeq). */ } ALSeqpSeqEvent; typedef struct { - ALBank *bank; + ALBank* bank; } ALSeqpBankEvent; typedef struct { - struct ALVoiceState_s *vs; - void *oscState; - u8 chan; + struct ALVoiceState_s* vs; + void* oscState; + u8 chan; } ALOscEvent; typedef struct { - s16 type; + 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; + ALMIDIEvent midi; + ALTempoEvent tempo; + ALEndEvent end; + ALNoteEvent note; + ALVolumeEvent vol; + ALSeqpLoopEvent loop; + ALSeqpVolEvent spvol; + ALSeqpPriorityEvent sppriority; + ALSeqpSeqEvent spseq; + ALSeqpBankEvent spbank; + ALOscEvent osc; } msg; } ALEvent; typedef struct { - ALLink node; + ALLink node; ALMicroTime delta; - ALEvent evt; + ALEvent evt; } ALEventListItem; typedef struct { - ALLink freeList; - ALLink allocList; - s32 eventCount; + 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); +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 +#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 */ + 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 fxmix; /* current fx mix for this chan */ - u8 sustain; /* current sustain pedal state */ - f32 pitchBend; /* current pitch bend val in cents */ + 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 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 */ + 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; + 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 */ + 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]; + 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 +#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; + 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 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 */ + 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; + 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); +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); +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); +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); +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 - - +#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); +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 - - +#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; + 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; + 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); +typedef s16 ALSndId; -ALSndId alSndpAllocate(ALSndPlayer *sndp, ALSound *sound); -void alSndpDeallocate(ALSndPlayer *sndp, ALSndId id); +void alSndpNew(ALSndPlayer* sndp, ALSndpConfig* c); +void alSndpDelete(ALSndPlayer* sndp); -void alSndpSetSound(ALSndPlayer *sndp, ALSndId id); -ALSndId alSndpGetSound(ALSndPlayer *sndp); +ALSndId alSndpAllocate(ALSndPlayer* sndp, ALSound* sound); +void alSndpDeallocate(ALSndPlayer* sndp, ALSndId id); -void alSndpPlay(ALSndPlayer *sndp); -void alSndpPlayAt(ALSndPlayer *sndp, ALMicroTime delta); -void alSndpStop(ALSndPlayer *sndp); +void alSndpSetSound(ALSndPlayer* sndp, ALSndId id); +ALSndId alSndpGetSound(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 alSndpPlay(ALSndPlayer* sndp); +void alSndpPlayAt(ALSndPlayer* sndp, ALMicroTime delta); +void alSndpStop(ALSndPlayer* sndp); -void alSndpSetFXMix(ALSndPlayer *sndp, u8 mix); -s32 alSndpGetState(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); +void alParseAbiCL(Acmd* cmdList, u32 nbytes); #endif #ifdef _LANGUAGE_C_PLUS_PLUS } #endif #endif /* !__LIB_AUDIO__ */ - - - diff --git a/include/PR/mbi.h b/include/PR/mbi.h index ac900a5..39e186b 100644 --- a/include/PR/mbi.h +++ b/include/PR/mbi.h @@ -1,5 +1,5 @@ #ifndef _MBI_H_ -#define _MBI_H_ +#define _MBI_H_ /************************************************************************** * * @@ -29,13 +29,12 @@ * */ - /* * 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, + * 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, + * 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 @@ -44,15 +43,13 @@ * (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 _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 _SHIFT _SHIFTL /* old, for compatibility only */ -#define G_ON (1) -#define G_OFF (0) +#define G_ON (1) +#define G_OFF (0) /************************************************************************** * @@ -76,11 +73,11 @@ * **************************************************************************/ -#define M_GFXTASK 1 -#define M_AUDTASK 2 -#define M_VIDTASK 3 -#define M_HVQTASK 6 -#define M_HVQMTASK 7 +#define M_GFXTASK 1 +#define M_AUDTASK 2 +#define M_VIDTASK 3 +#define M_HVQTASK 6 +#define M_HVQMTASK 7 /************************************************************************** * @@ -88,10 +85,10 @@ * **************************************************************************/ -#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)) +#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 diff --git a/include/PR/os.h b/include/PR/os.h index 4b52dfb..2ce02f9 100644 --- a/include/PR/os.h +++ b/include/PR/os.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_H_ #include #include @@ -76,30 +76,29 @@ extern "C" { * SIM (SI Manager) * */ -#define OS_PIM_STACKSIZE 4096 -#define OS_VIM_STACKSIZE 4096 -#define OS_SIM_STACKSIZE 4096 +#define OS_PIM_STACKSIZE 4096 +#define OS_VIM_STACKSIZE 4096 +#define OS_SIM_STACKSIZE 4096 -#define OS_MIN_STACKSIZE 72 +#define OS_MIN_STACKSIZE 72 -/* - * Leo Disk +/* + * Leo Disk */ /* transfer mode */ -#define LEO_BLOCK_MODE 1 -#define LEO_TRACK_MODE 2 -#define LEO_SECTOR_MODE 3 +#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 - +#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 } diff --git a/include/PR/os_ai.h b/include/PR/os_ai.h index f89d87c..4aaf9d8 100644 --- a/include/PR/os_ai.h +++ b/include/PR/os_ai.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_AI_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -44,7 +44,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -53,7 +52,6 @@ extern "C" { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -62,14 +60,12 @@ extern "C" { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -77,13 +73,12 @@ extern "C" { */ /* Audio interface (Ai) */ -extern u32 osAiGetStatus(void); -extern u32 osAiGetLength(void); -extern s32 osAiSetFrequency(u32); -extern s32 osAiSetNextBuffer(void *, u32); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_cache.h b/include/PR/os_cache.h index 54ed923..c4849b3 100644 --- a/include/PR/os_cache.h +++ b/include/PR/os_cache.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_CACHE_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -44,7 +44,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -53,7 +52,6 @@ extern "C" { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -62,9 +60,8 @@ extern "C" { * */ -#define OS_DCACHE_ROUNDUP_ADDR(x) (void *)(((((u32)(x)+0xf)/0x10)*0x10)) -#define OS_DCACHE_ROUNDUP_SIZE(x) (u32)(((((u32)(x)+0xf)/0x10)*0x10)) - +#define OS_DCACHE_ROUNDUP_ADDR(x) (void*)(((((u32)(x) + 0xf) / 0x10) * 0x10)) +#define OS_DCACHE_ROUNDUP_SIZE(x) (u32)(((((u32)(x) + 0xf) / 0x10) * 0x10)) /************************************************************************** * @@ -72,7 +69,6 @@ extern "C" { * */ - /************************************************************************** * * Function prototypes @@ -81,13 +77,12 @@ extern "C" { /* Cache operations and macros */ -extern void osInvalDCache(void *, s32); -extern void osInvalICache(void *, s32); -extern void osWritebackDCache(void *, s32); -extern void osWritebackDCacheAll(void); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_cont.h b/include/PR/os_cont.h index 2b69330..942a8fa 100644 --- a/include/PR/os_cont.h +++ b/include/PR/os_cont.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_CONT_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -37,7 +37,6 @@ extern "C" { #include #include "os_message.h" - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -47,31 +46,30 @@ extern "C" { */ /* - * Structure for controllers + * Structure for controllers */ typedef struct { - u16 type; /* Controller Type */ - u8 status; /* Controller status */ - u8 errno; -}OSContStatus; + 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; + 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; + 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) */ /************************************************************************** @@ -85,84 +83,83 @@ typedef struct { */ #ifndef _HW_VERSION_1 -#define MAXCONTROLLERS 4 +#define MAXCONTROLLERS 4 #else -#define MAXCONTROLLERS 6 +#define MAXCONTROLLERS 6 #endif /* controller errors */ -#define CONT_NO_RESPONSE_ERROR 0x8 -#define CONT_OVERRUN_ERROR 0x4 -#define CONT_RANGE_ERROR -1 +#define CONT_NO_RESPONSE_ERROR 0x8 +#define CONT_OVERRUN_ERROR 0x4 +#define CONT_RANGE_ERROR -1 #ifdef _HW_VERSION_1 -#define CONT_FRAME_ERROR 0x2 -#define CONT_COLLISION_ERROR 0x1 -#endif +#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 +#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 +#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 +#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 +#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 - +#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) @@ -172,14 +169,12 @@ typedef struct { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -188,18 +183,17 @@ typedef struct { /* Controller interface */ -extern s32 osContInit(OSMesgQueue *, u8 *, OSContStatus *); -extern s32 osContReset(OSMesgQueue *, OSContStatus *); -extern s32 osContStartQuery(OSMesgQueue *); -extern s32 osContStartReadData(OSMesgQueue *); +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); +extern s32 osContSetCh(u8); #endif -extern void osContGetQuery(OSContStatus *); -extern void osContGetReadData(OSContPad *); +extern void osContGetQuery(OSContStatus*); +extern void osContGetReadData(OSContPad*); - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_convert.h b/include/PR/os_convert.h index 0a5da10..93766a7 100644 --- a/include/PR/os_convert.h +++ b/include/PR/os_convert.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_CONVERT_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -44,7 +44,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -53,9 +52,8 @@ extern "C" { * */ -#define OS_CLOCK_RATE 62500000LL -#define OS_CPU_COUNTER (OS_CLOCK_RATE*3/4) - +#define OS_CLOCK_RATE 62500000LL +#define OS_CPU_COUNTER (OS_CLOCK_RATE * 3 / 4) #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) @@ -65,23 +63,22 @@ extern "C" { * */ -#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)) +#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)) +#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) +#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)) - +#define OS_PHYSICAL_TO_K0(x) (void*)(((u32)(x) + 0x80000000)) +#define OS_PHYSICAL_TO_K1(x) (void*)(((u32)(x) + 0xa0000000)) /************************************************************************** * @@ -89,7 +86,6 @@ extern "C" { * */ - /************************************************************************** * * Function prototypes @@ -98,11 +94,10 @@ extern "C" { /* Address translation routines and macros */ -extern u32 osVirtualToPhysical(void *); -extern void * osPhysicalToVirtual(u32); +extern u32 osVirtualToPhysical(void*); +extern void* osPhysicalToVirtual(u32); - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_debug.h b/include/PR/os_debug.h index f8f5a89..6e0a214 100644 --- a/include/PR/os_debug.h +++ b/include/PR/os_debug.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_DEBUG_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -45,16 +45,15 @@ extern "C" { */ /* - * Structure for Profiler + * 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 */ + 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) */ /************************************************************************** @@ -66,8 +65,7 @@ typedef struct { /* * Profiler constants */ -#define PROF_MIN_INTERVAL 50 /* microseconds */ - +#define PROF_MIN_INTERVAL 50 /* microseconds */ #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) @@ -77,14 +75,12 @@ typedef struct { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -93,22 +89,22 @@ typedef struct { /* Profiler Interface */ -extern void osProfileInit(OSProf *, u32 profcnt); -extern void osProfileStart(u32); -extern void osProfileFlush(void); -extern void osProfileStop(void); +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*); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_eeprom.h b/include/PR/os_eeprom.h index b3bca81..4a11ba0 100644 --- a/include/PR/os_eeprom.h +++ b/include/PR/os_eeprom.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_EEPROM_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -37,7 +37,6 @@ extern "C" { #include #include "os_message.h" - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -46,7 +45,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -57,15 +55,14 @@ extern "C" { /* EEPROM TYPE */ -#define EEPROM_TYPE_4K 0x01 -#define EEPROM_TYPE_16K 0x02 +#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 - +#define EEPROM_MAXBLOCKS 64 +#define EEP16K_MAXBLOCKS 256 +#define EEPROM_BLOCK_SIZE 8 #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) @@ -75,14 +72,12 @@ extern "C" { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -91,14 +86,13 @@ extern "C" { /* 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); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_error.h b/include/PR/os_error.h index f4c3b83..d2837fc 100644 --- a/include/PR/os_error.h +++ b/include/PR/os_error.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_ERROR_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -44,7 +44,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -53,7 +52,6 @@ extern "C" { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -62,22 +60,19 @@ extern "C" { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes * */ - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_exception.h b/include/PR/os_exception.h index 2457bde..39ee64f 100644 --- a/include/PR/os_exception.h +++ b/include/PR/os_exception.h @@ -21,7 +21,7 @@ /*---------------------------------------------------------------------* Copyright (C) 1998 Nintendo. (Originated by SGI) - + $RCSfile: os_exception.h,v $ $Revision: 1.1 $ $Date: 1998/10/09 08:01:07 $ @@ -45,39 +45,39 @@ typedef u32 OSHWIntr; /* Flags for debugging purpose */ -#define OS_FLAG_CPU_BREAK 1 /* Break exception has occurred */ -#define OS_FLAG_FAULT 2 /* CPU fault has occurred */ +#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_RCP 0x00000401 -#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 +#define OS_IM_NONE 0x00000001 +#define OS_IM_RCP 0x00000401 +#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) /* Interrupt operations */ -extern OSIntMask osGetIntMask(void); -extern OSIntMask osSetIntMask(OSIntMask); +extern OSIntMask osGetIntMask(void); +extern OSIntMask osSetIntMask(OSIntMask); -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_flash.h b/include/PR/os_flash.h index 9eb0bf7..bb66ce5 100644 --- a/include/PR/os_flash.h +++ b/include/PR/os_flash.h @@ -1,6 +1,6 @@ /*---------------------------------------------------------------------* Copyright (C) 1998 Nintendo. - + $RCSfile: os_flash.h,v $ $Revision: 1.1 $ $Date: 2000/06/15 06:24:55 $ @@ -18,57 +18,54 @@ extern "C" { #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) -/* +/* * defines for FLASH */ -#define FLASH_START_ADDR 0x08000000 +#define FLASH_START_ADDR 0x08000000 -#define FLASH_SIZE 0x20000 +#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_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 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 /* OLD_FLASH is MX_PROTO_A, MX_A and MX_C */ -#define OLD_FLASH 0 +#define OLD_FLASH 0 /* NEW_FLASH is MX_B_AND_D and MATSUSHITA flash */ -#define NEW_FLASH 1 +#define NEW_FLASH 1 -#define FLASH_STATUS_ERASE_BUSY 2 -#define FLASH_STATUS_ERASE_OK 0 -#define FLASH_STATUS_ERASE_ERROR -1 +#define FLASH_STATUS_ERASE_BUSY 2 +#define FLASH_STATUS_ERASE_OK 0 +#define FLASH_STATUS_ERASE_ERROR -1 -#define FLASH_STATUS_WRITE_BUSY 1 -#define FLASH_STATUS_WRITE_OK 0 -#define FLASH_STATUS_WRITE_ERROR -1 +#define FLASH_STATUS_WRITE_BUSY 1 +#define FLASH_STATUS_WRITE_OK 0 +#define FLASH_STATUS_WRITE_ERROR -1 -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); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_gbpak.h b/include/PR/os_gbpak.h index 0a99994..8bc9aa5 100644 --- a/include/PR/os_gbpak.h +++ b/include/PR/os_gbpak.h @@ -1,14 +1,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_GBPAK_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -18,7 +18,6 @@ extern "C" { #include "os_message.h" #include "os_pfs.h" - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -28,23 +27,22 @@ extern "C" { */ 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; + 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) */ /************************************************************************** @@ -61,11 +59,10 @@ typedef struct { #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 */ +#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) @@ -75,14 +72,12 @@ typedef struct { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -90,15 +85,14 @@ typedef struct { */ /* 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 *); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_gio.h b/include/PR/os_gio.h index ad3c020..9d45bc9 100644 --- a/include/PR/os_gio.h +++ b/include/PR/os_gio.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_GIO_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -44,7 +44,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -53,7 +52,6 @@ extern "C" { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -62,22 +60,19 @@ extern "C" { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes * */ - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_host.h b/include/PR/os_host.h index 3192f6a..d41be22 100644 --- a/include/PR/os_host.h +++ b/include/PR/os_host.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_HOST_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -45,7 +45,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -54,7 +53,6 @@ extern "C" { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -74,42 +72,42 @@ extern void __osInitialize_common(void); /* PARTNER-N64 */ #if defined(PTN64) extern void __osInitialize_kmc(void); -#define osReadHost osReadHost_pt +#define osReadHost osReadHost_pt #define osWriteHost osWriteHost_pt -#define osInitialize() \ -{ \ - __osInitialize_common(); \ - __osInitialize_kmc(); \ -} +#define osInitialize() \ + { \ + __osInitialize_common(); \ + __osInitialize_kmc(); \ + } /* MONEGI SMART PACK A */ #elif defined(MWN64) extern void __osInitialize_msp(void); -#define osReadHost osReadHost_pt +#define osReadHost osReadHost_pt #define osWriteHost osWriteHost_pt -#define osInitialize() \ -{ \ - __osInitialize_common(); \ - __osInitialize_msp(); \ -} +#define osInitialize() \ + { \ + __osInitialize_common(); \ + __osInitialize_msp(); \ + } /* IS-Viewer(for Debugger) */ #elif defined(ISV64) extern void __osInitialize_isv(void); -#define osInitialize() \ -{ \ - __osInitialize_common(); \ - __osInitialize_isv(); \ -} +#define osInitialize() \ + { \ + __osInitialize_common(); \ + __osInitialize_isv(); \ + } /* Emulation board for INDY */ #elif defined(EMU64) extern void __osInitialize_emu(void); -#define osInitialize() \ -{ \ - __osInitialize_common(); \ - __osInitialize_emu(); \ -} +#define osInitialize() \ + { \ + __osInitialize_common(); \ + __osInitialize_emu(); \ + } #else /* Default (auto detect) */ @@ -118,14 +116,14 @@ 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(); \ -} +#define osInitialize() \ + { \ + __osInitialize_common(); \ + __osInitialize_autodetect(); \ + } #endif -#endif /* _FINAL_ROM */ +#endif /* _FINAL_ROM */ #if BUILD_VERSION < VERSION_K #undef osInitialize @@ -137,7 +135,6 @@ extern void __osInitialize_emu(void); * */ - /************************************************************************** * * Function prototypes @@ -146,18 +143,17 @@ extern void __osInitialize_emu(void); /* 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); +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); +extern void osInitRdb(u8* sendBuf, u32 sendSize); - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_internal.h b/include/PR/os_internal.h index 754d1ee..6a2c731 100644 --- a/include/PR/os_internal.h +++ b/include/PR/os_internal.h @@ -12,14 +12,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_INTERNAL_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { diff --git a/include/PR/os_internal_debug.h b/include/PR/os_internal_debug.h index 7b307d6..2262117 100644 --- a/include/PR/os_internal_debug.h +++ b/include/PR/os_internal_debug.h @@ -12,14 +12,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_INTERNAL_DEBUG_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -30,9 +30,8 @@ extern "C" { #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /* Debug port */ -extern void __osSyncPutChars(int, int, const char *); -extern int __osAtomicDec(unsigned int *p); - +extern void __osSyncPutChars(int, int, const char*); +extern int __osAtomicDec(unsigned int* p); #endif /* _LANGUAGE_C */ diff --git a/include/PR/os_internal_error.h b/include/PR/os_internal_error.h index de188d2..d6ebed7 100644 --- a/include/PR/os_internal_error.h +++ b/include/PR/os_internal_error.h @@ -12,14 +12,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_INTERNAL_ERROR_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -31,10 +31,9 @@ extern "C" { /* Error handling */ -extern void __osError(s16, s16, ...); -extern OSThread * __osGetCurrFaultedThread(void); -extern OSThread * __osGetNextFaultedThread(OSThread *); - +extern void __osError(s16, s16, ...); +extern OSThread* __osGetCurrFaultedThread(void); +extern OSThread* __osGetNextFaultedThread(OSThread*); #endif /* _LANGUAGE_C */ diff --git a/include/PR/os_internal_exception.h b/include/PR/os_internal_exception.h index dae8a9f..fc3a6f6 100644 --- a/include/PR/os_internal_exception.h +++ b/include/PR/os_internal_exception.h @@ -12,14 +12,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_INTERNAL_EXCEPTION_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -32,21 +32,16 @@ extern "C" { /* Routine for HW interrupt "handler" */ #if BUILD_VERSION >= VERSION_J -extern void __osSetHWIntrRoutine(OSHWIntr interrupt, - s32 (*handler)(void), void *stackEnd); -extern void __osGetHWIntrRoutine(OSHWIntr interrupt, - s32 (**handler)(void), void **stackEnd); +extern void __osSetHWIntrRoutine(OSHWIntr interrupt, s32 (*handler)(void), void* stackEnd); +extern void __osGetHWIntrRoutine(OSHWIntr interrupt, s32 (**handler)(void), void** stackEnd); #else -extern void __osSetHWIntrRoutine(OSHWIntr interrupt, - s32 (*handler)(void)); -extern void __osGetHWIntrRoutine(OSHWIntr interrupt, - s32 (**handler)(void)); +extern void __osSetHWIntrRoutine(OSHWIntr interrupt, s32 (*handler)(void)); +extern void __osGetHWIntrRoutine(OSHWIntr interrupt, s32 (**handler)(void)); #endif /* Routine for global interrupt mask */ -extern void __osSetGlobalIntMask(OSHWIntr); -extern void __osResetGlobalIntMask(OSHWIntr); - +extern void __osSetGlobalIntMask(OSHWIntr); +extern void __osResetGlobalIntMask(OSHWIntr); #endif /* _LANGUAGE_C */ diff --git a/include/PR/os_internal_flash.h b/include/PR/os_internal_flash.h index 1c6f780..2ebd25a 100644 --- a/include/PR/os_internal_flash.h +++ b/include/PR/os_internal_flash.h @@ -1,5 +1,5 @@ #ifndef _OS_INTERNAL_FLASH_H_ -#define _OS_INTERNAL_FLASH_H_ +#define _OS_INTERNAL_FLASH_H_ #include "os_message.h" #include "os_flash.h" @@ -9,24 +9,24 @@ /** * Flash commands */ -#define FLASH_CMD_REG 0x10000 +#define FLASH_CMD_REG 0x10000 /* set whole chip erase mode */ -#define FLASH_CMD_CHIP_ERASE 0x3C000000 +#define FLASH_CMD_CHIP_ERASE 0x3C000000 /* set sector erase mode */ -#define FLASH_CMD_SECTOR_ERASE 0x4B000000 +#define FLASH_CMD_SECTOR_ERASE 0x4B000000 /* do erasure */ #define FLASH_CMD_EXECUTE_ERASE 0x78000000 /* program selected page */ -#define FLASH_CMD_PROGRAM_PAGE 0xA5000000 +#define FLASH_CMD_PROGRAM_PAGE 0xA5000000 /* set page program mode */ -#define FLASH_CMD_PAGE_PROGRAM 0xB4000000 +#define FLASH_CMD_PAGE_PROGRAM 0xB4000000 /* set status mode */ -#define FLASH_CMD_STATUS 0xD2000000 +#define FLASH_CMD_STATUS 0xD2000000 /* set silicon id mode */ -#define FLASH_CMD_ID 0xE1000000 +#define FLASH_CMD_ID 0xE1000000 /* set read mode */ -#define FLASH_CMD_READ_ARRAY 0xF0000000 +#define FLASH_CMD_READ_ARRAY 0xF0000000 extern OSIoMesg __osFlashMsg; extern OSMesgQueue __osFlashMessageQ; diff --git a/include/PR/os_internal_gio.h b/include/PR/os_internal_gio.h index ff13385..3a6d8d8 100644 --- a/include/PR/os_internal_gio.h +++ b/include/PR/os_internal_gio.h @@ -12,14 +12,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_INTERNAL_GIO_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -31,10 +31,9 @@ extern "C" { /* Development board functions */ -extern void __osGIOInit(s32); -extern void __osGIOInterrupt(s32); -extern void __osGIORawInterrupt(s32); - +extern void __osGIOInit(s32); +extern void __osGIOInterrupt(s32); +extern void __osGIORawInterrupt(s32); #endif /* _LANGUAGE_C */ diff --git a/include/PR/os_internal_host.h b/include/PR/os_internal_host.h index b6d1951..6cc2548 100644 --- a/include/PR/os_internal_host.h +++ b/include/PR/os_internal_host.h @@ -12,14 +12,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_INTERNAL_HOST_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -30,8 +30,7 @@ extern "C" { #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /* routine for rdb port */ -extern u32 __osRdbSend(u8 *buf, u32 size, u32 type); - +extern u32 __osRdbSend(u8* buf, u32 size, u32 type); #endif /* _LANGUAGE_C */ diff --git a/include/PR/os_internal_reg.h b/include/PR/os_internal_reg.h index 206b721..cdd3b99 100644 --- a/include/PR/os_internal_reg.h +++ b/include/PR/os_internal_reg.h @@ -12,7 +12,7 @@ /*---------------------------------------------------------------------* Copyright (C) 1998 Nintendo. (Originated by SGI) - + $RCSfile: os_internal_reg.h,v $ $Revision: 1.2 $ $Date: 1999/03/10 12:19:14 $ @@ -30,23 +30,23 @@ extern "C" { #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /* Routines to get/fetch coprocessor 0 registers */ -extern u32 __osGetCause(void); +extern u32 __osGetCause(void); extern void __osSetCause(u32); -extern u32 __osGetCompare(void); +extern u32 __osGetCompare(void); extern void __osSetCompare(u32); -extern u32 __osGetConfig(void); +extern u32 __osGetConfig(void); extern void __osSetConfig(u32); extern void __osSetCount(u32); -extern u32 __osGetSR(void); +extern u32 __osGetSR(void); extern void __osSetSR(u32); -extern u32 __osDisableInt(void); +extern u32 __osDisableInt(void); extern void __osRestoreInt(u32); -extern u32 __osGetWatchLo(void); +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); +extern u32 __osSetFpcCsr(u32); +extern u32 __osGetFpcCsr(void); #endif /* _LANGUAGE_C */ diff --git a/include/PR/os_internal_rsp.h b/include/PR/os_internal_rsp.h index 646e667..0b36224 100644 --- a/include/PR/os_internal_rsp.h +++ b/include/PR/os_internal_rsp.h @@ -12,14 +12,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_INTERNAL_RSP_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -31,13 +31,12 @@ extern "C" { /* 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); - +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 */ diff --git a/include/PR/os_internal_si.h b/include/PR/os_internal_si.h index d0eeedc..207c440 100644 --- a/include/PR/os_internal_si.h +++ b/include/PR/os_internal_si.h @@ -12,14 +12,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_INTERNAL_SI_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -31,11 +31,10 @@ extern "C" { /* Serial interface (Si) */ -extern u32 __osSiGetStatus(void); -extern s32 __osSiRawWriteIo(u32, u32); -extern s32 __osSiRawReadIo(u32, u32 *); -extern s32 __osSiRawStartDma(s32, void *); - +extern u32 __osSiGetStatus(void); +extern s32 __osSiRawWriteIo(u32, u32); +extern s32 __osSiRawReadIo(u32, u32*); +extern s32 __osSiRawStartDma(s32, void*); #endif /* _LANGUAGE_C */ diff --git a/include/PR/os_internal_thread.h b/include/PR/os_internal_thread.h index 1305eb5..e66720c 100644 --- a/include/PR/os_internal_thread.h +++ b/include/PR/os_internal_thread.h @@ -12,14 +12,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_INTERNAL_THREAD_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -31,8 +31,7 @@ extern "C" { /* For debugger use */ -extern OSThread * __osGetActiveQueue(void); - +extern OSThread* __osGetActiveQueue(void); #endif /* _LANGUAGE_C */ diff --git a/include/PR/os_internal_tlb.h b/include/PR/os_internal_tlb.h index b92918f..8682cb9 100644 --- a/include/PR/os_internal_tlb.h +++ b/include/PR/os_internal_tlb.h @@ -12,14 +12,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_INTERNAL_TLB_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -31,12 +31,11 @@ extern "C" { /* 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); - +extern u32 __osGetTLBASID(void); +extern u32 __osGetTLBPageMask(s32); +extern u32 __osGetTLBHi(s32); +extern u32 __osGetTLBLo0(s32); +extern u32 __osGetTLBLo1(s32); #endif /* _LANGUAGE_C */ diff --git a/include/PR/os_libc.h b/include/PR/os_libc.h index 98624ad..ec0e89b 100644 --- a/include/PR/os_libc.h +++ b/include/PR/os_libc.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_LIBC_H_ #include "os_pfs.h" @@ -46,7 +46,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -55,7 +54,6 @@ extern "C" { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -64,14 +62,12 @@ extern "C" { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -81,22 +77,21 @@ extern "C" { /* byte string operations */ #ifndef MODERN_CC -extern void bcopy(const void *, void *, int); -extern int bcmp(const void *, const void *, int); -extern void bzero(void *, int); +extern void bcopy(const void*, void*, int); +extern int bcmp(const void*, const void*, int); +extern void bzero(void*, int); #else -extern void bcopy(const void *, void *, size_t); -extern int bcmp(const void *, const void *, size_t); -extern void bzero(void *, size_t); +extern void bcopy(const void*, void*, size_t); +extern int bcmp(const void*, const void*, size_t); +extern void bzero(void*, size_t); #endif /* Printf */ -extern int sprintf(char *s, const char *fmt, ...); -extern void osSyncPrintf(const char *fmt, ...); +extern int sprintf(char* s, const char* fmt, ...); +extern void osSyncPrintf(const char* fmt, ...); - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_message.h b/include/PR/os_message.h index 606c5cb..c585ead 100644 --- a/include/PR/os_message.h +++ b/include/PR/os_message.h @@ -21,7 +21,7 @@ /*---------------------------------------------------------------------* Copyright (C) 1998 Nintendo. (Originated by SGI) - + $RCSfile: os_message.h,v $ $Revision: 1.1 $ $Date: 1998/10/09 08:01:15 $ @@ -50,21 +50,20 @@ typedef u32 OSEvent; /* * Structure for message */ -typedef void *OSMesg; +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 */ + 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) */ /************************************************************************** @@ -75,42 +74,41 @@ typedef struct OSMesgQueue_s { /* Events */ #ifdef _FINALROM -#define OS_NUM_EVENTS 15 +#define OS_NUM_EVENTS 15 #else -#define OS_NUM_EVENTS 23 +#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 */ +#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 +#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 - +#define OS_MESG_NOBLOCK 0 +#define OS_MESG_BLOCK 1 #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) @@ -121,12 +119,11 @@ typedef struct OSMesgQueue_s { */ /* Get count of valid messages in queue */ -#define MQ_GET_COUNT(mq) ((mq)->validCount) +#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) - +#define MQ_IS_EMPTY(mq) (MQ_GET_COUNT(mq) == 0) +#define MQ_IS_FULL(mq) (MQ_GET_COUNT(mq) >= (mq)->msgCount) /************************************************************************** * @@ -134,7 +131,6 @@ typedef struct OSMesgQueue_s { * */ - /************************************************************************** * * Function prototypes @@ -143,17 +139,16 @@ typedef struct OSMesgQueue_s { /* 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); +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); +extern void osSetEventMesg(OSEvent, OSMesgQueue*, OSMesg); - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_motor.h b/include/PR/os_motor.h index 2edb8e6..1c1c009 100644 --- a/include/PR/os_motor.h +++ b/include/PR/os_motor.h @@ -1,14 +1,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_MOTOR_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -19,7 +19,6 @@ extern "C" { #include "os_pfs.h" #include "os_version.h" - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -28,7 +27,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -37,7 +35,6 @@ extern "C" { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -46,14 +43,12 @@ extern "C" { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -62,20 +57,19 @@ extern "C" { /* Rumble PAK interface */ -extern s32 osMotorInit(OSMesgQueue *, OSPfs *, int); +extern s32 osMotorInit(OSMesgQueue*, OSPfs*, int); #if BUILD_VERSION >= VERSION_J -#define MOTOR_START 1 -#define MOTOR_STOP 0 -#define osMotorStart(x) __osMotorAccess((x), MOTOR_START) -#define osMotorStop(x) __osMotorAccess((x), MOTOR_STOP) -extern s32 __osMotorAccess(OSPfs *, s32); +#define MOTOR_START 1 +#define MOTOR_STOP 0 +#define osMotorStart(x) __osMotorAccess((x), MOTOR_START) +#define osMotorStop(x) __osMotorAccess((x), MOTOR_STOP) +extern s32 __osMotorAccess(OSPfs*, s32); #else -extern s32 osMotorStop(OSPfs *); -extern s32 osMotorStart(OSPfs *); +extern s32 osMotorStop(OSPfs*); +extern s32 osMotorStart(OSPfs*); #endif - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_pfs.h b/include/PR/os_pfs.h index 9c86e23..40c085d 100644 --- a/include/PR/os_pfs.h +++ b/include/PR/os_pfs.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_PFS_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -37,7 +37,6 @@ extern "C" { #include #include "os_message.h" - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -50,30 +49,29 @@ extern "C" { * 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; + 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]; + 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) */ /************************************************************************** @@ -82,73 +80,71 @@ typedef struct { * */ - /* 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 OS_PFS_VERSION 0x0200 +#define OS_PFS_VERSION_HI (OS_PFS_VERSION >> 8) +#define OS_PFS_VERSION_LO (OS_PFS_VERSION & 255) #define PFS_INODE_SIZE_PER_PAGE 128 #define PFS_FILE_NAME_LEN 16 #define PFS_FILE_EXT_LEN 4 -#define BLOCKSIZE 32 /* bytes */ -#define PFS_ONE_PAGE 8 /* blocks */ +#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 +#define PFS_READ 0 +#define PFS_WRITE 1 +#define PFS_CREATE 2 /* File System status */ -#define PFS_INITIALIZED 0x1 -#define PFS_CORRUPTED 0x2 -#define PFS_ID_BROKEN 0x4 -#define PFS_MOTOR_INITIALIZED 0x8 -#define PFS_GBPAK_INITIALIZED 0x10 +#define PFS_INITIALIZED 0x1 +#define PFS_CORRUPTED 0x2 +#define PFS_ID_BROKEN 0x4 +#define PFS_MOTOR_INITIALIZED 0x8 +#define PFS_GBPAK_INITIALIZED 0x10 /* Definition for page usage */ -#define PFS_EOF 1 -#define PFS_PAGE_NOT_EXIST 2 -#define PFS_PAGE_NOT_USED 3 +#define PFS_EOF 1 +#define PFS_PAGE_NOT_EXIST 2 +#define PFS_PAGE_NOT_USED 3 /* 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 */ +#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 */ /* Definition for bank */ -#define PFS_ID_BANK_256K 0 -#define PFS_ID_BANK_1M 4 -#define PFS_BANKS_256K 1 +#define PFS_ID_BANK_256K 0 +#define PFS_ID_BANK_1M 4 +#define PFS_BANKS_256K 1 -#define PFS_WRITTEN 2 -#define DEF_DIR_PAGES 2 +#define PFS_WRITTEN 2 +#define DEF_DIR_PAGES 2 -#define PFS_ID_0AREA 1 -#define PFS_ID_1AREA 3 -#define PFS_ID_2AREA 4 -#define PFS_ID_3AREA 6 -#define PFS_LABEL_AREA 7 -#define PFS_ID_PAGE PFS_ONE_PAGE * 0 +#define PFS_ID_0AREA 1 +#define PFS_ID_1AREA 3 +#define PFS_ID_2AREA 4 +#define PFS_ID_3AREA 6 +#define PFS_LABEL_AREA 7 +#define PFS_ID_PAGE PFS_ONE_PAGE * 0 -#define PFS_BANK_LAPPED_BY 8 /* => u8 */ +#define PFS_BANK_LAPPED_BY 8 /* => u8 */ #define PFS_SECTOR_PER_BANK 32 #define PFS_INODE_DIST_MAP (PFS_BANK_LAPPED_BY * PFS_SECTOR_PER_BANK) -#define PFS_SECTOR_SIZE (PFS_INODE_SIZE_PER_PAGE/PFS_SECTOR_PER_BANK) - +#define PFS_SECTOR_SIZE (PFS_INODE_SIZE_PER_PAGE / PFS_SECTOR_PER_BANK) #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) @@ -158,14 +154,12 @@ typedef struct { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -174,24 +168,23 @@ typedef struct { /* 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 *); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_pi.h b/include/PR/os_pi.h index f408d6c..784eab2 100644 --- a/include/PR/os_pi.h +++ b/include/PR/os_pi.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_PI_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -38,7 +38,6 @@ extern "C" { #include "os_thread.h" #include "os_message.h" - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -57,42 +56,41 @@ extern "C" { */ 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 */ + 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 */ + 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 */ + 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 */ + __OSTranxInfo transferInfo; /* for disk only */ } OSPiHandle; typedef struct { - u8 type; + u8 type; u32 address; } OSPiInfo; @@ -100,35 +98,34 @@ typedef struct { * 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 */ + 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 */ + 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); + 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) */ /************************************************************************** @@ -139,34 +136,33 @@ typedef struct { /* 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 */ +#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) +#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 +#define OS_MESG_PRI_NORMAL 0 +#define OS_MESG_PRI_HIGH 1 /* * PI/EPI */ -#define PI_DOMAIN1 0 -#define PI_DOMAIN2 1 - +#define PI_DOMAIN1 0 +#define PI_DOMAIN2 1 #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) @@ -176,15 +172,13 @@ typedef struct { * */ - /************************************************************************** * * Extern variables * */ -extern OSPiHandle *__osPiTable; /* The head of OSPiHandle link list */ - +extern OSPiHandle* __osPiTable; /* The head of OSPiHandle link list */ /************************************************************************** * @@ -192,27 +186,26 @@ extern OSPiHandle *__osPiTable; /* The head of OSPiHandle link list */ * */ -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 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); /* Enhanced PI interface */ -extern OSPiHandle *osCartRomInit(void); -extern OSPiHandle *osLeoDiskInit(void); -extern OSPiHandle *osDriveRomInit(void); +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 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*); - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_rdp.h b/include/PR/os_rdp.h index 6b3d288..995bd46 100644 --- a/include/PR/os_rdp.h +++ b/include/PR/os_rdp.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_RDP_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -44,7 +44,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -53,7 +52,6 @@ extern "C" { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -62,14 +60,12 @@ extern "C" { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -77,13 +73,12 @@ extern "C" { */ /* Display processor interface (Dp) */ -extern u32 osDpGetStatus(void); -extern void osDpSetStatus(u32); -extern void osDpGetCounters(u32 *); -extern s32 osDpSetNextBuffer(void *, u64); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_reg.h b/include/PR/os_reg.h index 50aa218..ad50547 100644 --- a/include/PR/os_reg.h +++ b/include/PR/os_reg.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_REG_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -44,7 +44,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -53,7 +52,6 @@ extern "C" { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -62,14 +60,12 @@ extern "C" { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -78,10 +74,9 @@ extern "C" { /* Miscellaneous operations */ -extern u32 osGetCount(void); +extern u32 osGetCount(void); - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_rsp.h b/include/PR/os_rsp.h index 1211605..6115659 100644 --- a/include/PR/os_rsp.h +++ b/include/PR/os_rsp.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_RSP_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -44,7 +44,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -53,7 +52,6 @@ extern "C" { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -62,22 +60,19 @@ extern "C" { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes * */ - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_si.h b/include/PR/os_si.h index 23b07c0..86cc228 100644 --- a/include/PR/os_si.h +++ b/include/PR/os_si.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_SI_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -44,7 +44,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -53,7 +52,6 @@ extern "C" { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -62,22 +60,19 @@ extern "C" { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes * */ - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_system.h b/include/PR/os_system.h index 1179189..20e6f13 100644 --- a/include/PR/os_system.h +++ b/include/PR/os_system.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_SYSTEM_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -44,7 +44,6 @@ extern "C" { * */ - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -54,17 +53,16 @@ extern "C" { */ /* - * Values for osTvType + * Values for osTvType */ -#define OS_TV_PAL 0 -#define OS_TV_NTSC 1 -#define OS_TV_MPAL 2 +#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 - +#define OS_APP_NMI_BUFSIZE 64 #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) @@ -74,26 +72,24 @@ extern "C" { * */ - /************************************************************************** * * 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 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 */ +extern u64 osClockRate; +extern OSIntMask __OSGlobalIntMask; /* global interrupt mask */ /************************************************************************** * @@ -101,15 +97,14 @@ extern OSIntMask __OSGlobalIntMask; /* global interrupt mask */ * */ -extern void osInitialize(void); -extern void osExit(void); -extern u32 osGetMemSize(void); +extern void osInitialize(void); +extern void osExit(void); +extern u32 osGetMemSize(void); /* pre-NMI */ -extern s32 osAfterPreNMI(void); +extern s32 osAfterPreNMI(void); - -#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_thread.h b/include/PR/os_thread.h index 68c8e74..a2b8564 100644 --- a/include/PR/os_thread.h +++ b/include/PR/os_thread.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_THREAD_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -64,7 +64,7 @@ typedef struct { u64 lo, hi; u32 sr, pc, cause, badvaddr, rcp; u32 fpcsr; - __OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14; + __OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14; __OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30; } __OSThreadContext; @@ -75,19 +75,18 @@ typedef struct { } __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 */ + 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) */ /************************************************************************** @@ -98,25 +97,25 @@ typedef struct OSThread_s { /* Thread states */ -#define OS_STATE_STOPPED (1 << 0) -#define OS_STATE_RUNNABLE (1 << 1) -#define OS_STATE_RUNNING (1 << 2) -#define OS_STATE_WAITING (1 << 3) +#define OS_STATE_STOPPED (1 << 0) +#define OS_STATE_RUNNABLE (1 << 1) +#define OS_STATE_RUNNING (1 << 2) +#define OS_STATE_WAITING (1 << 3) /* 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 */ +#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 +#define THPROF_IDMAX 64 +#define THPROF_STACKSIZE 256 #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) @@ -126,14 +125,12 @@ typedef struct OSThread_s { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -142,17 +139,16 @@ typedef struct OSThread_s { /* 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 *); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_time.h b/include/PR/os_time.h index deaec65..8215f2d 100644 --- a/include/PR/os_time.h +++ b/include/PR/os_time.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_TIME_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -37,7 +37,6 @@ extern "C" { #include #include "os_message.h" - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -47,24 +46,23 @@ extern "C" { */ /* - * Structure for time value + * Structure for time value */ -typedef u64 OSTime; +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 */ + 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) */ /************************************************************************** @@ -73,7 +71,6 @@ typedef struct OSTimer_s { * */ - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -82,14 +79,12 @@ typedef struct OSTimer_s { * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -98,14 +93,12 @@ typedef struct OSTimer_s { /* Timer interface */ -extern OSTime osGetTime(void); -extern void osSetTime(OSTime); -extern int osSetTimer(OSTimer *, OSTime, OSTime, - OSMesgQueue *, OSMesg); -extern int osStopTimer(OSTimer *); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_tlb.h b/include/PR/os_tlb.h index 2cdd5c9..c23359a 100644 --- a/include/PR/os_tlb.h +++ b/include/PR/os_tlb.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_TLB_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -46,7 +46,6 @@ extern "C" { typedef u32 OSPageMask; - #endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ /************************************************************************** @@ -58,14 +57,13 @@ typedef u32 OSPageMask; /* * 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 - +#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) @@ -75,14 +73,12 @@ typedef u32 OSPageMask; * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -91,14 +87,13 @@ typedef u32 OSPageMask; /* 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); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_version.h b/include/PR/os_version.h index aa10d20..545a137 100644 --- a/include/PR/os_version.h +++ b/include/PR/os_version.h @@ -1,14 +1,14 @@ /*---------------------------------------------------------------------* 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_VERSION_H_ #define VERSION_D 1 #define VERSION_E 2 @@ -20,7 +20,7 @@ #define VERSION_K 8 #define VERSION_L 9 -#define OS_MAJOR_VERSION BUILD_VERSION_STRING /* major version */ -#define OS_MINOR_VERSION 0 /* patch level */ +#define OS_MAJOR_VERSION BUILD_VERSION_STRING /* major version */ +#define OS_MINOR_VERSION 0 /* patch level */ #endif /* !_OS_VERSION_H_ */ diff --git a/include/PR/os_vi.h b/include/PR/os_vi.h index 5a17f25..692d84d 100644 --- a/include/PR/os_vi.h +++ b/include/PR/os_vi.h @@ -21,14 +21,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_VI_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -38,7 +38,6 @@ extern "C" { #include "os_thread.h" #include "os_message.h" - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -51,40 +50,37 @@ extern "C" { * 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; + 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; + 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 */ + 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) */ /************************************************************************** @@ -96,94 +92,93 @@ typedef struct { /* * 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_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_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_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 +#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 +#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 - +#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) @@ -193,61 +188,60 @@ typedef struct { * */ - /************************************************************************** * * Extern variables * */ -extern OSViMode osViModeTable[]; /* Global VI mode table */ +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 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 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 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 osViModeFpalLpn1; /* Individual VI FPAL modes */ extern OSViMode osViModeFpalLpf1; extern OSViMode osViModeFpalLan1; extern OSViMode osViModeFpalLaf1; @@ -262,7 +256,6 @@ extern OSViMode osViModeFpalHaf1; extern OSViMode osViModeFpalHpn2; extern OSViMode osViModeFpalHpf2; - /************************************************************************** * * Function prototypes @@ -270,26 +263,25 @@ extern OSViMode osViModeFpalHpf2; */ /* 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); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/os_voice.h b/include/PR/os_voice.h index 4e3cf6e..692c0c0 100644 --- a/include/PR/os_voice.h +++ b/include/PR/os_voice.h @@ -1,14 +1,14 @@ /*---------------------------------------------------------------------* 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_ +#define _OS_VOICE_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -24,23 +24,22 @@ extern "C" { * */ -typedef struct { /* Voice Recognition System */ - OSMesgQueue *__mq; /* SI Message Queue */ - int __channel; /* Controller Port # */ - s32 __mode; - u8 cmd_status; /* Command Status */ +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]; +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) */ @@ -52,17 +51,16 @@ typedef struct { /* Voice Recognition System */ /* 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 +#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) @@ -72,14 +70,12 @@ typedef struct { /* Voice Recognition System */ * */ - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -87,19 +83,18 @@ typedef struct { /* Voice Recognition System */ */ /* 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 *); +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) */ +#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */ #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/ramrom.h b/include/PR/ramrom.h index 42e5c2d..b935bb7 100644 --- a/include/PR/ramrom.h +++ b/include/PR/ramrom.h @@ -1,5 +1,5 @@ #ifndef _RAMROM_H -#define _RAMROM_H +#define _RAMROM_H /************************************************************************** * * @@ -23,7 +23,7 @@ /* * 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 * @@ -33,20 +33,20 @@ * The last 8 bytes of the buffer are used in the emulator environment */ -#define RAMROM_SIZE (0x1000000) +#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_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_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)*/ @@ -55,27 +55,27 @@ * 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 +#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 +#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 +#define RAMROM_PIF2BOOTSTRAP_OFFSET 0x1000 typedef struct { long type; - long length; /* in bytes of userdata */ + long length; /* in bytes of userdata */ long magic; char userdata[RAMROM_USER_DATA_SIZE]; } RamRomBuffer; @@ -87,26 +87,26 @@ typedef struct { * 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 +#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 __RamRomInit(int key, void* romaddr); void __RamRomDestroy(int key); #endif /* _EMULATOR */ diff --git a/include/PR/rcp.h b/include/PR/rcp.h index 2ae8f30..a03d3d5 100644 --- a/include/PR/rcp.h +++ b/include/PR/rcp.h @@ -29,10 +29,10 @@ /** * RCP memory map overview: - * + * * 0x0000_0000 .. 0x03ef_ffff RDRAM memory * 0x03f0_0000 .. 0x03ff_ffff RDRAM registers - * + * * 0x0400_0000 .. 0x0400_2000 SP memory * 0x0404_0000 .. 0x040f_ffff SP registers * 0x0410_0000 .. 0x041f_ffff DP command registers @@ -44,12 +44,12 @@ * 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 @@ -61,41 +61,41 @@ * RDRAM memory */ -#define RDRAM_0_START 0x00000000 -#define RDRAM_0_END 0x001FFFFF -#define RDRAM_1_START 0x00200000 -#define RDRAM_1_END 0x003FFFFF +#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 +#define RDRAM_START RDRAM_0_START +#define RDRAM_END RDRAM_1_END /** * RDRAM registers */ -#define RDRAM_BASE_REG 0x03F00000 +#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_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_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_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_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 @@ -111,346 +111,344 @@ * |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 - +#define PIF_ROM_START 0x1FC00000 +#define PIF_ROM_END 0x1FC007BF +#define PIF_RAM_START 0x1FC007C0 +#define PIF_RAM_END 0x1FC007FF /** - * Controller channel + * 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 */ +#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 */ +#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 */ +#define DEVICE_TYPE_INIT 7 /* initial value */ /* 8-14 are reserved */ /** * Signal Processor (SP) Memory */ -#define SP_DMEM_START 0x04000000 -#define SP_DMEM_END 0x04000FFF -#define SP_IMEM_START 0x04001000 -#define SP_IMEM_END 0x04001FFF +#define SP_DMEM_START 0x04000000 +#define SP_DMEM_END 0x04000FFF +#define SP_IMEM_START 0x04001000 +#define SP_IMEM_END 0x04001FFF /** * Signal Processor (SP) CP0 Registers */ -#define SP_BASE_REG 0x04040000 +#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) +#define SP_MEM_ADDR_REG (SP_BASE_REG + 0x00) /* SP DRAM DMA address (R/W): [23:0] RDRAM address */ -#define SP_DRAM_ADDR_REG (SP_BASE_REG + 0x04) +#define SP_DRAM_ADDR_REG (SP_BASE_REG + 0x04) /* SP read DMA length (R/W): [11:0] length, [19:12] count, [31:20] skip; RDRAM -> I/DMEM */ -#define SP_RD_LEN_REG (SP_BASE_REG + 0x08) +#define SP_RD_LEN_REG (SP_BASE_REG + 0x08) /* SP write DMA length (R/W): [11:0] length, [19:12] count, [31:20] skip; I/DMEM -> RDRAM */ -#define SP_WR_LEN_REG (SP_BASE_REG + 0x0C) +#define SP_WR_LEN_REG (SP_BASE_REG + 0x0C) /* SP status (R/W): [14:0] valid bits; see below for write/read mode */ -#define SP_STATUS_REG (SP_BASE_REG + 0x10) +#define SP_STATUS_REG (SP_BASE_REG + 0x10) /* SP DMA full (R): [0] dma full */ -#define SP_DMA_FULL_REG (SP_BASE_REG + 0x14) +#define SP_DMA_FULL_REG (SP_BASE_REG + 0x14) /* SP DMA busy (R): [0] dma busy */ -#define SP_DMA_BUSY_REG (SP_BASE_REG + 0x18) +#define SP_DMA_BUSY_REG (SP_BASE_REG + 0x18) /* SP semaphore (R/W): Read: [0] acquire semaphore; Write: [] release semaphore */ -#define SP_SEMAPHORE_REG (SP_BASE_REG + 0x1C) +#define SP_SEMAPHORE_REG (SP_BASE_REG + 0x1C) /* SP PC (R/W): [11:0] program counter */ -#define SP_PC_REG 0x04080000 +#define SP_PC_REG 0x04080000 /** * SP_MEM_ADDR_REG: bit 12 */ -#define SP_DMA_DMEM (0 << 12) -#define SP_DMA_IMEM (1 << 12) +#define SP_DMA_DMEM (0 << 12) +#define SP_DMA_IMEM (1 << 12) /** * SP_STATUS_REG: write bits */ -#define SP_CLR_HALT (1 << 0) /* clear halt */ -#define SP_SET_HALT (1 << 1) /* set halt */ -#define SP_CLR_BROKE (1 << 2) /* clear broke */ -#define SP_CLR_INTR (1 << 3) /* clear interrupt */ -#define SP_SET_INTR (1 << 4) /* set interrupt */ -#define SP_CLR_SSTEP (1 << 5) /* clear sstep */ -#define SP_SET_SSTEP (1 << 6) /* set sstep */ -#define SP_CLR_INTR_BREAK (1 << 7) /* clear interrupt on break */ -#define SP_SET_INTR_BREAK (1 << 8) /* set interrupt on break */ -#define SP_CLR_SIG0 (1 << 9) /* clear signal 0 */ -#define SP_SET_SIG0 (1 << 10) /* set signal 0 */ -#define SP_CLR_SIG1 (1 << 11) /* clear signal 1 */ -#define SP_SET_SIG1 (1 << 12) /* set signal 1 */ -#define SP_CLR_SIG2 (1 << 13) /* clear signal 2 */ -#define SP_SET_SIG2 (1 << 14) /* set signal 2 */ -#define SP_CLR_SIG3 (1 << 15) /* clear signal 3 */ -#define SP_SET_SIG3 (1 << 16) /* set signal 3 */ -#define SP_CLR_SIG4 (1 << 17) /* clear signal 4 */ -#define SP_SET_SIG4 (1 << 18) /* set signal 4 */ -#define SP_CLR_SIG5 (1 << 19) /* clear signal 5 */ -#define SP_SET_SIG5 (1 << 20) /* set signal 5 */ -#define SP_CLR_SIG6 (1 << 21) /* clear signal 6 */ -#define SP_SET_SIG6 (1 << 22) /* set signal 6 */ -#define SP_CLR_SIG7 (1 << 23) /* clear signal 7 */ -#define SP_SET_SIG7 (1 << 24) /* set signal 7 */ +#define SP_CLR_HALT (1 << 0) /* clear halt */ +#define SP_SET_HALT (1 << 1) /* set halt */ +#define SP_CLR_BROKE (1 << 2) /* clear broke */ +#define SP_CLR_INTR (1 << 3) /* clear interrupt */ +#define SP_SET_INTR (1 << 4) /* set interrupt */ +#define SP_CLR_SSTEP (1 << 5) /* clear sstep */ +#define SP_SET_SSTEP (1 << 6) /* set sstep */ +#define SP_CLR_INTR_BREAK (1 << 7) /* clear interrupt on break */ +#define SP_SET_INTR_BREAK (1 << 8) /* set interrupt on break */ +#define SP_CLR_SIG0 (1 << 9) /* clear signal 0 */ +#define SP_SET_SIG0 (1 << 10) /* set signal 0 */ +#define SP_CLR_SIG1 (1 << 11) /* clear signal 1 */ +#define SP_SET_SIG1 (1 << 12) /* set signal 1 */ +#define SP_CLR_SIG2 (1 << 13) /* clear signal 2 */ +#define SP_SET_SIG2 (1 << 14) /* set signal 2 */ +#define SP_CLR_SIG3 (1 << 15) /* clear signal 3 */ +#define SP_SET_SIG3 (1 << 16) /* set signal 3 */ +#define SP_CLR_SIG4 (1 << 17) /* clear signal 4 */ +#define SP_SET_SIG4 (1 << 18) /* set signal 4 */ +#define SP_CLR_SIG5 (1 << 19) /* clear signal 5 */ +#define SP_SET_SIG5 (1 << 20) /* set signal 5 */ +#define SP_CLR_SIG6 (1 << 21) /* clear signal 6 */ +#define SP_SET_SIG6 (1 << 22) /* set signal 6 */ +#define SP_CLR_SIG7 (1 << 23) /* clear signal 7 */ +#define SP_SET_SIG7 (1 << 24) /* set signal 7 */ /* * SP_STATUS_REG: read bits */ -#define SP_STATUS_HALT (1 << 0) -#define SP_STATUS_BROKE (1 << 1) -#define SP_STATUS_DMA_BUSY (1 << 2) -#define SP_STATUS_DMA_FULL (1 << 3) -#define SP_STATUS_IO_FULL (1 << 4) -#define SP_STATUS_SSTEP (1 << 5) -#define SP_STATUS_INTR_BREAK (1 << 6) -#define SP_STATUS_SIG0 (1 << 7) -#define SP_STATUS_SIG1 (1 << 8) -#define SP_STATUS_SIG2 (1 << 9) -#define SP_STATUS_SIG3 (1 << 10) -#define SP_STATUS_SIG4 (1 << 11) -#define SP_STATUS_SIG5 (1 << 12) -#define SP_STATUS_SIG6 (1 << 13) -#define SP_STATUS_SIG7 (1 << 14) +#define SP_STATUS_HALT (1 << 0) +#define SP_STATUS_BROKE (1 << 1) +#define SP_STATUS_DMA_BUSY (1 << 2) +#define SP_STATUS_DMA_FULL (1 << 3) +#define SP_STATUS_IO_FULL (1 << 4) +#define SP_STATUS_SSTEP (1 << 5) +#define SP_STATUS_INTR_BREAK (1 << 6) +#define SP_STATUS_SIG0 (1 << 7) +#define SP_STATUS_SIG1 (1 << 8) +#define SP_STATUS_SIG2 (1 << 9) +#define SP_STATUS_SIG3 (1 << 10) +#define SP_STATUS_SIG4 (1 << 11) +#define SP_STATUS_SIG5 (1 << 12) +#define SP_STATUS_SIG6 (1 << 13) +#define SP_STATUS_SIG7 (1 << 14) -/* +/* * SP_STATUS_REG: 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 +#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 +#define SP_IBIST_REG 0x04080004 /* * SP_IBIST_REG: write bits */ -#define SP_IBIST_CHECK (1 << 0) /* BIST check */ -#define SP_IBIST_GO (1 << 1) /* BIST go */ -#define SP_IBIST_CLEAR (1 << 2) /* BIST clear */ +#define SP_IBIST_CHECK (1 << 0) /* BIST check */ +#define SP_IBIST_GO (1 << 1) /* BIST go */ +#define SP_IBIST_CLEAR (1 << 2) /* BIST clear */ /* * SP_BIST_REG: read bits * First 2 bits are same as in write mode */ -#define SP_IBIST_DONE (1 << 2) -#define SP_IBIST_FAILED 0x78 /* bits [6:3], BIST fail */ +#define SP_IBIST_DONE (1 << 2) +#define SP_IBIST_FAILED 0x78 /* bits [6:3], BIST fail */ /** * Display Processor Command (DPC) Registers */ -#define DPC_BASE_REG 0x04100000 +#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) +#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) +#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) +#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) +#define DPC_STATUS_REG (DPC_BASE_REG + 0x0C) /* DP clock counter (R): [23:0] clock counter */ -#define DPC_CLOCK_REG (DPC_BASE_REG + 0x10) +#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) +#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) +#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) +#define DPC_TMEM_REG (DPC_BASE_REG + 0x1C) /** * DPC_STATUS_REG: write bits */ -#define DPC_CLR_XBUS_DMEM_DMA (1 << 0) -#define DPC_SET_XBUS_DMEM_DMA (1 << 1) -#define DPC_CLR_FREEZE (1 << 2) -#define DPC_SET_FREEZE (1 << 3) -#define DPC_CLR_FLUSH (1 << 4) -#define DPC_SET_FLUSH (1 << 5) -#define DPC_CLR_TMEM_CTR (1 << 6) -#define DPC_CLR_PIPE_CTR (1 << 7) -#define DPC_CLR_CMD_CTR (1 << 8) -#define DPC_CLR_CLOCK_CTR (1 << 9) +#define DPC_CLR_XBUS_DMEM_DMA (1 << 0) +#define DPC_SET_XBUS_DMEM_DMA (1 << 1) +#define DPC_CLR_FREEZE (1 << 2) +#define DPC_SET_FREEZE (1 << 3) +#define DPC_CLR_FLUSH (1 << 4) +#define DPC_SET_FLUSH (1 << 5) +#define DPC_CLR_TMEM_CTR (1 << 6) +#define DPC_CLR_PIPE_CTR (1 << 7) +#define DPC_CLR_CMD_CTR (1 << 8) +#define DPC_CLR_CLOCK_CTR (1 << 9) /** * DPC_STATUS_REG: read bits */ -#define DPC_STATUS_XBUS_DMEM_DMA (1 << 0) -#define DPC_STATUS_FREEZE (1 << 1) -#define DPC_STATUS_FLUSH (1 << 2) -#define DPC_STATUS_START_GCLK (1 << 3) -#define DPC_STATUS_TMEM_BUSY (1 << 4) -#define DPC_STATUS_PIPE_BUSY (1 << 5) -#define DPC_STATUS_CMD_BUSY (1 << 6) -#define DPC_STATUS_CBUF_READY (1 << 7) -#define DPC_STATUS_DMA_BUSY (1 << 8) -#define DPC_STATUS_END_VALID (1 << 9) -#define DPC_STATUS_START_VALID (1 << 10) +#define DPC_STATUS_XBUS_DMEM_DMA (1 << 0) +#define DPC_STATUS_FREEZE (1 << 1) +#define DPC_STATUS_FLUSH (1 << 2) +#define DPC_STATUS_START_GCLK (1 << 3) +#define DPC_STATUS_TMEM_BUSY (1 << 4) +#define DPC_STATUS_PIPE_BUSY (1 << 5) +#define DPC_STATUS_CMD_BUSY (1 << 6) +#define DPC_STATUS_CBUF_READY (1 << 7) +#define DPC_STATUS_DMA_BUSY (1 << 8) +#define DPC_STATUS_END_VALID (1 << 9) +#define DPC_STATUS_START_VALID (1 << 10) /** * Display Processor Span (DPS) Registers */ -#define DPS_BASE_REG 0x04200000 +#define DPS_BASE_REG 0x04200000 /* DP tmem built-in self-test (R/W): [10:0] BIST status bits */ -#define DPS_TBIST_REG (DPS_BASE_REG + 0x00) +#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) +#define DPS_TEST_MODE_REG (DPS_BASE_REG + 0x04) /* DP span buffer test address (R/W): [6:0] bits */ -#define DPS_BUFTEST_ADDR_REG (DPS_BASE_REG + 0x08) +#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) +#define DPS_BUFTEST_DATA_REG (DPS_BASE_REG + 0x0C) /* * DPS_TMEM_BIST_REG: write bits */ -#define DPS_TBIST_CHECK (1 << 0) -#define DPS_TBIST_GO (1 << 1) -#define DPS_TBIST_CLEAR (1 << 2) +#define DPS_TBIST_CHECK (1 << 0) +#define DPS_TBIST_GO (1 << 1) +#define DPS_TBIST_CLEAR (1 << 2) /* * DPS_TMEM_BIST_REG: read bits * First 2 bits are same as in write mode */ -#define DPS_TBIST_DONE (1 << 2) -#define DPS_TBIST_FAILED 0x7F8 /* bits [10:3], BIST fail */ +#define DPS_TBIST_DONE (1 << 2) +#define DPS_TBIST_FAILED 0x7F8 /* bits [10:3], BIST fail */ /** * MIPS Interface (MI) Registers */ -#define MI_BASE_REG 0x04300000 +#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 +#define MI_INIT_MODE_REG (MI_BASE_REG + 0x00) +#define MI_MODE_REG MI_INIT_MODE_REG /* * MI_MODE_REG: write bits */ -#define MI_CLR_INIT (1 << 7) /* clear init mode */ -#define MI_SET_INIT (1 << 8) /* set init mode */ -#define MI_CLR_EBUS (1 << 9) /* clear ebus test */ -#define MI_SET_EBUS (1 << 10) /* set ebus test mode */ -#define MI_CLR_DP_INTR (1 << 11) /* clear dp interrupt */ -#define MI_CLR_RDRAM (1 << 12) /* clear RDRAM reg */ -#define MI_SET_RDRAM (1 << 13) /* set RDRAM reg mode */ +#define MI_CLR_INIT (1 << 7) /* clear init mode */ +#define MI_SET_INIT (1 << 8) /* set init mode */ +#define MI_CLR_EBUS (1 << 9) /* clear ebus test */ +#define MI_SET_EBUS (1 << 10) /* set ebus test mode */ +#define MI_CLR_DP_INTR (1 << 11) /* clear dp interrupt */ +#define MI_CLR_RDRAM (1 << 12) /* clear RDRAM reg */ +#define MI_SET_RDRAM (1 << 13) /* set RDRAM reg mode */ /* * MI_MODE_REG: read bits */ -#define MI_MODE_INIT (1 << 7) /* init mode */ -#define MI_MODE_EBUS (1 << 8) /* ebus test mode */ -#define MI_MODE_RDRAM (1 << 9) /* RDRAM reg mode */ +#define MI_MODE_INIT (1 << 7) /* init mode */ +#define MI_MODE_EBUS (1 << 8) /* ebus test mode */ +#define MI_MODE_RDRAM (1 << 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 +#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) +#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 +/* + * 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) +#define MI_INTR_MASK_REG (MI_BASE_REG + 0x0C) /* * MI_INTR_REG: read bits */ -#define MI_INTR_SP (1 << 0) /* SP intr */ -#define MI_INTR_SI (1 << 1) /* SI intr */ -#define MI_INTR_AI (1 << 2) /* AI intr */ -#define MI_INTR_VI (1 << 3) /* VI intr */ -#define MI_INTR_PI (1 << 4) /* PI intr */ -#define MI_INTR_DP (1 << 5) /* DP intr */ +#define MI_INTR_SP (1 << 0) /* SP intr */ +#define MI_INTR_SI (1 << 1) /* SI intr */ +#define MI_INTR_AI (1 << 2) /* AI intr */ +#define MI_INTR_VI (1 << 3) /* VI intr */ +#define MI_INTR_PI (1 << 4) /* PI intr */ +#define MI_INTR_DP (1 << 5) /* DP intr */ /* * MI_INTR_MASK_REG: write bits */ -#define MI_INTR_MASK_CLR_SP (1 << 0) /* clear SP mask */ -#define MI_INTR_MASK_SET_SP (1 << 1) /* set SP mask */ -#define MI_INTR_MASK_CLR_SI (1 << 2) /* clear SI mask */ -#define MI_INTR_MASK_SET_SI (1 << 3) /* set SI mask */ -#define MI_INTR_MASK_CLR_AI (1 << 4) /* clear AI mask */ -#define MI_INTR_MASK_SET_AI (1 << 5) /* set AI mask */ -#define MI_INTR_MASK_CLR_VI (1 << 6) /* clear VI mask */ -#define MI_INTR_MASK_SET_VI (1 << 7) /* set VI mask */ -#define MI_INTR_MASK_CLR_PI (1 << 8) /* clear PI mask */ -#define MI_INTR_MASK_SET_PI (1 << 9) /* set PI mask */ -#define MI_INTR_MASK_CLR_DP (1 << 10) /* clear DP mask */ -#define MI_INTR_MASK_SET_DP (1 << 11) /* set DP mask */ +#define MI_INTR_MASK_CLR_SP (1 << 0) /* clear SP mask */ +#define MI_INTR_MASK_SET_SP (1 << 1) /* set SP mask */ +#define MI_INTR_MASK_CLR_SI (1 << 2) /* clear SI mask */ +#define MI_INTR_MASK_SET_SI (1 << 3) /* set SI mask */ +#define MI_INTR_MASK_CLR_AI (1 << 4) /* clear AI mask */ +#define MI_INTR_MASK_SET_AI (1 << 5) /* set AI mask */ +#define MI_INTR_MASK_CLR_VI (1 << 6) /* clear VI mask */ +#define MI_INTR_MASK_SET_VI (1 << 7) /* set VI mask */ +#define MI_INTR_MASK_CLR_PI (1 << 8) /* clear PI mask */ +#define MI_INTR_MASK_SET_PI (1 << 9) /* set PI mask */ +#define MI_INTR_MASK_CLR_DP (1 << 10) /* clear DP mask */ +#define MI_INTR_MASK_SET_DP (1 << 11) /* set DP mask */ /* * MI_INTR_MASK_REG: read bits */ -#define MI_INTR_MASK_SP (1 << 0) /* SP intr mask */ -#define MI_INTR_MASK_SI (1 << 1) /* SI intr mask */ -#define MI_INTR_MASK_AI (1 << 2) /* AI intr mask */ -#define MI_INTR_MASK_VI (1 << 3) /* VI intr mask */ -#define MI_INTR_MASK_PI (1 << 4) /* PI intr mask */ -#define MI_INTR_MASK_DP (1 << 5) /* DP intr mask */ +#define MI_INTR_MASK_SP (1 << 0) /* SP intr mask */ +#define MI_INTR_MASK_SI (1 << 1) /* SI intr mask */ +#define MI_INTR_MASK_AI (1 << 2) /* AI intr mask */ +#define MI_INTR_MASK_VI (1 << 3) /* VI intr mask */ +#define MI_INTR_MASK_PI (1 << 4) /* PI intr mask */ +#define MI_INTR_MASK_DP (1 << 5) /* DP intr mask */ /** - * Video Interface (VI) Registers + * Video Interface (VI) Registers */ -#define VI_BASE_REG 0x04400000 +#define VI_BASE_REG 0x04400000 -/* VI status/control (R/W): [15-0] valid bits: - * [1:0] = type[1:0] (pixel size) +/* 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) @@ -461,7 +459,7 @@ * [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] + * [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) @@ -470,112 +468,118 @@ * [15:12] = reserved * */ -#define VI_CONTROL_REG (VI_BASE_REG + 0x00) -#define VI_STATUS_REG VI_CONTROL_REG +#define VI_CONTROL_REG (VI_BASE_REG + 0x00) +#define VI_STATUS_REG VI_CONTROL_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 +#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 +#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 +#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 +#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, +/* + * 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, + * [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 +#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) +#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 +/* 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) +#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 +#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 +#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 +#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) +#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) +#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) +#define VI_Y_SCALE_REG (VI_BASE_REG + 0x34) /* * Patterns to interpret VI_CONTROL_REG */ -#define VI_CTRL_TYPE_16 0x00002 /* [1:0] pixel size: 16 bit */ -#define VI_CTRL_TYPE_32 0x00003 /* [1:0] pixel size: 32 bit */ -#define VI_CTRL_GAMMA_DITHER_ON 0x00004 /* 2: default = on */ -#define VI_CTRL_GAMMA_ON 0x00008 /* 3: default = on */ -#define VI_CTRL_DIVOT_ON 0x00010 /* 4: default = on */ -#define VI_CTRL_SERRATE_ON 0x00040 /* 6: on if interlaced */ -#define VI_CTRL_ANTIALIAS_MASK 0x00300 /* [9:8] anti-alias mode */ -#define VI_CTRL_ANTIALIAS_MODE_0 0x00000 /* Bit [9:8] anti-alias mode: AA enabled, resampling enabled, always fetch extra lines */ -#define VI_CTRL_ANTIALIAS_MODE_1 0x00100 /* Bit [9:8] anti-alias mode: AA enabled, resampling enabled, fetch extra lines as-needed */ -#define VI_CTRL_ANTIALIAS_MODE_2 0x00200 /* Bit [9:8] anti-alias mode: AA disabled, resampling enabled, operate as if everything is covered */ -#define VI_CTRL_ANTIALIAS_MODE_3 0x00300 /* Bit [9:8] anti-alias mode: AA disabled, resampling disabled, replicate pixels */ -#define VI_CTRL_PIXEL_ADV_MASK 0x0F000 /* [15:12] pixel advance mode? */ -#define VI_CTRL_PIXEL_ADV_1 0x01000 /* Bit [15:12] pixel advance mode? */ -#define VI_CTRL_PIXEL_ADV_2 0x02000 /* Bit [15:12] pixel advance mode? */ -#define VI_CTRL_PIXEL_ADV_3 0x03000 /* Bit [15:12] pixel advance mode? */ -#define VI_CTRL_DITHER_FILTER_ON 0x10000 /* 16: dither-filter mode */ +#define VI_CTRL_TYPE_16 0x00002 /* [1:0] pixel size: 16 bit */ +#define VI_CTRL_TYPE_32 0x00003 /* [1:0] pixel size: 32 bit */ +#define VI_CTRL_GAMMA_DITHER_ON 0x00004 /* 2: default = on */ +#define VI_CTRL_GAMMA_ON 0x00008 /* 3: default = on */ +#define VI_CTRL_DIVOT_ON 0x00010 /* 4: default = on */ +#define VI_CTRL_SERRATE_ON 0x00040 /* 6: on if interlaced */ +#define VI_CTRL_ANTIALIAS_MASK 0x00300 /* [9:8] anti-alias mode */ +#define VI_CTRL_ANTIALIAS_MODE_0 \ + 0x00000 /* Bit [9:8] anti-alias mode: AA enabled, resampling enabled, always fetch extra lines */ +#define VI_CTRL_ANTIALIAS_MODE_1 \ + 0x00100 /* Bit [9:8] anti-alias mode: AA enabled, resampling enabled, fetch extra lines as-needed \ + */ +#define VI_CTRL_ANTIALIAS_MODE_2 \ + 0x00200 /* Bit [9:8] anti-alias mode: AA disabled, resampling enabled, operate as if everything is \ + covered */ +#define VI_CTRL_ANTIALIAS_MODE_3 \ + 0x00300 /* Bit [9:8] anti-alias mode: AA disabled, resampling disabled, replicate pixels */ +#define VI_CTRL_PIXEL_ADV_MASK 0x0F000 /* [15:12] pixel advance mode? */ +#define VI_CTRL_PIXEL_ADV_1 0x01000 /* Bit [15:12] pixel advance mode? */ +#define VI_CTRL_PIXEL_ADV_2 0x02000 /* Bit [15:12] pixel advance mode? */ +#define VI_CTRL_PIXEL_ADV_3 0x03000 /* Bit [15:12] pixel advance mode? */ +#define VI_CTRL_DITHER_FILTER_ON 0x10000 /* 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 */ +#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 */ /** * The address and length registers are double buffered; that is, they @@ -586,55 +590,55 @@ /** * Audio Interface (AI) Registers */ -#define AI_BASE_REG 0x04500000 +#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 */ +#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 */ +#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 */ +#define AI_CONTROL_REG (AI_BASE_REG + 0x08) /* R2: DMA Control */ /* Value for control register */ -#define AI_CONTROL_DMA_ON 1 /* LSB = 1: DMA enable*/ -#define AI_CONTROL_DMA_OFF 0 /* LSB = 1: DMA enable*/ +#define AI_CONTROL_DMA_ON 1 /* LSB = 1: DMA enable*/ +#define AI_CONTROL_DMA_OFF 0 /* LSB = 1: DMA enable*/ -/* - * AI status (R): [31]/[0] ai_full (addr & len buffer full), [30] ai_busy +/* + * 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 + * (W): clear audio interrupt */ -#define AI_STATUS_REG (AI_BASE_REG + 0x0C) /* R3: Status */ +#define AI_STATUS_REG (AI_BASE_REG + 0x0C) /* R3: Status */ /* Value for status register */ #define AI_STATUS_FIFO_FULL (1 << 31) #define AI_STATUS_DMA_BUSY (1 << 30) -/* - * AI DAC sample period register (W): [13:0] dac rate +/* + * 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*/ +#define AI_DACRATE_REG (AI_BASE_REG + 0x10) /* R4: DAC rate 14-lsb*/ /* 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_MAX_DAC_RATE 16384 /* 14-bit+1 */ #define AI_MIN_DAC_RATE 132 -/* +/* * 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 */ +#define AI_BITRATE_REG (AI_BASE_REG + 0x14) /* R5: Bit rate 4-lsb */ /* Bit rate <= (DAC rate / 66) */ -#define AI_MAX_BIT_RATE 16 /* 4-bit+1 */ +#define AI_MAX_BIT_RATE 16 /* 4-bit+1 */ #define AI_MIN_BIT_RATE 2 /* @@ -642,37 +646,37 @@ * 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_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_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 */ +#define AI_MPAL_MAX_FREQ 368000 /* 368 KHz */ +#define AI_MPAL_MIN_FREQ 3000 /* 3 KHz ~ 2968 Hz */ /** - * Peripheral Interface (PI) Registers + * Peripheral Interface (PI) Registers */ -#define PI_BASE_REG 0x04600000 +#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 */ +#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) +#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) +#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) +#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) +#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) @@ -681,30 +685,30 @@ #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 */ +#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 */ +#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 */ +#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 */ +#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_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_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 +#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) @@ -712,19 +716,19 @@ * 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_DMA_BUSY (1 << 0) -#define PI_STATUS_IO_BUSY (1 << 1) -#define PI_STATUS_ERROR (1 << 2) +#define PI_STATUS_DMA_BUSY (1 << 0) +#define PI_STATUS_IO_BUSY (1 << 1) +#define PI_STATUS_ERROR (1 << 2) /* 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 + * 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 + * 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 @@ -741,109 +745,105 @@ /* * PI_STATUS_REG: write bits */ -#define PI_STATUS_RESET (1 << 0) -#define PI_SET_RESET PI_STATUS_RESET +#define PI_STATUS_RESET (1 << 0) +#define PI_SET_RESET PI_STATUS_RESET -#define PI_STATUS_CLR_INTR (1 << 1) -#define PI_CLR_INTR PI_STATUS_CLR_INTR +#define PI_STATUS_CLR_INTR (1 << 1) +#define PI_CLR_INTR PI_STATUS_CLR_INTR -#define PI_DMA_BUFFER_SIZE 128 +#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 */ +#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 + * RDRAM Interface (RI) Registers */ -#define RI_BASE_REG 0x04700000 +#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) +#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) +#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) +#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 + * [16] refresh bank, [17] refresh enable + * [18] refresh optimize */ -#define RI_REFRESH_REG (RI_BASE_REG + 0x10) -#define RI_COUNT_REG RI_REFRESH_REG +#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) +#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) +#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) +#define RI_WERROR_REG (RI_BASE_REG + 0x1C) /** * Serial Interface (SI) Registers */ -#define SI_BASE_REG 0x04800000 +#define SI_BASE_REG 0x04800000 /* SI DRAM address (R/W): [23:0] starting RDRAM address */ -#define SI_DRAM_ADDR_REG (SI_BASE_REG + 0x00) +#define SI_DRAM_ADDR_REG (SI_BASE_REG + 0x00) /* SI address read 64B (W): [] write begins a 64B DMA write PIF RAM -> RDRAM */ -#define SI_PIF_ADDR_RD64B_REG (SI_BASE_REG + 0x04) +#define SI_PIF_ADDR_RD64B_REG (SI_BASE_REG + 0x04) /* Address SI_BASE_REG + (0x08, 0x0C, 0x14) are reserved */ /* SI address write 64B (W): [] write begins a 64B DMA read RDRAM -> PIF RAM */ -#define SI_PIF_ADDR_WR64B_REG (SI_BASE_REG + 0x10) +#define SI_PIF_ADDR_WR64B_REG (SI_BASE_REG + 0x10) /* SI status (R/W): [] any write clears interrupt */ -#define SI_STATUS_REG (SI_BASE_REG + 0x18) +#define SI_STATUS_REG (SI_BASE_REG + 0x18) /* * SI_STATUS_REG: read bits */ -#define SI_STATUS_DMA_BUSY (1 << 0) /* DMA in progress */ -#define SI_STATUS_RD_BUSY (1 << 1) /* IO access in progress */ -#define SI_STATUS_DMA_ERROR (1 << 3) /* Overlapping DMA requests */ +#define SI_STATUS_DMA_BUSY (1 << 0) /* DMA in progress */ +#define SI_STATUS_RD_BUSY (1 << 1) /* IO access in progress */ +#define SI_STATUS_DMA_ERROR (1 << 3) /* Overlapping DMA requests */ #define SI_STATUS_INTERRUPT (1 << 12) /* Interrupt is set */ /** - * Development Board GIO Control Registers + * Development Board GIO Control Registers */ -#define GIO_BASE_REG 0x18000000 +#define GIO_BASE_REG 0x18000000 /* Game to Host Interrupt */ -#define GIO_GIO_INTR_REG (GIO_BASE_REG+0x000) +#define GIO_GIO_INTR_REG (GIO_BASE_REG + 0x000) /* Game to Host SYNC */ -#define GIO_GIO_SYNC_REG (GIO_BASE_REG+0x400) +#define GIO_GIO_SYNC_REG (GIO_BASE_REG + 0x400) /* Host to Game Interrupt */ -#define GIO_CART_INTR_REG (GIO_BASE_REG+0x800) +#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)) +#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_ */ +#endif /* _RCP_H_ */ diff --git a/include/PR/rdb.h b/include/PR/rdb.h index e089749..6cce00a 100644 --- a/include/PR/rdb.h +++ b/include/PR/rdb.h @@ -11,82 +11,79 @@ #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 +#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_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_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 +#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) +#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 +#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 +#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 +#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 +#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 */ + 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; +extern unsigned int __osRdbWriteOK; +extern unsigned int __osRdbSendMessage; #endif /* _LANGUAGE_C */ diff --git a/include/PR/region.h b/include/PR/region.h index 0ac8a25..b310b14 100644 --- a/include/PR/region.h +++ b/include/PR/region.h @@ -26,45 +26,41 @@ * **************************************************************************/ - #ifndef _REGION_H_ #define _REGION_H_ - #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { #endif #include - /*************************************** * - * Global defines + * Global defines * */ - /* Alignment sizes */ -#define ALIGNSZ (sizeof(long long)) /* 8 bytes */ -#define ALIGNOFFST (ALIGNSZ-1) +/* 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 +/* 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 +/* 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 +#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 /*************************************** * @@ -73,8 +69,7 @@ extern "C" { */ /* Perform alignment on input 's' */ -#define ALIGN(s, align) (((u32)(s) + ((align)-1)) & ~((align)-1)) - +#define ALIGN(s, align) (((u32)(s) + ((align) - 1)) & ~((align) - 1)) /*************************************** * @@ -82,42 +77,37 @@ extern "C" { * */ /* - * Structure for region header/control area + * 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) */ + 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 - +#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 *); - +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_ */ - - +#endif /* _REGION_H_ */ diff --git a/include/PR/rmon.h b/include/PR/rmon.h index 199e569..64f1640 100644 --- a/include/PR/rmon.h +++ b/include/PR/rmon.h @@ -19,18 +19,18 @@ **************************************************************************/ #ifndef _RMON_H_ -#define _RMON_H_ +#define _RMON_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { #endif #include -#define RMON_DBG_BUF_SIZE 2048 -#define RMON_STACKSIZE 0x1000 +#define RMON_DBG_BUF_SIZE 2048 +#define RMON_STACKSIZE 0x1000 -extern void rmonMain( void * ); -extern void rmonPrintf( const char *, ... ); +extern void rmonMain(void*); +extern void rmonPrintf(const char*, ...); #ifdef _LANGUAGE_C_PLUS_PLUS } diff --git a/include/PR/sched.h b/include/PR/sched.h index 2d305a2..59d7b68 100644 --- a/include/PR/sched.h +++ b/include/PR/sched.h @@ -33,47 +33,47 @@ #include -#define OS_SC_STACKSIZE 0x2000 +#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 +#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]; + 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 */ + 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 */ + 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_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 */ +#define OS_SC_RCP_MASK 0x0003 /* mask for needs bits */ +#define OS_SC_TYPE_MASK 0x0007 /* complete type mask */ /* * OSScClient: * @@ -82,34 +82,32 @@ typedef struct OSScTask_s { * */ typedef struct SCClient_s { - struct SCClient_s *next; /* next client in the list */ - OSMesgQueue *msgQ; /* where to send the frame msg */ + struct SCClient_s* next; /* next client in the list */ + OSMesgQueue* msgQ; /* where to send the frame msg */ } OSScClient; typedef struct { - OSScMsg retraceMsg; - OSScMsg prenmiMsg; + OSScMsg retraceMsg; + OSScMsg prenmiMsg; OSMesgQueue interruptQ; - OSMesg intBuf[OS_SC_MAX_MESGS]; + 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; + 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); +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 - diff --git a/include/PR/sp.h b/include/PR/sp.h index 8167ca2..3a315cf 100644 --- a/include/PR/sp.h +++ b/include/PR/sp.h @@ -31,71 +31,71 @@ extern "C" { #include struct bitmap { - s16 width; /* Size across to draw in texels */ - /* Done if width = 0 */ + 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 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 s; /* Horizontal offset into bitmap */ + /* if (s > width), then load only! */ - s16 t; /* Vertical offset into base */ + 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 */ + 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 actualHeight; /* True Height of this bitmap piece */ - s16 LUToffset; /* LUT base index */ + s16 LUToffset; /* LUT base index */ }; typedef struct bitmap Bitmap; struct sprite { - s16 x,y; /* Target position */ + s16 x, y; /* Target position */ - s16 width, height; /* Target size */ + s16 width, height; /* Target size */ - f32 scalex, scaley; /* Texel to Pixel scale factor */ + f32 scalex, scaley; /* Texel to Pixel scale factor */ - s16 expx, expy; /* Explosion spacing */ + s16 expx, expy; /* Explosion spacing */ - u16 attr; /* Attribute Flags */ - s16 zdepth; /* Z Depth */ + u16 attr; /* Attribute Flags */ + s16 zdepth; /* Z Depth */ - u8 red; /* Red component */ - u8 green; /* Green component */ - u8 blue; /* Blue component */ - u8 alpha; /* Alpha component */ + 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 */ + s16 startTLUT; /* Lookup Table Entry Starting index */ + s16 nTLUT; /* Total number of Lookup Table Entries */ - int *LUT; /* Pointer to Lookup Table */ + 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 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 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 */ + 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 */ + Bitmap* bitmap; /* Pointer to first bitmap */ - Gfx *rsp_dl; /* Pointer to RSP display list */ + Gfx* rsp_dl; /* Pointer to RSP display list */ - Gfx *rsp_dl_next; /* Pointer to next RSP display entry */ + Gfx* rsp_dl_next; /* Pointer to next RSP display entry */ - s16 frac_s, /* Fractional Texture offsets */ - frac_t; /* These have 5 fraction bits */ + s16 frac_s, /* Fractional Texture offsets */ + frac_t; /* These have 5 fraction bits */ }; typedef struct sprite Sprite; @@ -118,76 +118,76 @@ typedef struct sprite Sprite; * 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_BM_OVERHEAD (12) #define DL_SPRITE_OVERHEAD (24) -#define NUM_DL(nb) ((nb)*DL_BM_OVERHEAD +DL_SPRITE_OVERHEAD) +#define NUM_DL(nb) ((nb) * DL_BM_OVERHEAD + DL_SPRITE_OVERHEAD) /* * Misc constants */ #ifndef NULL -#define NULL 0 +#define NULL 0 #endif #ifndef TRUE -#define TRUE 1 +#define TRUE 1 #endif #ifndef FALSE -#define FALSE 0 +#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 +#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 +#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 ); +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 } diff --git a/include/PR/sptask.h b/include/PR/sptask.h index 960cab9..74e0fca 100644 --- a/include/PR/sptask.h +++ b/include/PR/sptask.h @@ -19,7 +19,7 @@ **************************************************************************/ #ifndef _SPTASK_H_ -#define _SPTASK_H_ +#define _SPTASK_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -50,7 +50,7 @@ extern "C" { * - pointer to ucode * - size of ucode * - pointer to initial DMEM data - * - size of initial DMEM data + * - size of initial DMEM data * - pointer to DRAM stack * - size of DRAM stack (max) * - pointer to output buffer @@ -72,35 +72,35 @@ extern "C" { * */ typedef struct { - u32 type; - u32 flags; + u32 type; + u32 flags; - u64 *ucode_boot; - u32 ucode_boot_size; + u64* ucode_boot; + u32 ucode_boot_size; - u64 *ucode; - u32 ucode_size; + u64* ucode; + u32 ucode_size; - u64 *ucode_data; - u32 ucode_data_size; + u64* ucode_data; + u32 ucode_data_size; - u64 *dram_stack; - u32 dram_stack_size; + u64* dram_stack; + u32 dram_stack_size; - u64 *output_buff; - u64 *output_buff_size; + u64* output_buff; + u64* output_buff_size; - u64 *data_ptr; - u32 data_size; + u64* data_ptr; + u32 data_size; - u64 *yield_data_ptr; - u32 yield_data_size; + u64* yield_data_ptr; + u32 yield_data_size; } OSTask_t; typedef union { - OSTask_t t; - long long int force_structure_alignment; + OSTask_t t; + long long int force_structure_alignment; } OSTask; typedef u32 OSYieldResult; @@ -121,28 +121,28 @@ typedef u32 OSYieldResult; /* * 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 +#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 + * 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 +#if (defined(F3DEX_GBI) || defined(F3DLP_GBI) || defined(F3DEX_GBI_2)) +#define OS_YIELD_DATA_SIZE 0xc00 #else -#define OS_YIELD_DATA_SIZE 0x900 +#define OS_YIELD_DATA_SIZE 0x900 #endif -#define OS_YIELD_AUDIO_SIZE 0x400 +#define OS_YIELD_AUDIO_SIZE 0x400 /************************************************************************** * @@ -150,8 +150,6 @@ typedef u32 OSYieldResult; * */ - - #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) /************************************************************************** @@ -163,20 +161,18 @@ typedef u32 OSYieldResult; /* * this macro simulates atomic action. */ -#define osSpTaskStart(tp) \ - { \ - osSpTaskLoad((tp)); \ - osSpTaskStartGo((tp)); \ +#define osSpTaskStart(tp) \ + { \ + osSpTaskLoad((tp)); \ + osSpTaskStartGo((tp)); \ } - /************************************************************************** * * Extern variables * */ - /************************************************************************** * * Function prototypes @@ -186,11 +182,11 @@ typedef u32 OSYieldResult; /* * break this up into two steps for debugging. */ -extern void osSpTaskLoad(OSTask *tp); -extern void osSpTaskStartGo(OSTask *tp); +extern void osSpTaskLoad(OSTask* tp); +extern void osSpTaskStartGo(OSTask* tp); -extern void osSpTaskYield(void); -extern OSYieldResult osSpTaskYielded(OSTask *tp); +extern void osSpTaskYield(void); +extern OSYieldResult osSpTaskYielded(OSTask* tp); #endif /* _LANGUAGE_C */ diff --git a/include/PR/ucode.h b/include/PR/ucode.h index e43f52a..69a069b 100644 --- a/include/PR/ucode.h +++ b/include/PR/ucode.h @@ -19,7 +19,7 @@ **************************************************************************/ #ifndef _UCODE_H_ -#define _UCODE_H_ +#define _UCODE_H_ #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { @@ -40,8 +40,8 @@ extern "C" { * 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) +#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 @@ -49,7 +49,7 @@ extern "C" { * This value is used in apps to tell the OS how much ucode to * load. */ -#define SP_UCODE_SIZE 4096 +#define SP_UCODE_SIZE 4096 /* * This is 1/2 the size of DMEM, which is the maximum amount of @@ -57,8 +57,7 @@ extern "C" { * This value is dependent on all of the task ucodes, and is therefore * fixed per release. */ -#define SP_UCODE_DATA_SIZE 2048 - +#define SP_UCODE_DATA_SIZE 2048 /************************************************************************** * @@ -67,7 +66,7 @@ extern "C" { */ /* - * Symbols generated by "rsp2elf", included by "makerom" that indicate + * 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) @@ -75,107 +74,107 @@ extern "C" { */ /* standard boot ucode: */ -extern long long int rspbootTextStart[], rspbootTextEnd[]; +extern long long int rspbootTextStart[], rspbootTextEnd[]; /* standard 3D ucode: */ -extern long long int gspFast3DTextStart[], gspFast3DTextEnd[]; -extern long long int gspFast3DDataStart[], gspFast3DDataEnd[]; +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[]; +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[]; +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[]; +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[]; +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[]; +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[]; +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[]; +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[]; +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[]; +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[]; +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[]; +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[]; +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 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 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[]; +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[]; +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[]; +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[]; /************************************************************************** * diff --git a/include/PR/ultraerror.h b/include/PR/ultraerror.h index ebaf59a..88cc1c1 100644 --- a/include/PR/ultraerror.h +++ b/include/PR/ultraerror.h @@ -35,131 +35,131 @@ extern "C" { #include "ultratypes.h" -#define OS_ERROR_FMT "/usr/lib/PR/error.fmt" -#define OS_ERROR_MAGIC 0x6b617479 +#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_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 #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) -typedef void (*OSErrorHandler)(s16, s16, ...); +typedef void (*OSErrorHandler)(s16, s16, ...); -OSErrorHandler osSetErrorHandler(OSErrorHandler); +OSErrorHandler osSetErrorHandler(OSErrorHandler); #endif #ifdef _LANGUAGE_C_PLUS_PLUS } #endif -#endif /* __ULTRAERROR_H__ */ +#endif /* __ULTRAERROR_H__ */ diff --git a/include/PR/ultralog.h b/include/PR/ultralog.h index 48b84b9..ad19705 100644 --- a/include/PR/ultralog.h +++ b/include/PR/ultralog.h @@ -35,17 +35,17 @@ extern "C" { #include -#define OS_LOG_MAX_ARGS 16 -#define OS_LOG_MAGIC 0x20736a73 -#define OS_LOG_FLOAT(x) (*(int *) &(x)) -#define OS_LOG_VERSION 1 - +#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 */ + 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 { @@ -56,14 +56,14 @@ typedef struct { } OSLogItem; typedef struct { - u32 magic; /* log identifier */ - u32 version; /* 1 */ + 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); +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); diff --git a/include/PR/ultratypes.h b/include/PR/ultratypes.h index 235cc73..0e86c91 100644 --- a/include/PR/ultratypes.h +++ b/include/PR/ultratypes.h @@ -1,7 +1,6 @@ #ifndef _ULTRATYPES_H_ #define _ULTRATYPES_H_ - /************************************************************************** * * * Copyright (C) 1995, Silicon Graphics, Inc. * @@ -14,7 +13,6 @@ * * **************************************************************************/ - /************************************************************************* * * File: ultratypes.h @@ -27,59 +25,57 @@ * **************************************************************************/ - - /********************************************************************** * 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 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 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 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 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 */ +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 */ +#define _SIZE_T_DEF /* exeGCC size_t define label */ #if (_MIPS_SZLONG == 32) -typedef unsigned int size_t; +typedef unsigned int size_t; #endif #if (_MIPS_SZLONG == 64) -typedef unsigned long size_t; +typedef unsigned long size_t; #endif #endif -#endif /* _LANGUAGE_C */ +#endif /* _LANGUAGE_C */ #ifndef TRUE -#define TRUE 1 +#define TRUE 1 #endif #ifndef FALSE -#define FALSE 0 +#define FALSE 0 #endif #ifndef NULL -#define NULL 0 +#define NULL 0 #endif -#endif /* _ULTRATYPES_H_ */ +#endif /* _ULTRATYPES_H_ */ diff --git a/include/PRinternal/controller.h b/include/PRinternal/controller.h index e77b38e..079c053 100644 --- a/include/PRinternal/controller.h +++ b/include/PRinternal/controller.h @@ -9,14 +9,12 @@ #define CHNL_ERR(format) (((format).rxsize & CHNL_ERR_MASK) >> 4) -typedef struct -{ +typedef struct { /* 0x0 */ u32 ramarray[15]; /* 0x3C */ u32 pifstatus; } OSPifRam ALIGNED(0x10); -typedef struct -{ +typedef struct { /* 0x0 */ u8 dummy; /* 0x1 */ u8 txsize; /* 0x2 */ u8 rxsize; @@ -26,8 +24,7 @@ typedef struct /* 0x7 */ s8 stick_y; } __OSContReadFormat; -typedef struct -{ +typedef struct { /* 0x0 */ u8 dummy; /* 0x1 */ u8 txsize; /* 0x2 */ u8 rxsize; @@ -38,8 +35,7 @@ typedef struct /* 0x7 */ u8 dummy1; } __OSContRequesFormat; -typedef struct -{ +typedef struct { /* 0x0 */ u8 txsize; /* 0x1 */ u8 rxsize; /* 0x2 */ u8 cmd; @@ -48,8 +44,7 @@ typedef struct /* 0x5 */ u8 status; } __OSContRequesFormatShort; -typedef struct -{ +typedef struct { /* 0x0 */ u8 dummy; /* 0x1 */ u8 txsize; /* 0x2 */ u8 rxsize; @@ -65,16 +60,14 @@ typedef struct } __OSContRamReadFormat; typedef union { - /* 0x0 */ struct - { + /* 0x0 */ struct { /* 0x0 */ u8 bank; /* 0x1 */ u8 page; } inode_t; /* 0x0 */ u16 ipage; } __OSInodeUnit; -typedef struct -{ +typedef struct { /* 0x0 */ u32 game_code; /* 0x4 */ u16 company_code; /* 0x6 */ __OSInodeUnit start_page; @@ -85,13 +78,11 @@ typedef struct /* 0x10 */ u8 game_name[PFS_FILE_NAME_LEN]; } __OSDir; -typedef struct -{ +typedef struct { /* 0x0 */ __OSInodeUnit inode_page[128]; } __OSInode; -typedef struct -{ +typedef struct { /* 0x0 */ u32 repaired; /* 0x4 */ u32 random; /* 0x8 */ u64 serial_mid; @@ -103,8 +94,7 @@ typedef struct /* 0x1E */ u16 inverted_checksum; } __OSPackId; -typedef struct -{ +typedef struct { /* 0x0 */ u8 txsize; /* 0x1 */ u8 rxsize; /* 0x2 */ u8 cmd; @@ -113,7 +103,7 @@ typedef struct } __OSContEepromFormat; // Joybus commands -//from: http://en64.shoutwiki.com/wiki/SI_Registers_Detailed#CONT_CMD_Usage +// from: http://en64.shoutwiki.com/wiki/SI_Registers_Detailed#CONT_CMD_Usage #define CONT_CMD_REQUEST_STATUS 0 #define CONT_CMD_READ_BUTTON 1 #define CONT_CMD_READ_PAK 2 @@ -157,20 +147,20 @@ typedef struct #define CONT_CMD_RESET_RX 3 #define CONT_CMD_NOP 0xff -#define CONT_CMD_END 0xfe //indicates end of a command -#define CONT_CMD_EXE 1 //set pif ram status byte to this to do a command +#define CONT_CMD_END 0xfe // indicates end of a command +#define CONT_CMD_EXE 1 // set pif ram status byte to this to do a command -#define DIR_STATUS_EMPTY 0 -#define DIR_STATUS_UNKNOWN 1 +#define DIR_STATUS_EMPTY 0 +#define DIR_STATUS_UNKNOWN 1 #define DIR_STATUS_OCCUPIED 2 // Controller accessory addresses // https://github.com/joeldipops/TransferBoy/blob/master/docs/TransferPakReference.md // Accesory detection -#define CONT_ADDR_DETECT 0x8000 +#define CONT_ADDR_DETECT 0x8000 // Rumble -#define CONT_ADDR_RUMBLE 0xC000 +#define CONT_ADDR_RUMBLE 0xC000 // Controller Pak // Transfer Pak #define CONT_ADDR_GB_POWER 0x8000 // Same as the detection address, but semantically different @@ -187,49 +177,48 @@ typedef struct #define CONT_BLOCK_GB_BANK CONT_BLOCKS(CONT_ADDR_GB_BANK) #define CONT_BLOCK_GB_STATUS CONT_BLOCKS(CONT_ADDR_GB_STATUS) - // Transfer pak #define GB_POWER_ON 0x84 #define GB_POWER_OFF 0xFE - -typedef struct -{ +typedef struct { /* 0x0 */ __OSInode inode; /* 0x100 */ u8 bank; /* 0x101 */ u8 map[PFS_INODE_DIST_MAP]; } __OSInodeCache; -extern s32 __osEepStatus(OSMesgQueue *, OSContStatus *); -u16 __osSumcalc(u8 *ptr, int length); -s32 __osIdCheckSum(u16 *ptr, u16 *csum, u16 *icsum); -s32 __osRepairPackId(OSPfs *pfs, __OSPackId *badid, __OSPackId *newid); -s32 __osCheckPackId(OSPfs *pfs, __OSPackId *temp); -s32 __osGetId(OSPfs *pfs); -s32 __osCheckId(OSPfs *pfs); -s32 __osPfsRWInode(OSPfs *pfs, __OSInode *inode, u8 flag, u8 bank); +extern s32 __osEepStatus(OSMesgQueue*, OSContStatus*); +u16 __osSumcalc(u8* ptr, int length); +s32 __osIdCheckSum(u16* ptr, u16* csum, u16* icsum); +s32 __osRepairPackId(OSPfs* pfs, __OSPackId* badid, __OSPackId* newid); +s32 __osCheckPackId(OSPfs* pfs, __OSPackId* temp); +s32 __osGetId(OSPfs* pfs); +s32 __osCheckId(OSPfs* pfs); +s32 __osPfsRWInode(OSPfs* pfs, __OSInode* inode, u8 flag, u8 bank); #if BUILD_VERSION >= VERSION_J -s32 __osPfsSelectBank(OSPfs *pfs, u8 bank); +s32 __osPfsSelectBank(OSPfs* pfs, u8 bank); #else -s32 __osPfsSelectBank(OSPfs *pfs); +s32 __osPfsSelectBank(OSPfs* pfs); #endif -s32 __osPfsDeclearPage(OSPfs *pfs, __OSInode *inode, int file_size_in_pages, int *first_page, u8 bank, int *decleared, int *last_page); +s32 __osPfsDeclearPage(OSPfs* pfs, __OSInode* inode, int file_size_in_pages, int* first_page, u8 bank, int* decleared, + int* last_page); #if BUILD_VERSION >= VERSION_J -s32 __osPfsReleasePages(OSPfs *pfs, __OSInode *inode, u8 start_page, u8 bank, __OSInodeUnit *last_page); +s32 __osPfsReleasePages(OSPfs* pfs, __OSInode* inode, u8 start_page, u8 bank, __OSInodeUnit* last_page); #else -s32 __osPfsReleasePages(OSPfs *pfs, __OSInode *inode, u8 start_page, u16 *sum, u8 bank, __OSInodeUnit *last_page, int flag); +s32 __osPfsReleasePages(OSPfs* pfs, __OSInode* inode, u8 start_page, u16* sum, u8 bank, __OSInodeUnit* last_page, + int flag); #endif -s32 __osBlockSum(OSPfs *pfs, u8 page_no, u16 *sum, u8 bank); -s32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer); -s32 __osContRamWrite(OSMesgQueue *mq, int channel, u16 address, u8 *buffer, int force); -void __osContGetInitData(u8 *pattern, OSContStatus *data); +s32 __osBlockSum(OSPfs* pfs, u8 page_no, u16* sum, u8 bank); +s32 __osContRamRead(OSMesgQueue* mq, int channel, u16 address, u8* buffer); +s32 __osContRamWrite(OSMesgQueue* mq, int channel, u16 address, u8* buffer, int force); +void __osContGetInitData(u8* pattern, OSContStatus* data); void __osPackRequestData(u8 cmd); void __osPfsRequestData(u8 cmd); void __osPfsGetInitData(u8* pattern, OSContStatus* data); u8 __osContAddressCrc(u16 addr); -u8 __osContDataCrc(u8 *data); -s32 __osPfsGetStatus(OSMesgQueue *queue, int channel); +u8 __osContDataCrc(u8* data); +s32 __osPfsGetStatus(OSMesgQueue* queue, int channel); extern u8 __osContLastCmd; extern OSTimer __osEepromTimer; @@ -240,50 +229,49 @@ extern OSPifRam __osContPifRam; extern OSPifRam __osPfsPifRam; extern u8 __osMaxControllers; -//some version of this almost certainly existed since there's plenty of times where it's used right before a return 0 -#define ERRCK(fn) \ - ret = fn; \ - if (ret != 0) \ - return ret +// some version of this almost certainly existed since there's plenty of times where it's used right +// before a return 0 +#define ERRCK(fn) \ + ret = fn; \ + if (ret != 0) \ + return ret #if BUILD_VERSION >= VERSION_J -#define SELECT_BANK(pfs, bank) \ - __osPfsSelectBank((pfs), (bank)) +#define SELECT_BANK(pfs, bank) __osPfsSelectBank((pfs), (bank)) -#define SET_ACTIVEBANK_TO_ZERO() \ - if (pfs->activebank != 0) \ - { \ - ERRCK(__osPfsSelectBank(pfs, 0)); \ - } (void)0 +#define SET_ACTIVEBANK_TO_ZERO() \ + if (pfs->activebank != 0) { \ + ERRCK(__osPfsSelectBank(pfs, 0)); \ + } \ + (void)0 #else -#define SELECT_BANK(pfs, bank) \ - (pfs->activebank = (bank), __osPfsSelectBank((pfs))) +#define SELECT_BANK(pfs, bank) (pfs->activebank = (bank), __osPfsSelectBank((pfs))) -#define SET_ACTIVEBANK_TO_ZERO() \ - if (pfs->activebank != 0) \ - { \ - pfs->activebank = 0; \ - ERRCK(__osPfsSelectBank(pfs)); \ - } (void)0 +#define SET_ACTIVEBANK_TO_ZERO() \ + if (pfs->activebank != 0) { \ + pfs->activebank = 0; \ + ERRCK(__osPfsSelectBank(pfs)); \ + } \ + (void)0 #endif -#define PFS_CHECK_ID() \ - if (__osCheckId(pfs) == PFS_ERR_NEW_PACK) \ - return PFS_ERR_NEW_PACK +#define PFS_CHECK_ID() \ + if (__osCheckId(pfs) == PFS_ERR_NEW_PACK) \ + return PFS_ERR_NEW_PACK -#define PFS_CHECK_STATUS() \ - if ((pfs->status & PFS_INITIALIZED) == 0) \ - return PFS_ERR_INVALID +#define PFS_CHECK_STATUS() \ + if ((pfs->status & PFS_INITIALIZED) == 0) \ + return PFS_ERR_INVALID -#define PFS_GET_STATUS() \ - __osSiGetAccess(); \ - ret = __osPfsGetStatus(queue, channel); \ - __osSiRelAccess(); \ - if (ret != 0) \ - return ret +#define PFS_GET_STATUS() \ + __osSiGetAccess(); \ + ret = __osPfsGetStatus(queue, channel); \ + __osSiRelAccess(); \ + if (ret != 0) \ + return ret #endif diff --git a/include/PRinternal/dbgproto.h b/include/PRinternal/dbgproto.h index e4d3656..fc94d38 100644 --- a/include/PRinternal/dbgproto.h +++ b/include/PRinternal/dbgproto.h @@ -14,27 +14,27 @@ #define KK_TYPE_PROCESS_EXIT 4 #define KK_TYPE_CONSOLE 5 -#define TV_ERROR_NO_ERROR 0 -#define TV_ERROR_ILLEGAL_CALL -1 -#define TV_ERROR_INVALID_ID -2 -#define TV_ERROR_INVALID_TYPE -3 -#define TV_ERROR_OPERATIONS_PROTECTED -4 -#define TV_ERROR_INVALID_ADDRESS -5 -#define TV_ERROR_INVALID_PRIORITY -6 -#define TV_ERROR_INVALID_FLAGS -7 -#define TV_ERROR_INVALID_CAPABILITY -8 -#define TV_ERROR_NO_HANDLER -9 -#define TV_ERROR_NO_MORE_IDS -10 -#define TV_ERROR_NO_MORE_MESSAGES -11 -#define TV_ERROR_NO_MORE_PROCESSES -12 -#define TV_ERROR_NO_MORE_THREADS -13 -#define TV_ERROR_NO_MORE_REGIONS -14 -#define TV_ERROR_NO_MORE_TIMERS -15 -#define TV_ERROR_NO_MORE_LOCKS -16 -#define TV_ERROR_NO_MORE_QUEUES -17 -#define TV_ERROR_NO_MORE_SETS -18 -#define TV_ERROR_NO_MORE_MEMORY -19 -#define TV_ERROR_NOT_LOCKED -20 +#define TV_ERROR_NO_ERROR 0 +#define TV_ERROR_ILLEGAL_CALL -1 +#define TV_ERROR_INVALID_ID -2 +#define TV_ERROR_INVALID_TYPE -3 +#define TV_ERROR_OPERATIONS_PROTECTED -4 +#define TV_ERROR_INVALID_ADDRESS -5 +#define TV_ERROR_INVALID_PRIORITY -6 +#define TV_ERROR_INVALID_FLAGS -7 +#define TV_ERROR_INVALID_CAPABILITY -8 +#define TV_ERROR_NO_HANDLER -9 +#define TV_ERROR_NO_MORE_IDS -10 +#define TV_ERROR_NO_MORE_MESSAGES -11 +#define TV_ERROR_NO_MORE_PROCESSES -12 +#define TV_ERROR_NO_MORE_THREADS -13 +#define TV_ERROR_NO_MORE_REGIONS -14 +#define TV_ERROR_NO_MORE_TIMERS -15 +#define TV_ERROR_NO_MORE_LOCKS -16 +#define TV_ERROR_NO_MORE_QUEUES -17 +#define TV_ERROR_NO_MORE_SETS -18 +#define TV_ERROR_NO_MORE_MEMORY -19 +#define TV_ERROR_NOT_LOCKED -20 typedef struct __KKTimeStruct { long seconds; diff --git a/include/PRinternal/macros.h b/include/PRinternal/macros.h index c84c7ad..23d2b7d 100644 --- a/include/PRinternal/macros.h +++ b/include/PRinternal/macros.h @@ -15,10 +15,8 @@ #define ALIGN8(val) (((val) + 7) & ~7) -#define STACK(stack, size) \ - u64 stack[ALIGN8(size) / sizeof(u64)] +#define STACK(stack, size) u64 stack[ALIGN8(size) / sizeof(u64)] -#define STACK_START(stack) \ - ((u8*)(stack) + sizeof(stack)) +#define STACK_START(stack) ((u8*)(stack) + sizeof(stack)) #endif diff --git a/include/PRinternal/osint.h b/include/PRinternal/osint.h index b73b609..f0d0ad6 100644 --- a/include/PRinternal/osint.h +++ b/include/PRinternal/osint.h @@ -1,37 +1,35 @@ #ifndef _OSINT_H #define _OSINT_H #include "PR/os_internal.h" -typedef struct __OSEventState -{ - OSMesgQueue *messageQueue; +typedef struct __OSEventState { + OSMesgQueue* messageQueue; OSMesg message; } __OSEventState; -extern struct __osThreadTail -{ - OSThread *next; +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 **); +// 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 __osCleanupThread(void); extern void __osSetTimerIntr(OSTime); -extern OSTime __osInsertTimer(OSTimer *); +extern OSTime __osInsertTimer(OSTimer*); extern void __osTimerInterrupt(void); -extern u32 __osProbeTLB(void *); -extern int __osSpDeviceBusy(void); +extern u32 __osProbeTLB(void*); +extern int __osSpDeviceBusy(void); -extern OSThread *__osRunningThread; -extern OSThread *__osActiveQueue; -extern OSThread *__osFaultedThread; -extern OSThread *__osRunQueue; +extern OSThread* __osRunningThread; +extern OSThread* __osActiveQueue; +extern OSThread* __osFaultedThread; +extern OSThread* __osRunQueue; -extern OSTimer *__osTimerList; +extern OSTimer* __osTimerList; extern OSTimer __osBaseTimer; extern OSTime __osCurrentTime; extern u32 __osBaseCounter; @@ -40,13 +38,12 @@ extern u32 __osTimerCounter; extern u32 __osShutdown; extern OSMesgQueue __osProfTimerQ; -extern OSProf *__osProfileList; -extern OSProf *__osProfileListEnd; +extern OSProf* __osProfileList; +extern OSProf* __osProfileListEnd; extern u32 __osProfileOverflowBin; extern __OSEventState __osEventStateTab[]; - extern void __osTimerServicesInit(void); extern s32 __osAiDeviceBusy(void); extern int __osDpDeviceBusy(void); diff --git a/include/PRinternal/piint.h b/include/PRinternal/piint.h index 50a0858..bbee63f 100644 --- a/include/PRinternal/piint.h +++ b/include/PRinternal/piint.h @@ -4,97 +4,97 @@ #include "PR/os_internal.h" #include "PR/rcp.h" -//https://github.com/LuigiBlood/64dd/wiki/Memory-Map +// https://github.com/LuigiBlood/64dd/wiki/Memory-Map #define LEO_BASE_REG 0x05000000 -#define LEO_CMD (LEO_BASE_REG + 0x508) +#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_CTL (LEO_BASE_REG + 0x510) #define LEO_BM_STATUS (LEO_BASE_REG + 0x510) -#define LEO_SEQ_CTL (LEO_BASE_REG + 0x518) +#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_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_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_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_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_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_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_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_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_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 // +#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[]; +extern OSPiHandle* __osCurrentHandle[]; extern OSPiHandle CartRomHandle; extern OSPiHandle LeoDiskHandle; extern OSMesgQueue __osPiAccessQueue; @@ -103,94 +103,89 @@ extern u32 __osPiAccessQueueEnabled; // These symbols were all renamed in 2.0J. #if BUILD_VERSION < VERSION_J #define __osEPiRawStartDma osEPiRawStartDma -#define __osEPiRawReadIo osEPiRawReadIo -#define __osEPiRawWriteIo osEPiRawWriteIo -#define __osPiRawStartDma osPiRawStartDma -#define __osPiRawWriteIo osPiRawWriteIo -#define __osPiRawReadIo osPiRawReadIo +#define __osEPiRawReadIo osEPiRawReadIo +#define __osEPiRawWriteIo osEPiRawWriteIo +#define __osPiRawStartDma osPiRawStartDma +#define __osPiRawWriteIo osPiRawWriteIo +#define __osPiRawReadIo osPiRawReadIo #endif int __osPiDeviceBusy(void); -void __osDevMgrMain(void *); +void __osDevMgrMain(void*); void __osPiCreateAccessQueue(void); void __osPiRelAccess(void); void __osPiGetAccess(void); -s32 __osPiRawStartDma(s32, u32 , void *, u32 ); +s32 __osPiRawStartDma(s32, u32, void*, u32); s32 __osPiRawWriteIo(u32, u32); -s32 __osPiRawReadIo(u32, u32 *); -s32 __osEPiRawWriteIo(OSPiHandle *, u32 , u32); -s32 __osEPiRawReadIo(OSPiHandle *, u32 , u32 *); -s32 __osEPiRawStartDma(OSPiHandle *, s32 , u32 , void *, u32 ); -OSMesgQueue *osPiGetCmdQueue(void); +s32 __osPiRawReadIo(u32, u32*); +s32 __osEPiRawWriteIo(OSPiHandle*, u32, u32); +s32 __osEPiRawReadIo(OSPiHandle*, u32, u32*); +s32 __osEPiRawStartDma(OSPiHandle*, s32, u32, void*, u32); +OSMesgQueue* osPiGetCmdQueue(void); -#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); \ - } (void)0 +#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); \ + } \ + (void)0 -#define UPDATE_REG(pihandle, reg, var) \ - if (cHandle->var != pihandle->var) \ - IO_WRITE(reg, pihandle->var) +#define UPDATE_REG(pihandle, reg, var) \ + if (cHandle->var != pihandle->var) \ + IO_WRITE(reg, pihandle->var) #if BUILD_VERSION >= VERSION_J -#define EPI_SYNC(pihandle, stat, domain) \ - \ - WAIT_ON_IOBUSY(stat); \ - \ - domain = pihandle->domain; \ - if (__osCurrentHandle[domain]->type != pihandle->type) \ - { \ - OSPiHandle *cHandle = __osCurrentHandle[domain]; \ - if (domain == PI_DOMAIN1) \ - { \ - UPDATE_REG(pihandle, PI_BSD_DOM1_LAT_REG, latency); \ - UPDATE_REG(pihandle, PI_BSD_DOM1_PGS_REG, pageSize); \ - UPDATE_REG(pihandle, PI_BSD_DOM1_RLS_REG, relDuration); \ - UPDATE_REG(pihandle, PI_BSD_DOM1_PWD_REG, pulse); \ - } \ - else \ - { \ - UPDATE_REG(pihandle, PI_BSD_DOM2_LAT_REG, latency); \ - UPDATE_REG(pihandle, PI_BSD_DOM2_PGS_REG, pageSize); \ - UPDATE_REG(pihandle, PI_BSD_DOM2_RLS_REG, relDuration); \ - UPDATE_REG(pihandle, PI_BSD_DOM2_PWD_REG, pulse); \ - } \ - cHandle->type = pihandle->type; \ - cHandle->latency = pihandle->latency; \ - cHandle->pageSize = pihandle->pageSize; \ - cHandle->relDuration = pihandle->relDuration; \ - cHandle->pulse = pihandle->pulse; \ - }(void)0 +#define EPI_SYNC(pihandle, stat, domain) \ + \ + WAIT_ON_IOBUSY(stat); \ + \ + domain = pihandle->domain; \ + if (__osCurrentHandle[domain]->type != pihandle->type) { \ + OSPiHandle* cHandle = __osCurrentHandle[domain]; \ + if (domain == PI_DOMAIN1) { \ + UPDATE_REG(pihandle, PI_BSD_DOM1_LAT_REG, latency); \ + UPDATE_REG(pihandle, PI_BSD_DOM1_PGS_REG, pageSize); \ + UPDATE_REG(pihandle, PI_BSD_DOM1_RLS_REG, relDuration); \ + UPDATE_REG(pihandle, PI_BSD_DOM1_PWD_REG, pulse); \ + } else { \ + UPDATE_REG(pihandle, PI_BSD_DOM2_LAT_REG, latency); \ + UPDATE_REG(pihandle, PI_BSD_DOM2_PGS_REG, pageSize); \ + UPDATE_REG(pihandle, PI_BSD_DOM2_RLS_REG, relDuration); \ + UPDATE_REG(pihandle, PI_BSD_DOM2_PWD_REG, pulse); \ + } \ + cHandle->type = pihandle->type; \ + cHandle->latency = pihandle->latency; \ + cHandle->pageSize = pihandle->pageSize; \ + cHandle->relDuration = pihandle->relDuration; \ + cHandle->pulse = pihandle->pulse; \ + } \ + (void)0 #else -#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(pihandle, PI_BSD_DOM1_LAT_REG, latency); \ - UPDATE_REG(pihandle, PI_BSD_DOM1_PGS_REG, pageSize); \ - UPDATE_REG(pihandle, PI_BSD_DOM1_RLS_REG, relDuration); \ - UPDATE_REG(pihandle, PI_BSD_DOM1_PWD_REG, pulse); \ - } \ - else \ - { \ - UPDATE_REG(pihandle, PI_BSD_DOM2_LAT_REG, latency); \ - UPDATE_REG(pihandle, PI_BSD_DOM2_PGS_REG, pageSize); \ - UPDATE_REG(pihandle, PI_BSD_DOM2_RLS_REG, relDuration); \ - UPDATE_REG(pihandle, PI_BSD_DOM2_PWD_REG, pulse); \ - } \ - __osCurrentHandle[domain] = pihandle; \ - }(void)0 +#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(pihandle, PI_BSD_DOM1_LAT_REG, latency); \ + UPDATE_REG(pihandle, PI_BSD_DOM1_PGS_REG, pageSize); \ + UPDATE_REG(pihandle, PI_BSD_DOM1_RLS_REG, relDuration); \ + UPDATE_REG(pihandle, PI_BSD_DOM1_PWD_REG, pulse); \ + } else { \ + UPDATE_REG(pihandle, PI_BSD_DOM2_LAT_REG, latency); \ + UPDATE_REG(pihandle, PI_BSD_DOM2_PGS_REG, pageSize); \ + UPDATE_REG(pihandle, PI_BSD_DOM2_RLS_REG, relDuration); \ + UPDATE_REG(pihandle, PI_BSD_DOM2_PWD_REG, pulse); \ + } \ + __osCurrentHandle[domain] = pihandle; \ + } \ + (void)0 #endif diff --git a/include/PRinternal/rmonint.h b/include/PRinternal/rmonint.h index 714a63f..66d8e2d 100644 --- a/include/PRinternal/rmonint.h +++ b/include/PRinternal/rmonint.h @@ -13,45 +13,44 @@ #define MIPS_SW_OPCODE 43 #define MIPS_BREAK_OPCODE 0xD -#define MIPS_BREAK_MASK 0xFC00003F +#define MIPS_BREAK_MASK 0xFC00003F -#define MIPS_BREAK(code) \ - ((((code) & 0xFFFFF) << 6) | MIPS_BREAK_OPCODE) +#define MIPS_BREAK(code) ((((code) & 0xFFFFF) << 6) | MIPS_BREAK_OPCODE) /* R4300 General Purpose Register Indices */ -#define GREG_IDX_ZERO 0 -#define GREG_IDX_AT 1 -#define GREG_IDX_T9 25 -#define GREG_IDX_K0 26 -#define GREG_IDX_GP 28 -#define GREG_IDX_RA 31 -#define GREG_IDX_LO 32 -#define GREG_IDX_HI 33 -#define GREG_IDX_CAUSE 34 -#define GREG_IDX_PC 35 -#define GREG_IDX_SR 36 +#define GREG_IDX_ZERO 0 +#define GREG_IDX_AT 1 +#define GREG_IDX_T9 25 +#define GREG_IDX_K0 26 +#define GREG_IDX_GP 28 +#define GREG_IDX_RA 31 +#define GREG_IDX_LO 32 +#define GREG_IDX_HI 33 +#define GREG_IDX_CAUSE 34 +#define GREG_IDX_PC 35 +#define GREG_IDX_SR 36 /* RSP Scalar Register Indices */ -#define SREG_IDX_ZERO 0 -#define SREG_IDX_RA 31 -#define SREG_IDX_DRAM_ADDR (32 + 0) -#define SREG_IDX_MEM_ADDR (32 + 1) -#define SREG_IDX_RD_LEN (32 + 2) -#define SREG_IDX_PC (32 + 3) -#define SREG_IDX_WR_LEN (32 + 4) -#define SREG_IDX_STATUS (32 + 5) -#define SREG_IDX_DMA_FULL (32 + 6) -#define SREG_IDX_DMA_BUSY (32 + 7) +#define SREG_IDX_ZERO 0 +#define SREG_IDX_RA 31 +#define SREG_IDX_DRAM_ADDR (32 + 0) +#define SREG_IDX_MEM_ADDR (32 + 1) +#define SREG_IDX_RD_LEN (32 + 2) +#define SREG_IDX_PC (32 + 3) +#define SREG_IDX_WR_LEN (32 + 4) +#define SREG_IDX_STATUS (32 + 5) +#define SREG_IDX_DMA_FULL (32 + 6) +#define SREG_IDX_DMA_BUSY (32 + 7) /* RSP Vector Register Properties */ -#define VREG_NUM 32 +#define VREG_NUM 32 #define VREG_SIZE 0x10 /* rmon */ #define RMON_MESG_CPU_BREAK 2 -#define RMON_MESG_SP_BREAK 4 -#define RMON_MESG_FAULT 8 +#define RMON_MESG_SP_BREAK 4 +#define RMON_MESG_FAULT 8 #define RMON_CPU 0 #define RMON_RSP 1 diff --git a/include/PRinternal/viint.h b/include/PRinternal/viint.h index b3c3943..fb369b1 100644 --- a/include/PRinternal/viint.h +++ b/include/PRinternal/viint.h @@ -2,66 +2,65 @@ #define _VIINT_H #include "PR/os_internal.h" -#define OS_TV_TYPE_PAL 0 +#define OS_TV_TYPE_PAL 0 #define OS_TV_TYPE_NTSC 1 #define OS_TV_TYPE_MPAL 2 -#define VI_STATE_MODE_UPDATED 0x01 +#define VI_STATE_MODE_UPDATED 0x01 #define VI_STATE_XSCALE_UPDATED 0x02 #define VI_STATE_YSCALE_UPDATED 0x04 -#define VI_STATE_CTRL_UPDATED 0x08 // related to control regs changing +#define VI_STATE_CTRL_UPDATED 0x08 // related to control regs changing #define VI_STATE_BUFFER_UPDATED 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_STATE_BLACK 0x20 // probably related to a black screen +#define VI_STATE_REPEATLINE 0x40 // repeat line? +#define VI_STATE_FADE 0x80 // fade -#define VI_SCALE_MASK 0xfff //see rcp scale_x/scale_y +#define VI_SCALE_MASK 0xfff // see rcp scale_x/scale_y #define VI_2_10_FPART_MASK 0x3ff -#define VI_SUBPIXEL_SH 0x10 +#define VI_SUBPIXEL_SH 0x10 -#define BURST(hsync_width, color_width, vsync_width, color_start) \ - (((u32)(hsync_width) & 0xFF) | (((u32)(color_width) & 0xFF) << 8) | (((u32)(vsync_width) & 0xF) << 16) | (((u32)(color_start) & 0xFFFF) << 20)) -#define WIDTH(v) (v) -#define VSYNC(v) (v) +#define BURST(hsync_width, color_width, vsync_width, color_start) \ + (((u32)(hsync_width) & 0xFF) | (((u32)(color_width) & 0xFF) << 8) | (((u32)(vsync_width) & 0xF) << 16) \ + | (((u32)(color_start) & 0xFFFF) << 20)) +#define WIDTH(v) (v) +#define VSYNC(v) (v) #define HSYNC(duration, leap) (((u32)(leap) << 16) | ((u32)(duration) & 0xFFFF)) -#define LEAP(upper, lower) (((u32)(upper) << 16) | ((u32)(lower) & 0xFFFF)) -#define START(start, end) (((u32)(start) << 16) | ((u32)(end) & 0xFFFF)) +#define LEAP(upper, lower) (((u32)(upper) << 16) | ((u32)(lower) & 0xFFFF)) +#define START(start, end) (((u32)(start) << 16) | ((u32)(end) & 0xFFFF)) #define FTOFIX(val, i, f) ((u32)((val) * (f32)(1 << (f))) & ((1 << ((i) + (f))) - 1)) -#define F210(val) FTOFIX(val, 2, 10) +#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 +#define VCURRENT(v) v // seemingly unused +#define ORIGIN(v) v +#define VINTR(v) v +#define HSTART START -typedef struct -{ +typedef struct { /* 0x0 */ f32 factor; /* 0x4 */ u16 offset; /* 0x8 */ u32 scale; } __OSViScale; -typedef struct -{ +typedef struct { /* 0x0 */ u16 state; /* 0x2 */ u16 retraceCount; - /* 0x4 */ void *framep; - /* 0x8 */ OSViMode *modep; + /* 0x4 */ void* framep; + /* 0x8 */ OSViMode* modep; /* 0xC */ u32 control; - /* 0x10 */ OSMesgQueue *msgq; + /* 0x10 */ OSMesgQueue* msgq; /* 0x14 */ OSMesg msg; /* 0x18 */ __OSViScale x; /* 0x24 */ __OSViScale y; } __OSViContext; // 0x30 bytes void __osViSwapContext(void); -extern __OSViContext *__osViCurr; -extern __OSViContext *__osViNext; +extern __OSViContext* __osViCurr; +extern __OSViContext* __osViNext; extern u32 __additional_scanline; -__OSViContext *__osViGetCurrentContext(void); +__OSViContext* __osViGetCurrentContext(void); void __osViInit(void); extern OSDevMgr __osViDevMgr; #endif diff --git a/include/assert.h b/include/assert.h index bfbf255..f34a33b 100644 --- a/include/assert.h +++ b/include/assert.h @@ -5,8 +5,8 @@ #undef assert #define assert(EX) ((void)0) #else -extern void __assert(const char *, const char *, int); -#define assert(EX) ((EX)?((void)0):__assert("EX", __FILE__, __LINE__)) +extern void __assert(const char*, const char*, int); +#define assert(EX) ((EX) ? ((void)0) : __assert("EX", __FILE__, __LINE__)) #endif /* NDEBUG */ #endif /* !__ASSERT_H__ */ diff --git a/include/compiler/gcc/memory.h b/include/compiler/gcc/memory.h index edfff5e..c2e4ef9 100644 --- a/include/compiler/gcc/memory.h +++ b/include/compiler/gcc/memory.h @@ -1,7 +1,7 @@ #ifndef _MEMORY_H #define _MEMORY_H /* - memory.h + memory.h */ #ifndef _SIZE_T_DEF @@ -9,15 +9,15 @@ typedef unsigned size_t; #endif -void *memccpy(void *,void *,int,size_t); -void *memchr(void *,int,size_t); -int memcmp(const void *,const void *,size_t); -void *memcpy(void *,const void *,size_t); -int memicmp(void *,void *,size_t); -void *memmove(void *,void *,size_t); -void *memset(void *,int,size_t); +void* memccpy(void*, void*, int, size_t); +void* memchr(void*, int, size_t); +int memcmp(const void*, const void*, size_t); +void* memcpy(void*, const void*, size_t); +int memicmp(void*, void*, size_t); +void* memmove(void*, void*, size_t); +void* memset(void*, int, size_t); -void movmem(void *,void *,unsigned); -void setmem(void *,unsigned,int); +void movmem(void*, void*, unsigned); +void setmem(void*, unsigned, int); #endif diff --git a/include/compiler/gcc/sgidefs.h b/include/compiler/gcc/sgidefs.h index 56567e8..a56d837 100644 --- a/include/compiler/gcc/sgidefs.h +++ b/include/compiler/gcc/sgidefs.h @@ -18,7 +18,7 @@ Boston, MA 02111-1307, USA. */ #ifndef _SGIDEFS_H -#define _SGIDEFS_H 1 +#define _SGIDEFS_H 1 /* * Definitions for the ISA level @@ -37,8 +37,8 @@ * 64bit code is essentially using the 32bit interface model just with * 64bit registers. */ -#define _MIPS_SIM_ABI32 1 -#define _MIPS_SIM_NABI32 2 -#define _MIPS_SIM_ABI64 3 +#define _MIPS_SIM_ABI32 1 +#define _MIPS_SIM_NABI32 2 +#define _MIPS_SIM_ABI64 3 #endif /* sgidefs.h */ diff --git a/include/compiler/gcc/stdarg.h b/include/compiler/gcc/stdarg.h index af337f6..ebadc39 100644 --- a/include/compiler/gcc/stdarg.h +++ b/include/compiler/gcc/stdarg.h @@ -14,12 +14,12 @@ #ifndef __GNUC_VA_LIST #define __GNUC_VA_LIST -typedef char * __gnuc_va_list; +typedef char* __gnuc_va_list; #endif /* not __GNUC_VA_LIST */ /* If this is for internal libc use, don't define anything but __gnuc_va_list. */ -#if defined (_STDARG_H) || defined (_VARARGS_H) +#if defined(_STDARG_H) || defined(_VARARGS_H) /* In GCC version 2, we want an ellipsis at the end of the declaration of the argument list. GCC version 1 can't parse it. */ @@ -30,12 +30,10 @@ typedef char * __gnuc_va_list; #define __va_ellipsis #endif -#if __mips>=3 -#define __va_rounded_size(__TYPE) \ - (((sizeof (__TYPE) + 8 - 1) / 8) * 8) +#if __mips >= 3 +#define __va_rounded_size(__TYPE) (((sizeof(__TYPE) + 8 - 1) / 8) * 8) #else -#define __va_rounded_size(__TYPE) \ - (((sizeof (__TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) +#define __va_rounded_size(__TYPE) (((sizeof(__TYPE) + sizeof(int) - 1) / sizeof(int)) * sizeof(int)) #endif /* Get definitions for _MIPS_SIM_ABI64 etc. */ @@ -45,37 +43,38 @@ typedef char * __gnuc_va_list; #ifdef _STDARG_H #if defined(_MIPS_SIM) && (_MIPS_SIM == _MIPS_SIM_ABI64) -#define va_start(__AP, __LASTARG) \ - (__AP = __builtin_next_arg (__LASTARG) - 64 \ - + (__builtin_args_info (2) > 8 ? 64 : __builtin_args_info(2) * 8)) +#define va_start(__AP, __LASTARG) \ + (__AP = __builtin_next_arg(__LASTARG) - 64 + (__builtin_args_info(2) > 8 ? 64 : __builtin_args_info(2) * 8)) #else -#define va_start(__AP, __LASTARG) \ - (__AP = (__gnuc_va_list) __builtin_next_arg (__LASTARG)) +#define va_start(__AP, __LASTARG) (__AP = (__gnuc_va_list)__builtin_next_arg(__LASTARG)) #endif #else -#define va_alist __builtin_va_alist -#if __mips>=3 +#define va_alist __builtin_va_alist +#if __mips >= 3 /* This assumes that `long long int' is always a 64 bit type. */ -#define va_dcl long long int __builtin_va_alist; __va_ellipsis +#define va_dcl \ + long long int __builtin_va_alist; \ + __va_ellipsis #else -#define va_dcl int __builtin_va_alist; __va_ellipsis +#define va_dcl \ + int __builtin_va_alist; \ + __va_ellipsis #endif /* Need alternate code for _MIPS_SIM_ABI64, but don't use that symbol because it may not be defined. */ #if defined(_MIPS_SIM) && (_MIPS_SIM == _MIPS_SIM_ABI64) -#define va_start(__AP) \ - (__AP = __builtin_next_arg () - 64 \ - + (__builtin_args_info (2) > 8 ? 64 : __builtin_args_info(2) * 8)) +#define va_start(__AP) \ + (__AP = __builtin_next_arg() - 64 + (__builtin_args_info(2) > 8 ? 64 : __builtin_args_info(2) * 8)) #else -#define va_start(__AP) __AP = (char *) &__builtin_va_alist +#define va_start(__AP) __AP = (char*)&__builtin_va_alist #endif #endif #ifndef va_end -void va_end (__gnuc_va_list); /* Defined in libgcc.a */ +void va_end(__gnuc_va_list); /* Defined in libgcc.a */ #endif -#define va_end(__AP) ((void)0) +#define va_end(__AP) ((void)0) /* We cast to void * and then to TYPE * because this avoids a warning about increasing the alignment requirement. */ @@ -83,35 +82,29 @@ void va_end (__gnuc_va_list); /* Defined in libgcc.a */ 32 bit calling convention left-aligns all parameters smaller than a word, whereas the __mips>=3 calling convention does not (and hence they are right aligned). */ -#if __mips>=3 +#if __mips >= 3 #ifdef __MIPSEB__ -#define va_arg(__AP, __type) \ - ((__type *) (void *) (__AP = (char *) ((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8) \ - + __va_rounded_size (__type))))[-1] +#define va_arg(__AP, __type) \ + ((__type*)(void*)(__AP = (char*)((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8) + __va_rounded_size(__type))))[-1] #else -#define va_arg(__AP, __type) \ - ((__AP = (char *) ((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8) \ - + __va_rounded_size (__type))), \ - *(__type *) (void *) (__AP - __va_rounded_size (__type))) +#define va_arg(__AP, __type) \ + ((__AP = (char*)((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8) + __va_rounded_size(__type))), \ + *(__type*)(void*)(__AP - __va_rounded_size(__type))) #endif #else /* not __mips>=3 */ #ifdef __MIPSEB__ /* For big-endian machines. */ -#define va_arg(__AP, __type) \ - ((__AP = (char *) ((__alignof__ (__type) > 4 \ - ? ((int)__AP + 8 - 1) & -8 \ - : ((int)__AP + 4 - 1) & -4) \ - + __va_rounded_size (__type))), \ - *(__type *) (void *) (__AP - __va_rounded_size (__type))) +#define va_arg(__AP, __type) \ + ((__AP = (char*)((__alignof__(__type) > 4 ? ((int)__AP + 8 - 1) & -8 : ((int)__AP + 4 - 1) & -4) \ + + __va_rounded_size(__type))), \ + *(__type*)(void*)(__AP - __va_rounded_size(__type))) #else /* For little-endian machines. */ -#define va_arg(__AP, __type) \ - ((__type *) (void *) (__AP = (char *) ((__alignof__(__type) > 4 \ - ? ((int)__AP + 8 - 1) & -8 \ - : ((int)__AP + 4 - 1) & -4) \ - + __va_rounded_size(__type))))[-1] +#define va_arg(__AP, __type) \ + ((__type*)(void*)(__AP = (char*)((__alignof__(__type) > 4 ? ((int)__AP + 8 - 1) & -8 : ((int)__AP + 4 - 1) & -4) \ + + __va_rounded_size(__type))))[-1] #endif #endif diff --git a/include/compiler/gcc/stdlib.h b/include/compiler/gcc/stdlib.h index 98f8a2e..669efd6 100644 --- a/include/compiler/gcc/stdlib.h +++ b/include/compiler/gcc/stdlib.h @@ -1,7 +1,7 @@ #ifndef _STDLIB_H #define _STDLIB_H /* - stdlib.h + stdlib.h */ #ifndef _SIZE_T_DEF @@ -11,68 +11,67 @@ typedef unsigned size_t; #ifndef _DIV_T_DEF #define _DIV_T_DEF -typedef struct DIV_T { - int quot; - int rem; +typedef struct DIV_T { + int quot; + int rem; } div_t; #endif #ifndef _LDIV_T_DEF #define _LDIV_T_DEF -typedef struct LDIV_T { - long quot; - long rem; +typedef struct LDIV_T { + long quot; + long rem; } ldiv_t; #endif #ifndef _LLDIV_T_DEF #define _LLDIV_T_DEF -typedef struct lldiv_t -{ +typedef struct lldiv_t { long long quot; long long rem; } lldiv_t; #endif #ifndef NULL -#define NULL 0 +#define NULL 0 #endif -#define _max(a,b) (((a) > (b)) ? (a) : (b)) -#define _min(a,b) (((a) < (b)) ? (a) : (b)) +#define _max(a, b) (((a) > (b)) ? (a) : (b)) +#define _min(a, b) (((a) < (b)) ? (a) : (b)) -#define RAND_MAX 32767 +#define RAND_MAX 32767 -int rand(void); +int rand(void); void srand(unsigned); -int abs(int); +int abs(int); long labs(long); -div_t div(int,int); -ldiv_t ldiv(long,long); +div_t div(int, int); +ldiv_t ldiv(long, long); lldiv_t lldiv(long long, long long); -int atoi(const char *); -long atol(const char *); +int atoi(const char*); +long atol(const char*); -long strtol(const char *,char **,int); -unsigned long strtoul(const char *,char **,int); +long strtol(const char*, char**, int); +unsigned long strtoul(const char*, char**, int); -char *itoa(int,char *,int); -char *ltoa(long,char *,int); -char *ultoa(unsigned long,char *,int); +char* itoa(int, char*, int); +char* ltoa(long, char*, int); +char* ultoa(unsigned long, char*, int); -double atof(const char *); -double strtod(const char *,char **); +double atof(const char*); +double strtod(const char*, char**); -void qsort(void *,size_t,size_t,int (*)(const void *,const void *)); -void *bsearch(const void *,const void *,size_t,size_t,int (*)(const void *,const void *)); +void qsort(void*, size_t, size_t, int (*)(const void*, const void*)); +void* bsearch(const void*, const void*, size_t, size_t, int (*)(const void*, const void*)); -void *malloc(size_t); -void *calloc(size_t,size_t); -void *realloc(void *,size_t); -void free(void *); +void* malloc(size_t); +void* calloc(size_t, size_t); +void* realloc(void*, size_t); +void free(void*); void exit(int); diff --git a/include/compiler/gcc/string.h b/include/compiler/gcc/string.h index d82e1f1..e2ddc92 100644 --- a/include/compiler/gcc/string.h +++ b/include/compiler/gcc/string.h @@ -1,7 +1,7 @@ #ifndef _STRING_H #define _STRING_H /* - string.h + string.h */ #ifndef _SIZE_T_DEF @@ -11,32 +11,32 @@ typedef unsigned size_t; #include "memory.h" -char *stpcpy(char *,const char *); -char *strcat(char *,const char *); -char *strchr(const char *,int); -int strcmp(const char *,const char *); -char *strcpy(char *,const char *); -size_t strcspn(const char *,const char *); -char *strdup(const char *); -char *strerror(int); -int stricmp(const char *,const char *); -size_t strlen(const char *); -char *strlwr(char *); -char *strncat(char *,const char *,size_t); -int strncmp(const char *,const char *,size_t); -char *strncpy(char *,const char *,size_t); -int strnicmp(const char *,const char *,size_t); -char *strnset(char *,int,size_t); -char *strpbrk(const char *,const char *); -char *strrchr(const char *,int); -char *strrev(char *); -char *strset(char *,int); -size_t strspn(const char *,const char *); -char *strstr(const char *,const char *); -char *strtok(char *,const char *); -char *strupr(char *); +char* stpcpy(char*, const char*); +char* strcat(char*, const char*); +char* strchr(const char*, int); +int strcmp(const char*, const char*); +char* strcpy(char*, const char*); +size_t strcspn(const char*, const char*); +char* strdup(const char*); +char* strerror(int); +int stricmp(const char*, const char*); +size_t strlen(const char*); +char* strlwr(char*); +char* strncat(char*, const char*, size_t); +int strncmp(const char*, const char*, size_t); +char* strncpy(char*, const char*, size_t); +int strnicmp(const char*, const char*, size_t); +char* strnset(char*, int, size_t); +char* strpbrk(const char*, const char*); +char* strrchr(const char*, int); +char* strrev(char*); +char* strset(char*, int); +size_t strspn(const char*, const char*); +char* strstr(const char*, const char*); +char* strtok(char*, const char*); +char* strupr(char*); -#define strcmpi(s1,s2) stricmp(s1,s2) -#define strncmpi(s1,s2,n) strnicmp(s1,s2,n) +#define strcmpi(s1, s2) stricmp(s1, s2) +#define strncmpi(s1, s2, n) strnicmp(s1, s2, n) #endif diff --git a/include/compiler/ido/memory.h b/include/compiler/ido/memory.h index edfff5e..c2e4ef9 100644 --- a/include/compiler/ido/memory.h +++ b/include/compiler/ido/memory.h @@ -1,7 +1,7 @@ #ifndef _MEMORY_H #define _MEMORY_H /* - memory.h + memory.h */ #ifndef _SIZE_T_DEF @@ -9,15 +9,15 @@ typedef unsigned size_t; #endif -void *memccpy(void *,void *,int,size_t); -void *memchr(void *,int,size_t); -int memcmp(const void *,const void *,size_t); -void *memcpy(void *,const void *,size_t); -int memicmp(void *,void *,size_t); -void *memmove(void *,void *,size_t); -void *memset(void *,int,size_t); +void* memccpy(void*, void*, int, size_t); +void* memchr(void*, int, size_t); +int memcmp(const void*, const void*, size_t); +void* memcpy(void*, const void*, size_t); +int memicmp(void*, void*, size_t); +void* memmove(void*, void*, size_t); +void* memset(void*, int, size_t); -void movmem(void *,void *,unsigned); -void setmem(void *,unsigned,int); +void movmem(void*, void*, unsigned); +void setmem(void*, unsigned, int); #endif diff --git a/include/compiler/ido/stdarg.h b/include/compiler/ido/stdarg.h index 62f68e0..d44996a 100644 --- a/include/compiler/ido/stdarg.h +++ b/include/compiler/ido/stdarg.h @@ -1,33 +1,30 @@ #ifndef _STDARG_H #define _STDARG_H -typedef char *va_list; -#define _FP 1 -#define _INT 0 +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_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_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_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_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 /* STDARG_H */ diff --git a/include/compiler/ido/stdlib.h b/include/compiler/ido/stdlib.h index 98f8a2e..669efd6 100644 --- a/include/compiler/ido/stdlib.h +++ b/include/compiler/ido/stdlib.h @@ -1,7 +1,7 @@ #ifndef _STDLIB_H #define _STDLIB_H /* - stdlib.h + stdlib.h */ #ifndef _SIZE_T_DEF @@ -11,68 +11,67 @@ typedef unsigned size_t; #ifndef _DIV_T_DEF #define _DIV_T_DEF -typedef struct DIV_T { - int quot; - int rem; +typedef struct DIV_T { + int quot; + int rem; } div_t; #endif #ifndef _LDIV_T_DEF #define _LDIV_T_DEF -typedef struct LDIV_T { - long quot; - long rem; +typedef struct LDIV_T { + long quot; + long rem; } ldiv_t; #endif #ifndef _LLDIV_T_DEF #define _LLDIV_T_DEF -typedef struct lldiv_t -{ +typedef struct lldiv_t { long long quot; long long rem; } lldiv_t; #endif #ifndef NULL -#define NULL 0 +#define NULL 0 #endif -#define _max(a,b) (((a) > (b)) ? (a) : (b)) -#define _min(a,b) (((a) < (b)) ? (a) : (b)) +#define _max(a, b) (((a) > (b)) ? (a) : (b)) +#define _min(a, b) (((a) < (b)) ? (a) : (b)) -#define RAND_MAX 32767 +#define RAND_MAX 32767 -int rand(void); +int rand(void); void srand(unsigned); -int abs(int); +int abs(int); long labs(long); -div_t div(int,int); -ldiv_t ldiv(long,long); +div_t div(int, int); +ldiv_t ldiv(long, long); lldiv_t lldiv(long long, long long); -int atoi(const char *); -long atol(const char *); +int atoi(const char*); +long atol(const char*); -long strtol(const char *,char **,int); -unsigned long strtoul(const char *,char **,int); +long strtol(const char*, char**, int); +unsigned long strtoul(const char*, char**, int); -char *itoa(int,char *,int); -char *ltoa(long,char *,int); -char *ultoa(unsigned long,char *,int); +char* itoa(int, char*, int); +char* ltoa(long, char*, int); +char* ultoa(unsigned long, char*, int); -double atof(const char *); -double strtod(const char *,char **); +double atof(const char*); +double strtod(const char*, char**); -void qsort(void *,size_t,size_t,int (*)(const void *,const void *)); -void *bsearch(const void *,const void *,size_t,size_t,int (*)(const void *,const void *)); +void qsort(void*, size_t, size_t, int (*)(const void*, const void*)); +void* bsearch(const void*, const void*, size_t, size_t, int (*)(const void*, const void*)); -void *malloc(size_t); -void *calloc(size_t,size_t); -void *realloc(void *,size_t); -void free(void *); +void* malloc(size_t); +void* calloc(size_t, size_t); +void* realloc(void*, size_t); +void free(void*); void exit(int); diff --git a/include/compiler/ido/string.h b/include/compiler/ido/string.h index d82e1f1..e2ddc92 100644 --- a/include/compiler/ido/string.h +++ b/include/compiler/ido/string.h @@ -1,7 +1,7 @@ #ifndef _STRING_H #define _STRING_H /* - string.h + string.h */ #ifndef _SIZE_T_DEF @@ -11,32 +11,32 @@ typedef unsigned size_t; #include "memory.h" -char *stpcpy(char *,const char *); -char *strcat(char *,const char *); -char *strchr(const char *,int); -int strcmp(const char *,const char *); -char *strcpy(char *,const char *); -size_t strcspn(const char *,const char *); -char *strdup(const char *); -char *strerror(int); -int stricmp(const char *,const char *); -size_t strlen(const char *); -char *strlwr(char *); -char *strncat(char *,const char *,size_t); -int strncmp(const char *,const char *,size_t); -char *strncpy(char *,const char *,size_t); -int strnicmp(const char *,const char *,size_t); -char *strnset(char *,int,size_t); -char *strpbrk(const char *,const char *); -char *strrchr(const char *,int); -char *strrev(char *); -char *strset(char *,int); -size_t strspn(const char *,const char *); -char *strstr(const char *,const char *); -char *strtok(char *,const char *); -char *strupr(char *); +char* stpcpy(char*, const char*); +char* strcat(char*, const char*); +char* strchr(const char*, int); +int strcmp(const char*, const char*); +char* strcpy(char*, const char*); +size_t strcspn(const char*, const char*); +char* strdup(const char*); +char* strerror(int); +int stricmp(const char*, const char*); +size_t strlen(const char*); +char* strlwr(char*); +char* strncat(char*, const char*, size_t); +int strncmp(const char*, const char*, size_t); +char* strncpy(char*, const char*, size_t); +int strnicmp(const char*, const char*, size_t); +char* strnset(char*, int, size_t); +char* strpbrk(const char*, const char*); +char* strrchr(const char*, int); +char* strrev(char*); +char* strset(char*, int); +size_t strspn(const char*, const char*); +char* strstr(const char*, const char*); +char* strtok(char*, const char*); +char* strupr(char*); -#define strcmpi(s1,s2) stricmp(s1,s2) -#define strncmpi(s1,s2,n) strnicmp(s1,s2,n) +#define strcmpi(s1, s2) stricmp(s1, s2) +#define strncmpi(s1, s2, n) strnicmp(s1, s2, n) #endif diff --git a/include/compiler/modern_gcc/memory.h b/include/compiler/modern_gcc/memory.h index edfff5e..c2e4ef9 100644 --- a/include/compiler/modern_gcc/memory.h +++ b/include/compiler/modern_gcc/memory.h @@ -1,7 +1,7 @@ #ifndef _MEMORY_H #define _MEMORY_H /* - memory.h + memory.h */ #ifndef _SIZE_T_DEF @@ -9,15 +9,15 @@ typedef unsigned size_t; #endif -void *memccpy(void *,void *,int,size_t); -void *memchr(void *,int,size_t); -int memcmp(const void *,const void *,size_t); -void *memcpy(void *,const void *,size_t); -int memicmp(void *,void *,size_t); -void *memmove(void *,void *,size_t); -void *memset(void *,int,size_t); +void* memccpy(void*, void*, int, size_t); +void* memchr(void*, int, size_t); +int memcmp(const void*, const void*, size_t); +void* memcpy(void*, const void*, size_t); +int memicmp(void*, void*, size_t); +void* memmove(void*, void*, size_t); +void* memset(void*, int, size_t); -void movmem(void *,void *,unsigned); -void setmem(void *,unsigned,int); +void movmem(void*, void*, unsigned); +void setmem(void*, unsigned, int); #endif diff --git a/include/compiler/modern_gcc/sgidefs.h b/include/compiler/modern_gcc/sgidefs.h index 56567e8..a56d837 100644 --- a/include/compiler/modern_gcc/sgidefs.h +++ b/include/compiler/modern_gcc/sgidefs.h @@ -18,7 +18,7 @@ Boston, MA 02111-1307, USA. */ #ifndef _SGIDEFS_H -#define _SGIDEFS_H 1 +#define _SGIDEFS_H 1 /* * Definitions for the ISA level @@ -37,8 +37,8 @@ * 64bit code is essentially using the 32bit interface model just with * 64bit registers. */ -#define _MIPS_SIM_ABI32 1 -#define _MIPS_SIM_NABI32 2 -#define _MIPS_SIM_ABI64 3 +#define _MIPS_SIM_ABI32 1 +#define _MIPS_SIM_NABI32 2 +#define _MIPS_SIM_ABI64 3 #endif /* sgidefs.h */ diff --git a/include/compiler/modern_gcc/stdlib.h b/include/compiler/modern_gcc/stdlib.h index 98f8a2e..669efd6 100644 --- a/include/compiler/modern_gcc/stdlib.h +++ b/include/compiler/modern_gcc/stdlib.h @@ -1,7 +1,7 @@ #ifndef _STDLIB_H #define _STDLIB_H /* - stdlib.h + stdlib.h */ #ifndef _SIZE_T_DEF @@ -11,68 +11,67 @@ typedef unsigned size_t; #ifndef _DIV_T_DEF #define _DIV_T_DEF -typedef struct DIV_T { - int quot; - int rem; +typedef struct DIV_T { + int quot; + int rem; } div_t; #endif #ifndef _LDIV_T_DEF #define _LDIV_T_DEF -typedef struct LDIV_T { - long quot; - long rem; +typedef struct LDIV_T { + long quot; + long rem; } ldiv_t; #endif #ifndef _LLDIV_T_DEF #define _LLDIV_T_DEF -typedef struct lldiv_t -{ +typedef struct lldiv_t { long long quot; long long rem; } lldiv_t; #endif #ifndef NULL -#define NULL 0 +#define NULL 0 #endif -#define _max(a,b) (((a) > (b)) ? (a) : (b)) -#define _min(a,b) (((a) < (b)) ? (a) : (b)) +#define _max(a, b) (((a) > (b)) ? (a) : (b)) +#define _min(a, b) (((a) < (b)) ? (a) : (b)) -#define RAND_MAX 32767 +#define RAND_MAX 32767 -int rand(void); +int rand(void); void srand(unsigned); -int abs(int); +int abs(int); long labs(long); -div_t div(int,int); -ldiv_t ldiv(long,long); +div_t div(int, int); +ldiv_t ldiv(long, long); lldiv_t lldiv(long long, long long); -int atoi(const char *); -long atol(const char *); +int atoi(const char*); +long atol(const char*); -long strtol(const char *,char **,int); -unsigned long strtoul(const char *,char **,int); +long strtol(const char*, char**, int); +unsigned long strtoul(const char*, char**, int); -char *itoa(int,char *,int); -char *ltoa(long,char *,int); -char *ultoa(unsigned long,char *,int); +char* itoa(int, char*, int); +char* ltoa(long, char*, int); +char* ultoa(unsigned long, char*, int); -double atof(const char *); -double strtod(const char *,char **); +double atof(const char*); +double strtod(const char*, char**); -void qsort(void *,size_t,size_t,int (*)(const void *,const void *)); -void *bsearch(const void *,const void *,size_t,size_t,int (*)(const void *,const void *)); +void qsort(void*, size_t, size_t, int (*)(const void*, const void*)); +void* bsearch(const void*, const void*, size_t, size_t, int (*)(const void*, const void*)); -void *malloc(size_t); -void *calloc(size_t,size_t); -void *realloc(void *,size_t); -void free(void *); +void* malloc(size_t); +void* calloc(size_t, size_t); +void* realloc(void*, size_t); +void free(void*); void exit(int); diff --git a/include/compiler/modern_gcc/string.h b/include/compiler/modern_gcc/string.h index d82e1f1..e2ddc92 100644 --- a/include/compiler/modern_gcc/string.h +++ b/include/compiler/modern_gcc/string.h @@ -1,7 +1,7 @@ #ifndef _STRING_H #define _STRING_H /* - string.h + string.h */ #ifndef _SIZE_T_DEF @@ -11,32 +11,32 @@ typedef unsigned size_t; #include "memory.h" -char *stpcpy(char *,const char *); -char *strcat(char *,const char *); -char *strchr(const char *,int); -int strcmp(const char *,const char *); -char *strcpy(char *,const char *); -size_t strcspn(const char *,const char *); -char *strdup(const char *); -char *strerror(int); -int stricmp(const char *,const char *); -size_t strlen(const char *); -char *strlwr(char *); -char *strncat(char *,const char *,size_t); -int strncmp(const char *,const char *,size_t); -char *strncpy(char *,const char *,size_t); -int strnicmp(const char *,const char *,size_t); -char *strnset(char *,int,size_t); -char *strpbrk(const char *,const char *); -char *strrchr(const char *,int); -char *strrev(char *); -char *strset(char *,int); -size_t strspn(const char *,const char *); -char *strstr(const char *,const char *); -char *strtok(char *,const char *); -char *strupr(char *); +char* stpcpy(char*, const char*); +char* strcat(char*, const char*); +char* strchr(const char*, int); +int strcmp(const char*, const char*); +char* strcpy(char*, const char*); +size_t strcspn(const char*, const char*); +char* strdup(const char*); +char* strerror(int); +int stricmp(const char*, const char*); +size_t strlen(const char*); +char* strlwr(char*); +char* strncat(char*, const char*, size_t); +int strncmp(const char*, const char*, size_t); +char* strncpy(char*, const char*, size_t); +int strnicmp(const char*, const char*, size_t); +char* strnset(char*, int, size_t); +char* strpbrk(const char*, const char*); +char* strrchr(const char*, int); +char* strrev(char*); +char* strset(char*, int); +size_t strspn(const char*, const char*); +char* strstr(const char*, const char*); +char* strtok(char*, const char*); +char* strupr(char*); -#define strcmpi(s1,s2) stricmp(s1,s2) -#define strncmpi(s1,s2,n) strnicmp(s1,s2,n) +#define strcmpi(s1, s2) stricmp(s1, s2) +#define strncmpi(s1, s2, n) strnicmp(s1, s2, n) #endif diff --git a/include/sys/asm.h b/include/sys/asm.h index 60e6ccd..c9b1eb2 100644 --- a/include/sys/asm.h +++ b/include/sys/asm.h @@ -2,11 +2,11 @@ Copyright (C) 1998,1999 NINTENDO Co,Ltd, Copyright (C) 1998,1999 MONEGI CORPORATION, All Rights Reserved -This program is a trade secret of NINTENDO Co,Ltd and MONEGI Corp. +This program is a trade secret of NINTENDO Co,Ltd and MONEGI Corp. and it is not to be reproduced, published, disclosed to others, copied, -adapted, distributed, or displayed without the prior authorization of -NINTENDO Co,Ltd. and MONEGI Corp. Licensee agrees to attach or embed -this Notice on all copies of the program, including partial copies or +adapted, distributed, or displayed without the prior authorization of +NINTENDO Co,Ltd. and MONEGI Corp. Licensee agrees to attach or embed +this Notice on all copies of the program, including partial copies or modified versions thereof. *************************************************************************/ /************************************************************************ @@ -22,98 +22,92 @@ modified versions thereof. extern "C" { #endif -#define _MIPS_ISA_MIPS1 1 /* R2/3K */ -#define _MIPS_ISA_MIPS2 2 /* R4K/6K */ -#define _MIPS_ISA_MIPS3 3 /* R4K */ -#define _MIPS_ISA_MIPS4 4 /* TFP */ - -#define _MIPS_SIM_ABI32 1 /* MIPS MSIG calling convention */ -#define _MIPS_SIM_NABI32 2 /* MIPS new 32-bit abi */ - /* NABI32 is 64bit calling convention but 32bit type sizes) */ -#define _MIPS_SIM_ABI64 3 /* MIPS 64 calling convention */ +#define _MIPS_ISA_MIPS1 1 /* R2/3K */ +#define _MIPS_ISA_MIPS2 2 /* R4K/6K */ +#define _MIPS_ISA_MIPS3 3 /* R4K */ +#define _MIPS_ISA_MIPS4 4 /* TFP */ +#define _MIPS_SIM_ABI32 1 /* MIPS MSIG calling convention */ +#define _MIPS_SIM_NABI32 2 /* MIPS new 32-bit abi */ + /* NABI32 is 64bit calling convention but 32bit type sizes) */ +#define _MIPS_SIM_ABI64 3 /* MIPS 64 calling convention */ /* libgultra doesn't match with the .type directive but iQue sdk asm.h uses it */ #ifdef BBPLAYER -#define ASM_TYPE_FUNC(x) .type x, @function +#define ASM_TYPE_FUNC(x) .type x, @function #else #define ASM_TYPE_FUNC(x) #endif -#define LEAF(x) \ - .globl x ;\ - .align 2 ;\ - ASM_TYPE_FUNC(x) ;\ - .ent x,0 ;\ - x: ;\ - .frame sp,0,ra +#define LEAF(x) \ + .globl x; \ + .align 2; \ + ASM_TYPE_FUNC(x); \ + .ent x, 0; \ + x:; \ + .frame sp, 0, ra #if defined(BBPLAYER) || defined(__sgi) -#define XLEAF(x) \ - .globl x ;\ - .aent x,0 ;\ +#define XLEAF(x) \ + .globl x; \ + .aent x, 0; \ x: #else -#define XLEAF(x) \ - .globl x +#define XLEAF(x) .globl x #endif #ifdef BBPLAYER -#define END(proc) \ - .end proc ;\ - .size proc, . - proc +#define END(proc) \ + .end proc; \ + .size proc, .- proc #else -#define END(proc) \ - .end proc +#define END(proc) .end proc #endif -#define ABS(x, y) \ - .globl x ;\ - x = y +#define ABS(x, y) \ + .globl x; \ + x = y -#define EXPORT(x) \ - .globl x ;\ +#define EXPORT(x) \ + .globl x; \ x: #if defined(BBPLAYER) || defined(__sgi) -#define WEAK(x, y) \ - .weakext x, y +#define WEAK(x, y) .weakext x, y #else #define WEAK(x, y) #endif - -#define NOP \ - .set noreorder ;\ - nop ;\ +#define NOP \ + .set noreorder; \ + nop; \ .set reorder -#define CACHE(op, reg) \ - .set noreorder ;\ - cache op, reg ;\ +#define CACHE(op, reg) \ + .set noreorder; \ + cache op, reg; \ .set reorder -#define MFC0(reg, op) \ - .set noreorder ;\ - mfc0 reg, op ;\ +#define MFC0(reg, op) \ + .set noreorder; \ + mfc0 reg, op; \ .set reorder -#define MTC0(reg, op) \ - .set noreorder ;\ - mtc0 reg, op ;\ +#define MTC0(reg, op) \ + .set noreorder; \ + mtc0 reg, op; \ .set reorder -#define CFC1(reg, op) \ - .set noreorder ;\ - cfc1 reg, op ;\ +#define CFC1(reg, op) \ + .set noreorder; \ + cfc1 reg, op; \ .set reorder -#define CTC1(reg, op) \ - .set noreorder ;\ - ctc1 reg, op ;\ +#define CTC1(reg, op) \ + .set noreorder; \ + ctc1 reg, op; \ .set reorder - #ifdef __cplusplus } #endif diff --git a/include/sys/regdef.h b/include/sys/regdef.h index ac9c109..32b85c0 100644 --- a/include/sys/regdef.h +++ b/include/sys/regdef.h @@ -1,12 +1,12 @@ /************************************************************************ Copyright (C) 1998,1999 NINTENDO Co,Ltd, Copyright (C) 1998,1999 MONEGI CORPORATION, - All Rights Reserved -This program is a trade secret of NINTENDO Co,Ltd and MONEGI Corp. + All Rights Reserved +This program is a trade secret of NINTENDO Co,Ltd and MONEGI Corp. and it is not to be reproduced, published, disclosed to others, copied, -adapted, distributed, or displayed without the prior authorization of -NINTENDO Co,Ltd. and MONEGI Corp. Licensee agrees to attach or embed -this Notice on all copies of the program, including partial copies or +adapted, distributed, or displayed without the prior authorization of +NINTENDO Co,Ltd. and MONEGI Corp. Licensee agrees to attach or embed +this Notice on all copies of the program, including partial copies or modified versions thereof. *************************************************************************/ /************************************************************************ @@ -25,158 +25,158 @@ extern "C" { #ifdef mips #if (_MIPS_SIM == _MIPS_SIM_ABI32) -#define zero $0 -#define AT $at -#define v0 $2 -#define v1 $3 -#define a0 $4 -#define a1 $5 -#define a2 $6 -#define a3 $7 -#define t0 $8 -#define t1 $9 -#define t2 $10 -#define t3 $11 -#define t4 $12 -#define ta0 $12 -#define t5 $13 -#define ta1 $13 -#define t6 $14 -#define ta2 $14 -#define t7 $15 -#define ta3 $15 -#define s0 $16 -#define s1 $17 -#define s2 $18 -#define s3 $19 -#define s4 $20 -#define s5 $21 -#define s6 $22 -#define s7 $23 -#define t8 $24 -#define t9 $25 -#define jp $25 -#define k0 $26 -#define k1 $27 -#define gp $28 -#define sp $29 -#define fp $30 -#define s8 $30 -#define ra $31 +#define zero $0 +#define AT $at +#define v0 $2 +#define v1 $3 +#define a0 $4 +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define t0 $8 +#define t1 $9 +#define t2 $10 +#define t3 $11 +#define t4 $12 +#define ta0 $12 +#define t5 $13 +#define ta1 $13 +#define t6 $14 +#define ta2 $14 +#define t7 $15 +#define ta3 $15 +#define s0 $16 +#define s1 $17 +#define s2 $18 +#define s3 $19 +#define s4 $20 +#define s5 $21 +#define s6 $22 +#define s7 $23 +#define t8 $24 +#define t9 $25 +#define jp $25 +#define k0 $26 +#define k1 $27 +#define gp $28 +#define sp $29 +#define fp $30 +#define s8 $30 +#define ra $31 #endif #if (_MIPS_SIM == _MIPS_SIM_ABI64) -#define zero $0 -#define AT $at -#define v0 $2 -#define v1 $3 -#define a0 $4 -#define a1 $5 -#define a2 $6 -#define a3 $7 -#define a4 $8 -#define ta0 $8 -#define a5 $9 -#define ta1 $9 -#define a6 $10 -#define ta2 $10 -#define a7 $11 -#define ta3 $11 -#define t0 $12 -#define t1 $13 -#define t2 $14 -#define t3 $15 -#define s0 $16 -#define s1 $17 -#define s2 $18 -#define s3 $19 -#define s4 $20 -#define s5 $21 -#define s6 $22 -#define s7 $23 -#define t8 $24 -#define t9 $25 -#define jp $25 -#define k0 $26 -#define k1 $27 -#define gp $28 -#define sp $29 -#define fp $30 -#define s8 $30 -#define ra $31 +#define zero $0 +#define AT $at +#define v0 $2 +#define v1 $3 +#define a0 $4 +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define a4 $8 +#define ta0 $8 +#define a5 $9 +#define ta1 $9 +#define a6 $10 +#define ta2 $10 +#define a7 $11 +#define ta3 $11 +#define t0 $12 +#define t1 $13 +#define t2 $14 +#define t3 $15 +#define s0 $16 +#define s1 $17 +#define s2 $18 +#define s3 $19 +#define s4 $20 +#define s5 $21 +#define s6 $22 +#define s7 $23 +#define t8 $24 +#define t9 $25 +#define jp $25 +#define k0 $26 +#define k1 $27 +#define gp $28 +#define sp $29 +#define fp $30 +#define s8 $30 +#define ra $31 #endif #if (_MIPS_SIM == _MIPS_SIM_ABI32) -#define fv0 $f0 -#define fv0f $f1 -#define fv1 $f2 -#define fv1f $f3 -#define fa0 $f12 -#define fa0f $f13 -#define fa1 $f14 -#define fa1f $f15 -#define ft0 $f4 -#define ft0f $f5 -#define ft1 $f6 -#define ft1f $f7 -#define ft2 $f8 -#define ft2f $f9 -#define ft3 $f10 -#define ft3f $f11 -#define ft4 $f16 -#define ft4f $f17 -#define ft5 $f18 -#define ft5f $f19 -#define fs0 $f20 -#define fs0f $f21 -#define fs1 $f22 -#define fs1f $f23 -#define fs2 $f24 -#define fs2f $f25 -#define fs3 $f26 -#define fs3f $f27 -#define fs4 $f28 -#define fs4f $f29 -#define fs5 $f30 -#define fs5f $f31 +#define fv0 $f0 +#define fv0f $f1 +#define fv1 $f2 +#define fv1f $f3 +#define fa0 $f12 +#define fa0f $f13 +#define fa1 $f14 +#define fa1f $f15 +#define ft0 $f4 +#define ft0f $f5 +#define ft1 $f6 +#define ft1f $f7 +#define ft2 $f8 +#define ft2f $f9 +#define ft3 $f10 +#define ft3f $f11 +#define ft4 $f16 +#define ft4f $f17 +#define ft5 $f18 +#define ft5f $f19 +#define fs0 $f20 +#define fs0f $f21 +#define fs1 $f22 +#define fs1f $f23 +#define fs2 $f24 +#define fs2f $f25 +#define fs3 $f26 +#define fs3f $f27 +#define fs4 $f28 +#define fs4f $f29 +#define fs5 $f30 +#define fs5f $f31 #endif #if (_MIPS_SIM == _MIPS_SIM_ABI64) -#define fv0 $f0 -#define fv1 $f2 -#define fa0 $f12 -#define fa1 $f13 -#define fa2 $f14 -#define fa3 $f15 -#define fa4 $f16 -#define fa5 $f17 -#define fa6 $f18 -#define fa7 $f19 -#define ft0 $f4 -#define ft1 $f5 -#define ft2 $f6 -#define ft3 $f7 -#define ft4 $f8 -#define ft5 $f9 -#define ft6 $f10 -#define ft7 $f11 -#define ft8 $f20 -#define ft9 $f21 -#define ft10 $f22 -#define ft11 $f23 -#define ft12 $f1 -#define ft13 $f3 -#define fs0 $f24 -#define fs1 $f25 -#define fs2 $f26 -#define fs3 $f27 -#define fs4 $f28 -#define fs5 $f29 -#define fs6 $f30 -#define fs7 $f31 +#define fv0 $f0 +#define fv1 $f2 +#define fa0 $f12 +#define fa1 $f13 +#define fa2 $f14 +#define fa3 $f15 +#define fa4 $f16 +#define fa5 $f17 +#define fa6 $f18 +#define fa7 $f19 +#define ft0 $f4 +#define ft1 $f5 +#define ft2 $f6 +#define ft3 $f7 +#define ft4 $f8 +#define ft5 $f9 +#define ft6 $f10 +#define ft7 $f11 +#define ft8 $f20 +#define ft9 $f21 +#define ft10 $f22 +#define ft11 $f23 +#define ft12 $f1 +#define ft13 $f3 +#define fs0 $f24 +#define fs1 $f25 +#define fs2 $f26 +#define fs3 $f27 +#define fs4 $f28 +#define fs5 $f29 +#define fs6 $f30 +#define fs7 $f31 #endif -#define fcr31 $31 +#define fcr31 $31 #endif /* mips */ diff --git a/include/ultrahost.h b/include/ultrahost.h index 2c50b95..56c81d5 100644 --- a/include/ultrahost.h +++ b/include/ultrahost.h @@ -10,46 +10,46 @@ #ifdef WIN32 /* { */ -int __stdcall uhOpenGame(char *); +int __stdcall uhOpenGame(char*); int __stdcall uhCloseGame(int); -int __stdcall uhReadGame(int hfd,void *buf,int count); -int __stdcall uhWriteGame(int hfd,void *buf,int count); -int __stdcall uhReadRamrom(int hfd,void *ramrom_adr,void *buf,int count); -int __stdcall uhWriteRamrom(int hfd,void *ramrom_adr,void *buf,int count); +int __stdcall uhReadGame(int hfd, void* buf, int count); +int __stdcall uhWriteGame(int hfd, void* buf, int count); +int __stdcall uhReadRamrom(int hfd, void* ramrom_adr, void* buf, int count); +int __stdcall uhWriteRamrom(int hfd, void* ramrom_adr, void* buf, int count); int __stdcall uhPartnerInit(int hfd); -int __stdcall uhPartnerCmd(int hfd,char *ptcmd); -int __stdcall uhGload(int hfd,char *loadfile); +int __stdcall uhPartnerCmd(int hfd, char* ptcmd); +int __stdcall uhGload(int hfd, char* loadfile); -#else /* }{ */ +#else /* }{ */ #ifdef PTN64 /* { */ -#define execl execl_pt +#define execl execl_pt -#define uhOpenGame uhOpenGame_pt -#define uhCloseGame uhCloseGame_pt +#define uhOpenGame uhOpenGame_pt +#define uhCloseGame uhCloseGame_pt -#define uhReadGame uhReadGame_pt -#define uhWriteGame uhWriteGame_pt -#define uhReadRamrom uhReadRamrom_pt -#define uhWriteRamrom uhWriteRamrom_pt -#define uhPartnerCmd uhPartnerCmd_pt -#define uhGload uhGload_pt +#define uhReadGame uhReadGame_pt +#define uhWriteGame uhWriteGame_pt +#define uhReadRamrom uhReadRamrom_pt +#define uhWriteRamrom uhWriteRamrom_pt +#define uhPartnerCmd uhPartnerCmd_pt +#define uhGload uhGload_pt -int uhPartnerCmd(int,char *); -int uhGload(int,char *); +int uhPartnerCmd(int, char*); +int uhGload(int, char*); #endif /* } */ #ifdef __cplusplus extern "C" { #endif -int uhOpenGame(const char *); -int uhCloseGame(int); +int uhOpenGame(const char*); +int uhCloseGame(int); -int uhReadGame(int, void *, int); -int uhWriteGame(int, void *, int); -int uhWriteRamrom(int, void *, void*, int); -int uhReadRamrom(int, void *, void*, int); +int uhReadGame(int, void*, int); +int uhWriteGame(int, void*, int); +int uhWriteRamrom(int, void*, void*, int); +int uhReadRamrom(int, void*, void*, int); #ifdef __cplusplus } diff --git a/src/audio/auxbus.c b/src/audio/auxbus.c index 471ba41..2ad99ce 100644 --- a/src/audio/auxbus.c +++ b/src/audio/auxbus.c @@ -21,45 +21,39 @@ #include #include "synthInternals.h" -Acmd *alAuxBusPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, - Acmd *p) -{ - Acmd *ptr = p; - ALAuxBus *m = (ALAuxBus *)filter; - ALFilter **sources = m->sources; - s32 i; +Acmd* alAuxBusPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALAuxBus* m = (ALAuxBus*)filter; + ALFilter** sources = m->sources; + s32 i; /* * clear the output buffers here */ - aClearBuffer(ptr++, AL_AUX_L_OUT, outCount<<1); - aClearBuffer(ptr++, AL_AUX_R_OUT, outCount<<1); + aClearBuffer(ptr++, AL_AUX_L_OUT, outCount << 1); + aClearBuffer(ptr++, AL_AUX_R_OUT, outCount << 1); for (i = 0; i < m->sourceCount; i++) { - ptr = (sources[i]->handler)(sources[i], outp, outCount, sampleOffset, - ptr); + ptr = (sources[i]->handler)(sources[i], outp, outCount, sampleOffset, ptr); } - + return ptr; } -s32 alAuxBusParam(void *filter, s32 paramID, void *param) -{ - ALAuxBus *m = (ALAuxBus *) filter; - ALFilter **sources = m->sources; - +s32 alAuxBusParam(void* filter, s32 paramID, void* param) { + ALAuxBus* m = (ALAuxBus*)filter; + ALFilter** sources = m->sources; + switch (paramID) { case (AL_FILTER_ADD_SOURCE): - sources[m->sourceCount++] = (ALFilter *) param; + sources[m->sourceCount++] = (ALFilter*)param; break; - + default: /* ??? */ break; } return 0; - } - diff --git a/src/audio/bnkf.c b/src/audio/bnkf.c index dfd312f..3f8c7b7 100644 --- a/src/audio/bnkf.c +++ b/src/audio/bnkf.c @@ -26,118 +26,106 @@ * ### when the file format settles down a little, I'll remove these * ### for efficiency. */ -static void _bnkfPatchBank(ALBank *bank, s32 offset, s32 table); -static void _bnkfPatchInst(ALInstrument *i, s32 offset, s32 table); -static void _bnkfPatchSound(ALSound *s, s32 offset, s32 table); -static void _bnkfPatchWaveTable(ALWaveTable *w, s32 offset, s32 table); +static void _bnkfPatchBank(ALBank* bank, s32 offset, s32 table); +static void _bnkfPatchInst(ALInstrument* i, s32 offset, s32 table); +static void _bnkfPatchSound(ALSound* s, s32 offset, s32 table); +static void _bnkfPatchWaveTable(ALWaveTable* w, s32 offset, s32 table); -void alSeqFileNew(ALSeqFile *file, u8 *base) -{ - s32 offset = (s32) base; +void alSeqFileNew(ALSeqFile* file, u8* base) { + s32 offset = (s32)base; s32 i; - + /* * patch the file so that offsets are pointers */ for (i = 0; i < file->seqCount; i++) { - file->seqArray[i].offset = (u8 *)((u8 *)file->seqArray[i].offset + offset); + file->seqArray[i].offset = (u8*)((u8*)file->seqArray[i].offset + offset); } } -void alBnkfNew(ALBankFile *file, u8 *table) -{ - s32 offset = (s32) file; - s32 woffset = (s32) table; - +void alBnkfNew(ALBankFile* file, u8* table) { + s32 offset = (s32)file; + s32 woffset = (s32)table; + s32 i; - + /* * check the file format revision in debug libraries */ ALFailIf(file->revision != AL_BANK_VERSION, ERR_ALBNKFNEW); - + /* * patch the file so that offsets are pointers */ for (i = 0; i < file->bankCount; i++) { - file->bankArray[i] = (ALBank *)((u8 *)file->bankArray[i] + offset); - if(file->bankArray[i]) + file->bankArray[i] = (ALBank*)((u8*)file->bankArray[i] + offset); + if (file->bankArray[i]) _bnkfPatchBank(file->bankArray[i], offset, woffset); } } -void _bnkfPatchBank(ALBank *bank, s32 offset, s32 table) -{ +void _bnkfPatchBank(ALBank* bank, s32 offset, s32 table) { s32 i; - + if (bank->flags) return; bank->flags = 1; if (bank->percussion) { - bank->percussion = (ALInstrument *)((u8 *)bank->percussion + offset); + bank->percussion = (ALInstrument*)((u8*)bank->percussion + offset); _bnkfPatchInst(bank->percussion, offset, table); } - + for (i = 0; i < bank->instCount; i++) { - bank->instArray[i] = (ALInstrument *)((u8 *)bank->instArray[i] + - offset); - if(bank->instArray[i]) + bank->instArray[i] = (ALInstrument*)((u8*)bank->instArray[i] + offset); + if (bank->instArray[i]) _bnkfPatchInst(bank->instArray[i], offset, table); } } -void _bnkfPatchInst(ALInstrument *inst, s32 offset, s32 table) -{ +void _bnkfPatchInst(ALInstrument* inst, s32 offset, s32 table) { s32 i; if (inst->flags) return; inst->flags = 1; - - for (i = 0; i < inst->soundCount; i++) { - inst->soundArray[i] = (ALSound *)((u8 *)inst->soundArray[i] + - offset); - _bnkfPatchSound(inst->soundArray[i], offset, table); + for (i = 0; i < inst->soundCount; i++) { + inst->soundArray[i] = (ALSound*)((u8*)inst->soundArray[i] + offset); + _bnkfPatchSound(inst->soundArray[i], offset, table); } } -void _bnkfPatchSound(ALSound *s, s32 offset, s32 table) -{ +void _bnkfPatchSound(ALSound* s, s32 offset, s32 table) { if (s->flags) return; s->flags = 1; - - s->envelope = (ALEnvelope *)((u8 *)s->envelope + offset); - s->keyMap = (ALKeyMap *)((u8 *)s->keyMap + offset); - s->wavetable = (ALWaveTable *)((u8 *)s->wavetable + offset); + s->envelope = (ALEnvelope*)((u8*)s->envelope + offset); + s->keyMap = (ALKeyMap*)((u8*)s->keyMap + offset); + + s->wavetable = (ALWaveTable*)((u8*)s->wavetable + offset); _bnkfPatchWaveTable(s->wavetable, offset, table); } -void _bnkfPatchWaveTable(ALWaveTable *w, s32 offset, s32 table) -{ +void _bnkfPatchWaveTable(ALWaveTable* w, s32 offset, s32 table) { if (w->flags) return; w->flags = 1; - + w->base += table; /* sct 2/14/96 - patch wavetable loop info based on type. */ - if (w->type == AL_ADPCM_WAVE) - { - w->waveInfo.adpcmWave.book = (ALADPCMBook *)((u8 *)w->waveInfo.adpcmWave.book + offset); - if (w->waveInfo.adpcmWave.loop) - w->waveInfo.adpcmWave.loop = (ALADPCMloop *)((u8 *)w->waveInfo.adpcmWave.loop + offset); + if (w->type == AL_ADPCM_WAVE) { + w->waveInfo.adpcmWave.book = (ALADPCMBook*)((u8*)w->waveInfo.adpcmWave.book + offset); + if (w->waveInfo.adpcmWave.loop) + w->waveInfo.adpcmWave.loop = (ALADPCMloop*)((u8*)w->waveInfo.adpcmWave.loop + offset); + } else if (w->type == AL_RAW16_WAVE) { + if (w->waveInfo.rawWave.loop) + w->waveInfo.rawWave.loop = (ALRawLoop*)((u8*)w->waveInfo.rawWave.loop + offset); } - else if (w->type == AL_RAW16_WAVE) - { - if (w->waveInfo.rawWave.loop) - w->waveInfo.rawWave.loop = (ALRawLoop *)((u8 *)w->waveInfo.rawWave.loop + offset); - } } diff --git a/src/audio/cents2ratio.c b/src/audio/cents2ratio.c index 55cd2a3..b059323 100644 --- a/src/audio/cents2ratio.c +++ b/src/audio/cents2ratio.c @@ -10,18 +10,17 @@ #include -f32 alCents2Ratio(s32 cents) -{ +f32 alCents2Ratio(s32 cents) { f32 x; f32 ratio = 1.0f; - + if (cents >= 0) { - x = 1.00057779f; /* 2^(1/1200) */ + x = 1.00057779f; /* 2^(1/1200) */ } else { - x = 0.9994225441f; /* 2^(-1/1200) */ + x = 0.9994225441f; /* 2^(-1/1200) */ cents = -cents; } - + while (cents) { if (cents & 1) ratio *= x; diff --git a/src/audio/copy.c b/src/audio/copy.c index e80a8df..9cf5d4d 100644 --- a/src/audio/copy.c +++ b/src/audio/copy.c @@ -22,14 +22,12 @@ #include -void alCopy(void *src, void *dest, s32 len) -{ - s32 i; - u8 *s = (u8 *)src; - u8 *d = (u8 *)dest; +void alCopy(void* src, void* dest, s32 len) { + s32 i; + u8* s = (u8*)src; + u8* d = (u8*)dest; - for (i = 0; i < len; i++){ + for (i = 0; i < len; i++) { *d++ = *s++; } } - diff --git a/src/audio/cseq.c b/src/audio/cseq.c index 9c4b8bd..13f72eb 100644 --- a/src/audio/cseq.c +++ b/src/audio/cseq.c @@ -23,15 +23,13 @@ #include #include "cseq.h" +static u32 __readVarLen(ALCSeq* s, u32 track); +static u8 __getTrackByte(ALCSeq* s, u32 track); +static u32 __alCSeqGetTrackEvent(ALCSeq* seq, u32 track, ALEvent* event); -static u32 __readVarLen(ALCSeq *s,u32 track); -static u8 __getTrackByte(ALCSeq *s,u32 track); -static u32 __alCSeqGetTrackEvent(ALCSeq *seq, u32 track, ALEvent *event); +void alCSeqNew(ALCSeq* seq, u8* ptr) { + u32 i, tmpOff, flagTmp; -void alCSeqNew(ALCSeq *seq, u8 *ptr) -{ - u32 i,tmpOff,flagTmp; - /* load the seqence pointed to by ptr */ seq->base = (ALCMidiHdr*)ptr; seq->validTracks = 0; @@ -39,93 +37,81 @@ void alCSeqNew(ALCSeq *seq, u8 *ptr) seq->lastTicks = 0; seq->deltaFlag = 1; - for(i = 0; i < 16; i++) - { + for (i = 0; i < 16; i++) { seq->lastStatus[i] = 0; seq->curBUPtr[i] = 0; seq->curBULen[i] = 0; tmpOff = seq->base->trackOffset[i]; - if(tmpOff) /* if the track is valid */ + if (tmpOff) /* if the track is valid */ { flagTmp = 1 << i; seq->validTracks |= flagTmp; seq->curLoc[i] = (u8*)((u32)ptr + tmpOff); - seq->evtDeltaTicks[i] = __readVarLen(seq,i); + seq->evtDeltaTicks[i] = __readVarLen(seq, i); /*__alCSeqGetTrackEvent(seq,i); prime the event buffers */ - } - else + } else seq->curLoc[i] = 0; } - seq->qnpt = 1.0/(f32)seq->base->division; + seq->qnpt = 1.0 / (f32)seq->base->division; } -void alCSeqNextEvent(ALCSeq *seq,ALEvent *evt) -{ - u32 i; - u32 firstTime = 0xFFFFFFFF; - u32 firstTrack; - u32 lastTicks = seq->lastDeltaTicks; +void alCSeqNextEvent(ALCSeq* seq, ALEvent* evt) { + u32 i; + u32 firstTime = 0xFFFFFFFF; + u32 firstTrack; + u32 lastTicks = seq->lastDeltaTicks; #ifdef _DEBUG /* sct 1/17/96 - Warn if we are beyond the end of sequence. */ if (!seq->validTracks) - __osError(ERR_ALSEQOVERRUN, 0); + __osError(ERR_ALSEQOVERRUN, 0); #endif - - for(i = 0; i < 16 ; i++) - { - if((seq->validTracks >> i) & 1) - { - if(seq->deltaFlag) - seq->evtDeltaTicks[i] -= lastTicks; - if(seq->evtDeltaTicks[i] < firstTime) - { - firstTime = seq->evtDeltaTicks[i]; - firstTrack = i; + for (i = 0; i < 16; i++) { + if ((seq->validTracks >> i) & 1) { + if (seq->deltaFlag) + seq->evtDeltaTicks[i] -= lastTicks; + if (seq->evtDeltaTicks[i] < firstTime) { + firstTime = seq->evtDeltaTicks[i]; + firstTrack = i; } } } - - __alCSeqGetTrackEvent(seq,firstTrack,evt); + + __alCSeqGetTrackEvent(seq, firstTrack, evt); evt->msg.midi.ticks = firstTime; seq->lastTicks += firstTime; seq->lastDeltaTicks = firstTime; - if(evt->type != AL_TRACK_END) - seq->evtDeltaTicks[firstTrack] += __readVarLen(seq,firstTrack); + if (evt->type != AL_TRACK_END) + seq->evtDeltaTicks[firstTrack] += __readVarLen(seq, firstTrack); seq->deltaFlag = 1; - } - /* Note: If there are no valid tracks (ie. all tracks have reached the end of their data stream), then return FALSE to indicate that there is no next event. */ -char __alCSeqNextDelta(ALCSeq *seq, s32 *pDeltaTicks) -{ - u32 i; - u32 firstTime = 0xFFFFFFFF; - u32 lastTicks = seq->lastDeltaTicks; +char __alCSeqNextDelta(ALCSeq* seq, s32* pDeltaTicks) { + u32 i; + u32 firstTime = 0xFFFFFFFF; + u32 lastTicks = seq->lastDeltaTicks; if (!seq->validTracks) - return FALSE; + return FALSE; - for(i = 0; i < 16 ; i++) - { - if((seq->validTracks >> i) & 1) - { - if(seq->deltaFlag) - seq->evtDeltaTicks[i] -= lastTicks; + for (i = 0; i < 16; i++) { + if ((seq->validTracks >> i) & 1) { + if (seq->deltaFlag) + seq->evtDeltaTicks[i] -= lastTicks; - if(seq->evtDeltaTicks[i] < firstTime) - firstTime = seq->evtDeltaTicks[i]; + if (seq->evtDeltaTicks[i] < firstTime) + firstTime = seq->evtDeltaTicks[i]; } } - + seq->deltaFlag = 0; *pDeltaTicks = firstTime; @@ -133,62 +119,51 @@ char __alCSeqNextDelta(ALCSeq *seq, s32 *pDeltaTicks) } /* only call alCSeqGetTrackEvent with a valid track !! */ -static u32 __alCSeqGetTrackEvent(ALCSeq *seq, u32 track, ALEvent *event) -{ - u32 offset; - u8 status, loopCt, curLpCt, *tmpPtr; - +static u32 __alCSeqGetTrackEvent(ALCSeq* seq, u32 track, ALEvent* event) { + u32 offset; + u8 status, loopCt, curLpCt, *tmpPtr; - status = __getTrackByte(seq,track); /* read the status byte */ + status = __getTrackByte(seq, track); /* read the status byte */ if (status == AL_MIDI_Meta) /* running status not allowed on meta events!! */ { - u8 type = __getTrackByte(seq,track); - - if (type == AL_MIDI_META_TEMPO) - { + u8 type = __getTrackByte(seq, track); + + if (type == AL_MIDI_META_TEMPO) { event->type = AL_TEMPO_EVT; event->msg.tempo.status = status; event->msg.tempo.type = type; - event->msg.tempo.byte1 = __getTrackByte(seq,track); - event->msg.tempo.byte2 = __getTrackByte(seq,track); - event->msg.tempo.byte3 = __getTrackByte(seq,track); - seq->lastStatus[track] = 0; /* lastStatus not supported after meta */ - } - else if (type == AL_MIDI_META_EOT) - { - u32 flagMask; - + event->msg.tempo.byte1 = __getTrackByte(seq, track); + event->msg.tempo.byte2 = __getTrackByte(seq, track); + event->msg.tempo.byte3 = __getTrackByte(seq, track); + seq->lastStatus[track] = 0; /* lastStatus not supported after meta */ + } else if (type == AL_MIDI_META_EOT) { + u32 flagMask; + flagMask = 0x01 << track; seq->validTracks = seq->validTracks ^ flagMask; - - if(seq->validTracks) /* there is music left don't end */ + + if (seq->validTracks) /* there is music left don't end */ event->type = AL_TRACK_END; - else /* no more music send AL_SEQ_END_EVT msg */ + else /* no more music send AL_SEQ_END_EVT msg */ event->type = AL_SEQ_END_EVT; - } - else if (type == AL_CMIDI_LOOPSTART_CODE) - { - status = __getTrackByte(seq,track); /* get next two bytes, ignore them */ - status = __getTrackByte(seq,track); + } else if (type == AL_CMIDI_LOOPSTART_CODE) { + status = __getTrackByte(seq, track); /* get next two bytes, ignore them */ + status = __getTrackByte(seq, track); seq->lastStatus[track] = 0; event->type = AL_CSP_LOOPSTART; - } - else if (type == AL_CMIDI_LOOPEND_CODE) - { + } else if (type == AL_CMIDI_LOOPEND_CODE) { tmpPtr = seq->curLoc[track]; loopCt = *tmpPtr++; curLpCt = *tmpPtr; - if(curLpCt == 0) /* done looping */ + if (curLpCt == 0) /* done looping */ { - *tmpPtr = loopCt; /* reset current loop count */ + *tmpPtr = loopCt; /* reset current loop count */ seq->curLoc[track] = tmpPtr + 5; /* move pointer to end of event */ - } - else - { - if(curLpCt != 0xFF) /* not a loop forever */ - *tmpPtr = curLpCt - 1; /* decrement current loop count */ - tmpPtr++; /* get offset from end of event */ + } else { + if (curLpCt != 0xFF) /* not a loop forever */ + *tmpPtr = curLpCt - 1; /* decrement current loop count */ + tmpPtr++; /* get offset from end of event */ offset = (*tmpPtr++) << 24; offset += (*tmpPtr++) << 16; offset += (*tmpPtr++) << 8; @@ -199,161 +174,135 @@ static u32 __alCSeqGetTrackEvent(ALCSeq *seq, u32 track, ALEvent *event) event->type = AL_CSP_LOOPEND; } -#ifdef _DEBUG +#ifdef _DEBUG else __osError(ERR_ALSEQMETA, 1, type); #endif - - } - else - { + + } else { event->type = AL_SEQ_MIDI_EVT; - if (status & 0x80) /* if high bit is set, then new status */ + if (status & 0x80) /* if high bit is set, then new status */ { event->msg.midi.status = status; - event->msg.midi.byte1 = __getTrackByte(seq,track); + event->msg.midi.byte1 = __getTrackByte(seq, track); seq->lastStatus[track] = status; - } - else /* running status */ + } else /* running status */ { #ifdef _DEBUG - if(seq->lastStatus[track] == 0) + if (seq->lastStatus[track] == 0) __osError(ERR_ALCSEQZEROSTATUS, 1, track); #endif event->msg.midi.status = seq->lastStatus[track]; event->msg.midi.byte1 = status; } - - if (((event->msg.midi.status & 0xf0) != AL_MIDI_ProgramChange) && - ((event->msg.midi.status & 0xf0) != AL_MIDI_ChannelPressure)) - { - event->msg.midi.byte2 = __getTrackByte(seq,track); - if((event->msg.midi.status & 0xf0) == AL_MIDI_NoteOn) - { - event->msg.midi.duration = __readVarLen(seq,track); -#ifdef _DEBUG - if(event->msg.midi.byte2 == 0) - __osError( ERR_ALCSEQZEROVEL, 1, track); -#endif + + if (((event->msg.midi.status & 0xf0) != AL_MIDI_ProgramChange) + && ((event->msg.midi.status & 0xf0) != AL_MIDI_ChannelPressure)) { + event->msg.midi.byte2 = __getTrackByte(seq, track); + if ((event->msg.midi.status & 0xf0) == AL_MIDI_NoteOn) { + event->msg.midi.duration = __readVarLen(seq, track); +#ifdef _DEBUG + if (event->msg.midi.byte2 == 0) + __osError(ERR_ALCSEQZEROVEL, 1, track); +#endif } - } - else + } else event->msg.midi.byte2 = 0; } return TRUE; } -f32 alCSeqTicksToSec(ALCSeq *seq, s32 ticks, u32 tempo) -{ - return ((f32) (((f32)(ticks) * (f32)(tempo)) / - ((f32)(seq->base->division) * 1000000.0))); +f32 alCSeqTicksToSec(ALCSeq* seq, s32 ticks, u32 tempo) { + return ((f32)(((f32)(ticks) * (f32)(tempo)) / ((f32)(seq->base->division) * 1000000.0))); } -u32 alCSeqSecToTicks(ALCSeq *seq, f32 sec, u32 tempo) -{ +u32 alCSeqSecToTicks(ALCSeq* seq, f32 sec, u32 tempo) { return (u32)(((sec * 1000000.0) * seq->base->division) / tempo); } - -s32 alCSeqGetTicks(ALCSeq *seq) -{ - return seq->lastTicks; +s32 alCSeqGetTicks(ALCSeq* seq) { + return seq->lastTicks; } - -void alCSeqNewMarker(ALCSeq *seq, ALCSeqMarker *m, u32 ticks) -{ - ALEvent evt; - ALCSeq tempSeq; - s32 i; - +void alCSeqNewMarker(ALCSeq* seq, ALCSeqMarker* m, u32 ticks) { + ALEvent evt; + ALCSeq tempSeq; + s32 i; alCSeqNew(&tempSeq, (u8*)seq->base); - + do { - m->validTracks = tempSeq.validTracks; - m->lastTicks = tempSeq.lastTicks; + m->validTracks = tempSeq.validTracks; + m->lastTicks = tempSeq.lastTicks; m->lastDeltaTicks = tempSeq.lastDeltaTicks; - - for(i=0;i<16;i++) - { - m->curLoc[i] = tempSeq.curLoc[i]; - m->curBUPtr[i] = tempSeq.curBUPtr[i]; - m->curBULen[i] = tempSeq.curBULen[i]; - m->lastStatus[i] = tempSeq.lastStatus[i]; + + for (i = 0; i < 16; i++) { + m->curLoc[i] = tempSeq.curLoc[i]; + m->curBUPtr[i] = tempSeq.curBUPtr[i]; + m->curBULen[i] = tempSeq.curBULen[i]; + m->lastStatus[i] = tempSeq.lastStatus[i]; m->evtDeltaTicks[i] = tempSeq.evtDeltaTicks[i]; } - + alCSeqNextEvent(&tempSeq, &evt); - + if (evt.type == AL_SEQ_END_EVT) break; - - } while (tempSeq.lastTicks < ticks); + } while (tempSeq.lastTicks < ticks); } -void alCSeqSetLoc(ALCSeq *seq, ALCSeqMarker *m) -{ - s32 i; - - seq->validTracks = m->validTracks; - seq->lastTicks = m->lastTicks; +void alCSeqSetLoc(ALCSeq* seq, ALCSeqMarker* m) { + s32 i; + + seq->validTracks = m->validTracks; + seq->lastTicks = m->lastTicks; seq->lastDeltaTicks = m->lastDeltaTicks; - for(i=0;i<16;i++) - { - seq->curLoc[i] = m->curLoc[i]; - seq->curBUPtr[i] = m->curBUPtr[i]; - seq->curBULen[i] = m->curBULen[i]; - seq->lastStatus[i] = m->lastStatus[i]; + for (i = 0; i < 16; i++) { + seq->curLoc[i] = m->curLoc[i]; + seq->curBUPtr[i] = m->curBUPtr[i]; + seq->curBULen[i] = m->curBULen[i]; + seq->lastStatus[i] = m->lastStatus[i]; seq->evtDeltaTicks[i] = m->evtDeltaTicks[i]; } } -void alCSeqGetLoc(ALCSeq *seq, ALCSeqMarker *m) -{ - s32 i; - - m->validTracks = seq->validTracks; - m->lastTicks = seq->lastTicks; +void alCSeqGetLoc(ALCSeq* seq, ALCSeqMarker* m) { + s32 i; + + m->validTracks = seq->validTracks; + m->lastTicks = seq->lastTicks; m->lastDeltaTicks = seq->lastDeltaTicks; - for(i=0;i<16;i++) - { - m->curLoc[i] = seq->curLoc[i]; - m->curBUPtr[i] = seq->curBUPtr[i]; - m->curBULen[i] = seq->curBULen[i]; - m->lastStatus[i] = seq->lastStatus[i]; + for (i = 0; i < 16; i++) { + m->curLoc[i] = seq->curLoc[i]; + m->curBUPtr[i] = seq->curBUPtr[i]; + m->curBULen[i] = seq->curBULen[i]; + m->lastStatus[i] = seq->lastStatus[i]; m->evtDeltaTicks[i] = seq->evtDeltaTicks[i]; } } /* non-aligned byte reading routines */ -static u8 __getTrackByte(ALCSeq *seq,u32 track) -{ - u8 theByte; +static u8 __getTrackByte(ALCSeq* seq, u32 track) { + u8 theByte; - - if(seq->curBULen[track]) - { + if (seq->curBULen[track]) { theByte = *seq->curBUPtr[track]; seq->curBUPtr[track]++; seq->curBULen[track]--; - } - else /* need to handle backup mode */ + } else /* need to handle backup mode */ { theByte = *seq->curLoc[track]; seq->curLoc[track]++; - if(theByte == AL_CMIDI_BLOCK_CODE) - { - u8 loBackUp,hiBackUp,theLen,nextByte; - u32 backup; - + if (theByte == AL_CMIDI_BLOCK_CODE) { + u8 loBackUp, hiBackUp, theLen, nextByte; + u32 backup; + nextByte = *seq->curLoc[track]; seq->curLoc[track]++; - if(nextByte != AL_CMIDI_BLOCK_CODE) - { + if (nextByte != AL_CMIDI_BLOCK_CODE) { /* if here, then got a backup section. get the amount of backup, and the len of the section. Subtract the amount of backup from the curLoc ptr, and subtract four more, since @@ -377,33 +326,20 @@ static u8 __getTrackByte(ALCSeq *seq,u32 track) } } - return theByte; + return theByte; } -static u32 __readVarLen(ALCSeq *seq,u32 track) -{ +static u32 __readVarLen(ALCSeq* seq, u32 track) { u32 value; u32 c; - value = (u32)__getTrackByte(seq,track); - if ( value & 0x00000080 ) - { + value = (u32)__getTrackByte(seq, track); + if (value & 0x00000080) { value &= 0x7f; - do - { - c = (u32)__getTrackByte(seq,track); + do { + c = (u32)__getTrackByte(seq, track); value = (value << 7) + (c & 0x7f); } while (c & 0x80); } return (value); } - - - - - - - - - - diff --git a/src/audio/cseq.h b/src/audio/cseq.h index 0342398..cc26002 100644 --- a/src/audio/cseq.h +++ b/src/audio/cseq.h @@ -1,11 +1,8 @@ - #ifndef __cseq__ #define __cseq__ - -char __alCSeqNextDelta(ALCSeq *seq, s32 *pDeltaTicks); - +char __alCSeqNextDelta(ALCSeq* seq, s32* pDeltaTicks); #endif /* __cseq__ */ diff --git a/src/audio/cseqp.h b/src/audio/cseqp.h index bb72541..20db2ea 100644 --- a/src/audio/cseqp.h +++ b/src/audio/cseqp.h @@ -3,8 +3,6 @@ #ifndef __cseqp__ #define __cseqp__ - -void __CSPPostNextSeqEvent(ALCSPlayer *seqp); - +void __CSPPostNextSeqEvent(ALCSPlayer* seqp); #endif /* __cseqp__ */ diff --git a/src/audio/cspdelete.c b/src/audio/cspdelete.c index 063c543..964603b 100644 --- a/src/audio/cspdelete.c +++ b/src/audio/cspdelete.c @@ -22,8 +22,6 @@ #include -void alCSPDelete(ALCSPlayer *seqp) -{ +void alCSPDelete(ALCSPlayer* seqp) { alSynRemovePlayer(seqp->drvr, &seqp->node); } - diff --git a/src/audio/cspgetchlvol.c b/src/audio/cspgetchlvol.c index 23d256e..3f1f305 100644 --- a/src/audio/cspgetchlvol.c +++ b/src/audio/cspgetchlvol.c @@ -20,8 +20,6 @@ #include -u8 alCSPGetChlVol(ALCSPlayer *seqp, u8 chan) -{ +u8 alCSPGetChlVol(ALCSPlayer* seqp, u8 chan) { return seqp->chanState[chan].vol; } - diff --git a/src/audio/cspgetfxmix.c b/src/audio/cspgetfxmix.c index c67e033..24e2f8e 100644 --- a/src/audio/cspgetfxmix.c +++ b/src/audio/cspgetfxmix.c @@ -20,8 +20,6 @@ #include -u8 alCSPGetChlFXMix(ALCSPlayer *seqp, u8 chan) -{ +u8 alCSPGetChlFXMix(ALCSPlayer* seqp, u8 chan) { return seqp->chanState[chan].fxmix; } - diff --git a/src/audio/cspgetpan.c b/src/audio/cspgetpan.c index 5c0e322..ff4ea70 100644 --- a/src/audio/cspgetpan.c +++ b/src/audio/cspgetpan.c @@ -20,8 +20,6 @@ #include -ALPan alCSPGetChlPan(ALCSPlayer *seqp, u8 chan) -{ +ALPan alCSPGetChlPan(ALCSPlayer* seqp, u8 chan) { return seqp->chanState[chan].pan; } - diff --git a/src/audio/cspgetpriority.c b/src/audio/cspgetpriority.c index ac38cae..76f2a46 100644 --- a/src/audio/cspgetpriority.c +++ b/src/audio/cspgetpriority.c @@ -20,7 +20,6 @@ #include -u8 alCSPGetChlPriority(ALCSPlayer *seqp, u8 chan) -{ +u8 alCSPGetChlPriority(ALCSPlayer* seqp, u8 chan) { return seqp->chanState[chan].priority; } diff --git a/src/audio/cspgetprogram.c b/src/audio/cspgetprogram.c index 382616f..f890567 100644 --- a/src/audio/cspgetprogram.c +++ b/src/audio/cspgetprogram.c @@ -22,21 +22,19 @@ #include -s32 alCSPGetChlProgram(ALCSPlayer *seqp, u8 chan) +s32 alCSPGetChlProgram(ALCSPlayer* seqp, u8 chan) { - s32 i; - ALBank *b = seqp->bank; - ALInstrument *inst; + s32 i; + ALBank* b = seqp->bank; + ALInstrument* inst; ALChanState s; s = seqp->chanState[chan]; - for (i=0; iinstCount; i++){ + for (i = 0; i < b->instCount; i++) { inst = b->instArray[i]; if (inst == s.instrument) return i; } - return(-1); - + return (-1); } - diff --git a/src/audio/cspgetseq.c b/src/audio/cspgetseq.c index 85d2545..af36f0f 100644 --- a/src/audio/cspgetseq.c +++ b/src/audio/cspgetseq.c @@ -22,8 +22,6 @@ #include -ALCSeq *alCSPGetSeq(ALCSPlayer *seqp) -{ +ALCSeq* alCSPGetSeq(ALCSPlayer* seqp) { return seqp->target; } - diff --git a/src/audio/cspgetstate.c b/src/audio/cspgetstate.c index 9be7937..73735e6 100644 --- a/src/audio/cspgetstate.c +++ b/src/audio/cspgetstate.c @@ -22,8 +22,6 @@ #include -s32 alCSPGetState(ALCSPlayer *seqp) -{ +s32 alCSPGetState(ALCSPlayer* seqp) { return seqp->state; } - diff --git a/src/audio/cspgettempo.c b/src/audio/cspgettempo.c index ed3dfe2..9856cd0 100644 --- a/src/audio/cspgettempo.c +++ b/src/audio/cspgettempo.c @@ -20,12 +20,10 @@ #include -s32 alCSPGetTempo(ALCSPlayer *seqp) -{ +s32 alCSPGetTempo(ALCSPlayer* seqp) { /* sct 1/8/96 - If no target sequence has been set, just return zero (instead of crashing). */ if (seqp->target == NULL) - return 0; + return 0; - return seqp->uspt/seqp->target->qnpt; + return seqp->uspt / seqp->target->qnpt; } - diff --git a/src/audio/cspgetvol.c b/src/audio/cspgetvol.c index 5353228..72726aa 100644 --- a/src/audio/cspgetvol.c +++ b/src/audio/cspgetvol.c @@ -20,8 +20,6 @@ #include -s16 alCSPGetVol(ALCSPlayer *seqp) -{ +s16 alCSPGetVol(ALCSPlayer* seqp) { return seqp->vol; } - diff --git a/src/audio/csplayer.c b/src/audio/csplayer.c index 5cd3df6..496de8d 100644 --- a/src/audio/csplayer.c +++ b/src/audio/csplayer.c @@ -45,52 +45,50 @@ #include "cseq.h" // TODO: this comes from a header #ident "$Revision: 1.17 $" -static ALMicroTime __CSPVoiceHandler(void *node); -static void __CSPHandleNextSeqEvent(ALCSPlayer *seqp); -static void __CSPHandleMIDIMsg(ALCSPlayer *seqp, ALEvent *event); -static void __CSPHandleMetaMsg(ALCSPlayer *seqp, ALEvent *event); -static void __CSPRepostEvent(ALEventQueue *evtq, ALEventListItem *item); -static void __setUsptFromTempo(ALCSPlayer *seqp, f32 tempo); /* sct 1/8/96 */ - +static ALMicroTime __CSPVoiceHandler(void* node); +static void __CSPHandleNextSeqEvent(ALCSPlayer* seqp); +static void __CSPHandleMIDIMsg(ALCSPlayer* seqp, ALEvent* event); +static void __CSPHandleMetaMsg(ALCSPlayer* seqp, ALEvent* event); +static void __CSPRepostEvent(ALEventQueue* evtq, ALEventListItem* item); +static void __setUsptFromTempo(ALCSPlayer* seqp, f32 tempo); /* sct 1/8/96 */ /* * Sequence Player public functions */ -void alCSPNew(ALCSPlayer *seqp, ALSeqpConfig *c) -{ - s32 i; - ALEventListItem *items; - ALVoiceState *vs; - ALVoiceState *voices; - - ALHeap *hp = c->heap; +void alCSPNew(ALCSPlayer* seqp, ALSeqpConfig* c) { + s32 i; + ALEventListItem* items; + ALVoiceState* vs; + ALVoiceState* voices; + + ALHeap* hp = c->heap; /* * initialize member variables */ - seqp->bank = 0; - seqp->target = NULL; - seqp->drvr = &alGlobals->drvr; - seqp->chanMask = 0xff; - seqp->uspt = 488; - seqp->nextDelta = 0; - seqp->state = AL_STOPPED; - seqp->vol = 0x7FFF; /* full volume */ - seqp->frameTime = AL_USEC_PER_FRAME; /* should get this from driver */ - seqp->curTime = 0; - seqp->initOsc = c->initOsc; - seqp->updateOsc = c->updateOsc; - seqp->stopOsc = c->stopOsc; + seqp->bank = 0; + seqp->target = NULL; + seqp->drvr = &alGlobals->drvr; + seqp->chanMask = 0xff; + seqp->uspt = 488; + seqp->nextDelta = 0; + seqp->state = AL_STOPPED; + seqp->vol = 0x7FFF; /* full volume */ + seqp->frameTime = AL_USEC_PER_FRAME; /* should get this from driver */ + seqp->curTime = 0; + seqp->initOsc = c->initOsc; + seqp->updateOsc = c->updateOsc; + seqp->stopOsc = c->stopOsc; - seqp->nextEvent.type = AL_SEQP_API_EVT; /* this will start the voice handler "spinning" */ + seqp->nextEvent.type = AL_SEQP_API_EVT; /* this will start the voice handler "spinning" */ /* * init the channel state */ seqp->maxChannels = c->maxChannels; - seqp->chanState = alHeapAlloc(hp, c->maxChannels, sizeof(ALChanState) ); - __initChanState((ALSeqPlayer*)seqp); /* sct 11/6/95 */ - + seqp->chanState = alHeapAlloc(hp, c->maxChannels, sizeof(ALChanState)); + __initChanState((ALSeqPlayer*)seqp); /* sct 11/6/95 */ + /* * init the voice state array */ @@ -99,11 +97,11 @@ void alCSPNew(ALCSPlayer *seqp, ALSeqpConfig *c) for (i = 0; i < c->maxVoices; i++) { vs = &voices[i]; vs->next = seqp->vFreeList; - seqp->vFreeList = vs; + seqp->vFreeList = vs; } - + seqp->vAllocHead = 0; - seqp->vAllocTail = 0; + seqp->vAllocTail = 0; #if BUILD_VERSION < VERSION_J #line 109 #endif @@ -114,224 +112,212 @@ void alCSPNew(ALCSPlayer *seqp, ALSeqpConfig *c) /* * add ourselves to the driver */ - seqp->node.next = NULL; - seqp->node.handler = __CSPVoiceHandler; + seqp->node.next = NULL; + seqp->node.handler = __CSPVoiceHandler; seqp->node.clientData = seqp; - alSynAddPlayer(&alGlobals->drvr, &seqp->node); + alSynAddPlayer(&alGlobals->drvr, &seqp->node); } /************************************************************* * private routines or driver callback routines *************************************************************/ -static ALMicroTime __CSPVoiceHandler(void *node) -{ - ALCSPlayer *seqp = (ALCSPlayer *) node; - ALEvent evt; - ALVoice *voice; - ALMicroTime delta; - ALVoiceState *vs; - void *oscState; - f32 oscValue; - u8 chan; +static ALMicroTime __CSPVoiceHandler(void* node) { + ALCSPlayer* seqp = (ALCSPlayer*)node; + ALEvent evt; + ALVoice* voice; + ALMicroTime delta; + ALVoiceState* vs; + void* oscState; + f32 oscValue; + u8 chan; do { - switch (seqp->nextEvent.type) - { - case (AL_SEQ_REF_EVT): - __CSPHandleNextSeqEvent(seqp); - break; + switch (seqp->nextEvent.type) { + case (AL_SEQ_REF_EVT): + __CSPHandleNextSeqEvent(seqp); + break; - case (AL_SEQP_API_EVT): - evt.type = AL_SEQP_API_EVT; - alEvtqPostEvent(&seqp->evtq, (ALEvent *)&evt, seqp->frameTime); - break; + case (AL_SEQP_API_EVT): + evt.type = AL_SEQP_API_EVT; + alEvtqPostEvent(&seqp->evtq, (ALEvent*)&evt, seqp->frameTime); + break; - case (AL_NOTE_END_EVT): - voice = seqp->nextEvent.msg.note.voice; + case (AL_NOTE_END_EVT): + voice = seqp->nextEvent.msg.note.voice; - alSynStopVoice(seqp->drvr, voice); - alSynFreeVoice(seqp->drvr, voice); - vs = (ALVoiceState *)voice->clientPrivate; - if(vs->flags) - __seqpStopOsc((ALSeqPlayer*)seqp,vs); - __unmapVoice((ALSeqPlayer*)seqp, voice); - break; + alSynStopVoice(seqp->drvr, voice); + alSynFreeVoice(seqp->drvr, voice); + vs = (ALVoiceState*)voice->clientPrivate; + if (vs->flags) + __seqpStopOsc((ALSeqPlayer*)seqp, vs); + __unmapVoice((ALSeqPlayer*)seqp, voice); + break; - case (AL_SEQP_ENV_EVT): - voice = seqp->nextEvent.msg.vol.voice; - vs = (ALVoiceState *)voice->clientPrivate; + case (AL_SEQP_ENV_EVT): + voice = seqp->nextEvent.msg.vol.voice; + vs = (ALVoiceState*)voice->clientPrivate; - if(vs->envPhase == AL_PHASE_ATTACK) - vs->envPhase = AL_PHASE_DECAY; + if (vs->envPhase == AL_PHASE_ATTACK) + vs->envPhase = AL_PHASE_DECAY; - delta = seqp->nextEvent.msg.vol.delta; - vs->envEndTime = seqp->curTime + delta; - vs->envGain = seqp->nextEvent.msg.vol.vol; - alSynSetVol(seqp->drvr, voice, __vsVol(vs, (ALSeqPlayer*)seqp), delta); - break; - - case (AL_TREM_OSC_EVT): - vs = seqp->nextEvent.msg.osc.vs; - oscState = seqp->nextEvent.msg.osc.oscState; - delta = (*seqp->updateOsc)(oscState,&oscValue); - vs->tremelo = (u8)oscValue; - alSynSetVol(seqp->drvr, &vs->voice, __vsVol(vs,(ALSeqPlayer*)seqp), - __vsDelta(vs,seqp->curTime)); - evt.type = AL_TREM_OSC_EVT; - evt.msg.osc.vs = vs; - evt.msg.osc.oscState = oscState; - alEvtqPostEvent(&seqp->evtq, &evt, delta); - break; - - case (AL_VIB_OSC_EVT): - vs = seqp->nextEvent.msg.osc.vs; - oscState = seqp->nextEvent.msg.osc.oscState; - chan = seqp->nextEvent.msg.osc.chan; - delta = (*seqp->updateOsc)(oscState,&oscValue); - vs->vibrato = oscValue; - alSynSetPitch(seqp->drvr, &vs->voice, vs->pitch * vs->vibrato - * seqp->chanState[chan].pitchBend); - evt.type = AL_VIB_OSC_EVT; - evt.msg.osc.vs = vs; - evt.msg.osc.oscState = oscState; - evt.msg.osc.chan = chan; - alEvtqPostEvent(&seqp->evtq, &evt, delta); - break; + delta = seqp->nextEvent.msg.vol.delta; + vs->envEndTime = seqp->curTime + delta; + vs->envGain = seqp->nextEvent.msg.vol.vol; + alSynSetVol(seqp->drvr, voice, __vsVol(vs, (ALSeqPlayer*)seqp), delta); + break; - case (AL_SEQP_MIDI_EVT): - case (AL_CSP_NOTEOFF_EVT): /* nextEvent is a note off midi message */ - __CSPHandleMIDIMsg(seqp, &seqp->nextEvent); - break; + case (AL_TREM_OSC_EVT): + vs = seqp->nextEvent.msg.osc.vs; + oscState = seqp->nextEvent.msg.osc.oscState; + delta = (*seqp->updateOsc)(oscState, &oscValue); + vs->tremelo = (u8)oscValue; + alSynSetVol(seqp->drvr, &vs->voice, __vsVol(vs, (ALSeqPlayer*)seqp), __vsDelta(vs, seqp->curTime)); + evt.type = AL_TREM_OSC_EVT; + evt.msg.osc.vs = vs; + evt.msg.osc.oscState = oscState; + alEvtqPostEvent(&seqp->evtq, &evt, delta); + break; - case (AL_SEQP_META_EVT): - __CSPHandleMetaMsg(seqp, &seqp->nextEvent); - break; + case (AL_VIB_OSC_EVT): + vs = seqp->nextEvent.msg.osc.vs; + oscState = seqp->nextEvent.msg.osc.oscState; + chan = seqp->nextEvent.msg.osc.chan; + delta = (*seqp->updateOsc)(oscState, &oscValue); + vs->vibrato = oscValue; + alSynSetPitch(seqp->drvr, &vs->voice, vs->pitch * vs->vibrato * seqp->chanState[chan].pitchBend); + evt.type = AL_VIB_OSC_EVT; + evt.msg.osc.vs = vs; + evt.msg.osc.oscState = oscState; + evt.msg.osc.chan = chan; + alEvtqPostEvent(&seqp->evtq, &evt, delta); + break; - case (AL_SEQP_VOL_EVT): - seqp->vol = seqp->nextEvent.msg.spvol.vol; - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) - { - alSynSetVol(seqp->drvr, &vs->voice, - __vsVol(vs, (ALSeqPlayer*)seqp), - __vsDelta(vs, seqp->curTime)); - } - break; + case (AL_SEQP_MIDI_EVT): + case (AL_CSP_NOTEOFF_EVT): /* nextEvent is a note off midi message */ + __CSPHandleMIDIMsg(seqp, &seqp->nextEvent); + break; - case (AL_SEQP_PLAY_EVT): - if (seqp->state != AL_PLAYING) - { - seqp->state = AL_PLAYING; - __CSPPostNextSeqEvent(seqp); /* seqp must be AL_PLAYING before we call this routine. */ - } - break; + case (AL_SEQP_META_EVT): + __CSPHandleMetaMsg(seqp, &seqp->nextEvent); + break; - case (AL_SEQP_STOP_EVT): - if ( seqp->state == AL_STOPPING ) - { - for (vs = seqp->vAllocHead; vs != 0; vs = seqp->vAllocHead) - { + case (AL_SEQP_VOL_EVT): + seqp->vol = seqp->nextEvent.msg.spvol.vol; + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + alSynSetVol(seqp->drvr, &vs->voice, __vsVol(vs, (ALSeqPlayer*)seqp), __vsDelta(vs, seqp->curTime)); + } + break; + + case (AL_SEQP_PLAY_EVT): + if (seqp->state != AL_PLAYING) { + seqp->state = AL_PLAYING; + __CSPPostNextSeqEvent(seqp); /* seqp must be AL_PLAYING before we call this routine. */ + } + break; + + case (AL_SEQP_STOP_EVT): + if (seqp->state == AL_STOPPING) { + for (vs = seqp->vAllocHead; vs != 0; vs = seqp->vAllocHead) { #ifdef _DEBUG - __osError(ERR_ALCSPVNOTFREE, 2, vs->channel, vs->key); -#endif - alSynStopVoice(seqp->drvr, &vs->voice); - alSynFreeVoice(seqp->drvr, &vs->voice); - if(vs->flags) - __seqpStopOsc((ALSeqPlayer*)seqp,vs); - __unmapVoice((ALSeqPlayer*)seqp, &vs->voice); - } - seqp->state = AL_STOPPED; + __osError(ERR_ALCSPVNOTFREE, 2, vs->channel, vs->key); +#endif + alSynStopVoice(seqp->drvr, &vs->voice); + alSynFreeVoice(seqp->drvr, &vs->voice); + if (vs->flags) + __seqpStopOsc((ALSeqPlayer*)seqp, vs); + __unmapVoice((ALSeqPlayer*)seqp, &vs->voice); + } + seqp->state = AL_STOPPED; - /* alEvtqFlush(&seqp->evtq); - Don't flush event queue - anymore. */ - /* sct 1/3/96 - Don't overwrite nextEvent with - AL_SEQP_API_EVT or set nextDelta to - AL_USEC_PER_FRAME since we're not stopping event - processing. */ - /* sct 1/3/96 - Don't return here since we keep - processing events as usual. */ - } - break; + /* alEvtqFlush(&seqp->evtq); - Don't flush event queue + anymore. */ + /* sct 1/3/96 - Don't overwrite nextEvent with + AL_SEQP_API_EVT or set nextDelta to + AL_USEC_PER_FRAME since we're not stopping event + processing. */ + /* sct 1/3/96 - Don't return here since we keep + processing events as usual. */ + } + break; - case (AL_SEQP_STOPPING_EVT): - if (seqp->state == AL_PLAYING) - { - /* sct 12/29/95 - Remove events associated with the - * stopping sequence. For compact sequence player, - * also remove all queued note off events since they - * are not contained in a compact sequence but are - * generated in response to note ons. Note that - * flushing AL_SEQP_MIDI_EVTs may flush events that - * were posted after the call to alSeqpStop, so the - * application must queue these events either when - * the player is fully stopped, or when it is - * playing. */ - alEvtqFlushType(&seqp->evtq, AL_SEQ_REF_EVT); - alEvtqFlushType(&seqp->evtq, AL_CSP_NOTEOFF_EVT); - alEvtqFlushType(&seqp->evtq, AL_SEQP_MIDI_EVT); + case (AL_SEQP_STOPPING_EVT): + if (seqp->state == AL_PLAYING) { + /* sct 12/29/95 - Remove events associated with the + * stopping sequence. For compact sequence player, + * also remove all queued note off events since they + * are not contained in a compact sequence but are + * generated in response to note ons. Note that + * flushing AL_SEQP_MIDI_EVTs may flush events that + * were posted after the call to alSeqpStop, so the + * application must queue these events either when + * the player is fully stopped, or when it is + * playing. */ + alEvtqFlushType(&seqp->evtq, AL_SEQ_REF_EVT); + alEvtqFlushType(&seqp->evtq, AL_CSP_NOTEOFF_EVT); + alEvtqFlushType(&seqp->evtq, AL_SEQP_MIDI_EVT); - /* sct 1/3/96 - Check to see which voices need to be - killed and release them. */ - /* Unkilled voices should have note end events - occurring prior to KILL_TIME. */ - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) - { - if (__voiceNeedsNoteKill ((ALSeqPlayer*)seqp, &vs->voice, KILL_TIME)) - __seqpReleaseVoice((ALSeqPlayer*)seqp, &vs->voice, KILL_TIME); - } + /* sct 1/3/96 - Check to see which voices need to be + killed and release them. */ + /* Unkilled voices should have note end events + occurring prior to KILL_TIME. */ + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + if (__voiceNeedsNoteKill((ALSeqPlayer*)seqp, &vs->voice, KILL_TIME)) + __seqpReleaseVoice((ALSeqPlayer*)seqp, &vs->voice, KILL_TIME); + } - seqp->state = AL_STOPPING; - evt.type = AL_SEQP_STOP_EVT; - alEvtqPostEvent(&seqp->evtq, &evt, AL_EVTQ_END); - } - break; + seqp->state = AL_STOPPING; + evt.type = AL_SEQP_STOP_EVT; + alEvtqPostEvent(&seqp->evtq, &evt, AL_EVTQ_END); + } + break; - case (AL_SEQP_PRIORITY_EVT): - chan = seqp->nextEvent.msg.sppriority.chan; - seqp->chanState[chan].priority = seqp->nextEvent.msg.sppriority.priority; - break; + case (AL_SEQP_PRIORITY_EVT): + chan = seqp->nextEvent.msg.sppriority.chan; + seqp->chanState[chan].priority = seqp->nextEvent.msg.sppriority.priority; + break; - case (AL_SEQP_SEQ_EVT): + case (AL_SEQP_SEQ_EVT): #if BUILD_VERSION < VERSION_J #line 294 #endif - assert(seqp->state != AL_PLAYING); /* Must be done playing to change sequences. */ + assert(seqp->state != AL_PLAYING); /* Must be done playing to change sequences. */ - seqp->target = seqp->nextEvent.msg.spseq.seq; - __setUsptFromTempo (seqp, 500000.0); - if (seqp->bank) - __initFromBank((ALSeqPlayer *)seqp, seqp->bank); - break; + seqp->target = seqp->nextEvent.msg.spseq.seq; + __setUsptFromTempo(seqp, 500000.0); + if (seqp->bank) + __initFromBank((ALSeqPlayer*)seqp, seqp->bank); + break; - case (AL_SEQP_BANK_EVT): + case (AL_SEQP_BANK_EVT): #if BUILD_VERSION < VERSION_J #line 303 #endif - assert(seqp->state == AL_STOPPED); /* Must be fully stopped to change banks. */ + assert(seqp->state == AL_STOPPED); /* Must be fully stopped to change banks. */ - seqp->bank = seqp->nextEvent.msg.spbank.bank; - __initFromBank((ALSeqPlayer *)seqp, seqp->bank); - break; + seqp->bank = seqp->nextEvent.msg.spbank.bank; + __initFromBank((ALSeqPlayer*)seqp, seqp->bank); + break; - /* sct 11/6/95 - these events should now be handled by __CSPHandleNextSeqEvent */ - case (AL_SEQ_END_EVT): - case (AL_TEMPO_EVT): - case (AL_SEQ_MIDI_EVT): + /* sct 11/6/95 - these events should now be handled by __CSPHandleNextSeqEvent */ + case (AL_SEQ_END_EVT): + case (AL_TEMPO_EVT): + case (AL_SEQ_MIDI_EVT): #if BUILD_VERSION < VERSION_J #line 313 #endif - assert(FALSE); + assert(FALSE); - break; + break; } - seqp->nextDelta = alEvtqNextEvent(&seqp->evtq, &seqp->nextEvent); - + seqp->nextDelta = alEvtqNextEvent(&seqp->evtq, &seqp->nextEvent); + } while (seqp->nextDelta == 0); /* * assume that next callback won't be more than half an * hour away */ - seqp->curTime += seqp->nextDelta; /* sct 11/7/95 */ + seqp->curTime += seqp->nextDelta; /* sct 11/7/95 */ return seqp->nextDelta; } @@ -345,23 +331,21 @@ static ALMicroTime __CSPVoiceHandler(void *node) sct 11/7/95 */ -void __CSPPostNextSeqEvent(ALCSPlayer *seqp) -{ - ALEvent evt; - s32 deltaTicks; - +void __CSPPostNextSeqEvent(ALCSPlayer* seqp) { + ALEvent evt; + s32 deltaTicks; + if (seqp->state != AL_PLAYING || seqp->target == NULL) return; - + /* Get the next event time in ticks. */ /* If false is returned, then there is no next delta (ie. end of sequence reached). */ if (!__alCSeqNextDelta(seqp->target, &deltaTicks)) - return; - - evt.type = AL_SEQ_REF_EVT; - alEvtqPostEvent(&seqp->evtq, &evt, deltaTicks * seqp->uspt); -} + return; + evt.type = AL_SEQ_REF_EVT; + alEvtqPostEvent(&seqp->evtq, &evt, deltaTicks * seqp->uspt); +} /* Call this routine to handle the next event in the sequence. @@ -370,110 +354,102 @@ void __CSPPostNextSeqEvent(ALCSPlayer *seqp) sct 11/7/95 */ -static void -__CSPHandleNextSeqEvent(ALCSPlayer *seqp) -{ - ALEvent evt; +static void __CSPHandleNextSeqEvent(ALCSPlayer* seqp) { + ALEvent evt; /* sct 1/5/96 - Do nothing if we don't have a target sequence. */ if (seqp->target == NULL) - return; + return; alCSeqNextEvent(seqp->target, &evt); - switch (evt.type) - { - case AL_SEQ_MIDI_EVT: - __CSPHandleMIDIMsg(seqp, &evt); - __CSPPostNextSeqEvent(seqp); - break; + switch (evt.type) { + case AL_SEQ_MIDI_EVT: + __CSPHandleMIDIMsg(seqp, &evt); + __CSPPostNextSeqEvent(seqp); + break; - case AL_TEMPO_EVT: - __CSPHandleMetaMsg(seqp, &evt); - __CSPPostNextSeqEvent(seqp); - break; + case AL_TEMPO_EVT: + __CSPHandleMetaMsg(seqp, &evt); + __CSPPostNextSeqEvent(seqp); + break; - case AL_SEQ_END_EVT: - seqp->state = AL_STOPPING; - evt.type = AL_SEQP_STOP_EVT; - alEvtqPostEvent(&seqp->evtq, &evt, AL_EVTQ_END); - break; + case AL_SEQ_END_EVT: + seqp->state = AL_STOPPING; + evt.type = AL_SEQP_STOP_EVT; + alEvtqPostEvent(&seqp->evtq, &evt, AL_EVTQ_END); + break; - case AL_TRACK_END: - case AL_CSP_LOOPSTART: - case AL_CSP_LOOPEND: - __CSPPostNextSeqEvent(seqp); - break; - - default: + case AL_TRACK_END: + case AL_CSP_LOOPSTART: + case AL_CSP_LOOPEND: + __CSPPostNextSeqEvent(seqp); + break; + + default: #if BUILD_VERSION < VERSION_J #line 399 #endif - assert(FALSE); /* Sequence event type not supported. */ + assert(FALSE); /* Sequence event type not supported. */ #if BUILD_VERSION >= VERSION_J - break; + break; #endif } } -static void __CSPHandleMIDIMsg(ALCSPlayer *seqp, ALEvent *event) -{ - ALVoice *voice; - ALVoiceState *vs; - s32 status; - u8 chan; - u8 key; - u8 vel; - u8 byte1; - u8 byte2; - ALMIDIEvent *midi = &event->msg.midi; - s16 vol; - ALEvent evt; - ALMicroTime deltaTime; - ALVoiceState *vstate; - ALPan pan; - ALFxRef fxref; - +static void __CSPHandleMIDIMsg(ALCSPlayer* seqp, ALEvent* event) { + ALVoice* voice; + ALVoiceState* vs; + s32 status; + u8 chan; + u8 key; + u8 vel; + u8 byte1; + u8 byte2; + ALMIDIEvent* midi = &event->msg.midi; + s16 vol; + ALEvent evt; + ALMicroTime deltaTime; + ALVoiceState* vstate; + ALPan pan; + ALFxRef fxref; status = midi->status & AL_MIDI_StatusMask; chan = midi->status & AL_MIDI_ChannelMask; - byte1 = key = midi->byte1; - byte2 = vel = midi->byte2; + byte1 = key = midi->byte1; + byte2 = vel = midi->byte2; - switch (status) - { + switch (status) { case (AL_MIDI_NoteOn): - if (vel != 0) /* a real note on */ + if (vel != 0) /* a real note on */ { - ALVoiceConfig config; - ALSound *sound; - s16 cents; - f32 pitch,oscValue; - u8 fxmix; - void *oscState; - ALInstrument *inst; - - /* If we're not playing, don't process note ons. */ - if (seqp->state != AL_PLAYING) - break; + ALVoiceConfig config; + ALSound* sound; + s16 cents; + f32 pitch, oscValue; + u8 fxmix; + void* oscState; + ALInstrument* inst; + + /* If we're not playing, don't process note ons. */ + if (seqp->state != AL_PLAYING) + break; sound = __lookupSoundQuick((ALSeqPlayer*)seqp, key, vel, chan); - ALFlagFailIf(!sound, seqp->debugFlags & NO_SOUND_ERR_MASK, - ERR_ALSEQP_NO_SOUND); - + ALFlagFailIf(!sound, seqp->debugFlags & NO_SOUND_ERR_MASK, ERR_ALSEQP_NO_SOUND); + config.priority = seqp->chanState[chan].priority; - config.fxBus = 0; + config.fxBus = 0; config.unityPitch = 0; - + vstate = __mapVoice((ALSeqPlayer*)seqp, key, vel, chan); - ALFlagFailIf(!vstate, seqp->debugFlags & NO_VOICE_ERR_MASK, - ERR_ALSEQP_NO_VOICE ); + ALFlagFailIf(!vstate, seqp->debugFlags & NO_VOICE_ERR_MASK, ERR_ALSEQP_NO_VOICE); voice = &vstate->voice; - + alSynAllocVoice(seqp->drvr, voice, &config); - + /* * set up the voice state structure */ @@ -483,14 +459,12 @@ static void __CSPHandleMIDIMsg(ALCSPlayer *seqp, ALEvent *event) vstate->phase = AL_PHASE_SUSTAIN; else vstate->phase = AL_PHASE_NOTEON; - - cents = (key - sound->keyMap->keyBase) * 100 - + sound->keyMap->detune; - + + cents = (key - sound->keyMap->keyBase) * 100 + sound->keyMap->detune; + vstate->pitch = alCents2Ratio(cents); vstate->envGain = sound->envelope->attackVolume; - vstate->envEndTime = seqp->curTime + - sound->envelope->attackTime; + vstate->envEndTime = seqp->curTime + sound->envelope->attackTime; /* * setup tremelo and vibrato if active @@ -499,14 +473,12 @@ static void __CSPHandleMIDIMsg(ALCSPlayer *seqp, ALEvent *event) inst = seqp->chanState[chan].instrument; oscValue = (f32)AL_VOL_FULL; /* set this as a default */ - if(inst->tremType) - { - if(seqp->initOsc) - { - deltaTime = (*seqp->initOsc)(&oscState,&oscValue,inst->tremType, - inst->tremRate,inst->tremDepth,inst->tremDelay); + if (inst->tremType) { + if (seqp->initOsc) { + deltaTime = (*seqp->initOsc)(&oscState, &oscValue, inst->tremType, inst->tremRate, + inst->tremDepth, inst->tremDelay); - if(deltaTime) /* a deltaTime of zero means don't run osc */ + if (deltaTime) /* a deltaTime of zero means don't run osc */ { evt.type = AL_TREM_OSC_EVT; evt.msg.osc.vs = vstate; @@ -516,17 +488,15 @@ static void __CSPHandleMIDIMsg(ALCSPlayer *seqp, ALEvent *event) } } } - vstate->tremelo = (u8)oscValue; /* will default if not changed by initOsc */ - - oscValue = 1.0f; /* set this as a default */ - if(inst->vibType) - { - if(seqp->initOsc) - { - deltaTime = (*seqp->initOsc)(&oscState,&oscValue,inst->vibType, - inst->vibRate,inst->vibDepth,inst->vibDelay); + vstate->tremelo = (u8)oscValue; /* will default if not changed by initOsc */ - if(deltaTime) /* a deltaTime of zero means don't run osc. */ + oscValue = 1.0f; /* set this as a default */ + if (inst->vibType) { + if (seqp->initOsc) { + deltaTime = (*seqp->initOsc)(&oscState, &oscValue, inst->vibType, inst->vibRate, inst->vibDepth, + inst->vibDelay); + + if (deltaTime) /* a deltaTime of zero means don't run osc. */ { evt.type = AL_VIB_OSC_EVT; evt.msg.osc.vs = vstate; @@ -538,44 +508,41 @@ static void __CSPHandleMIDIMsg(ALCSPlayer *seqp, ALEvent *event) } } vstate->vibrato = oscValue; /* will default if not changed by initOsc */ - + /* * calculate the note on parameters */ - pitch = vstate->pitch * seqp->chanState[chan].pitchBend * - vstate->vibrato; + pitch = vstate->pitch * seqp->chanState[chan].pitchBend * vstate->vibrato; fxmix = seqp->chanState[chan].fxmix; - pan = __vsPan(vstate, (ALSeqPlayer*)seqp); - vol = __vsVol(vstate, (ALSeqPlayer*)seqp); - deltaTime = sound->envelope->attackTime; - - alSynStartVoiceParams(seqp->drvr, voice, sound->wavetable, - pitch, vol, pan, fxmix, deltaTime); + pan = __vsPan(vstate, (ALSeqPlayer*)seqp); + vol = __vsVol(vstate, (ALSeqPlayer*)seqp); + deltaTime = sound->envelope->attackTime; + + alSynStartVoiceParams(seqp->drvr, voice, sound->wavetable, pitch, vol, pan, fxmix, deltaTime); /* * set up callbacks for envelope */ - evt.type = AL_SEQP_ENV_EVT; + evt.type = AL_SEQP_ENV_EVT; evt.msg.vol.voice = voice; - evt.msg.vol.vol = sound->envelope->decayVolume; + evt.msg.vol.vol = sound->envelope->decayVolume; evt.msg.vol.delta = sound->envelope->decayTime; - + alEvtqPostEvent(&seqp->evtq, &evt, deltaTime); - if(midi->duration) - { + if (midi->duration) { /* * set up note off evt. if no duration don't do this */ - evt.type = AL_CSP_NOTEOFF_EVT; + evt.type = AL_CSP_NOTEOFF_EVT; evt.msg.midi.status = chan | AL_MIDI_NoteOff; - evt.msg.midi.byte1 = key; - evt.msg.midi.byte2 = 0; /* not needed ? */ + evt.msg.midi.byte1 = key; + evt.msg.midi.byte2 = 0; /* not needed ? */ deltaTime = seqp->uspt * midi->duration; - + /* max time would be about one hour ten minutes */ alEvtqPostEvent(&seqp->evtq, &evt, deltaTime); } - + break; } @@ -587,20 +554,17 @@ static void __CSPHandleMIDIMsg(ALCSPlayer *seqp, ALEvent *event) case (AL_MIDI_NoteOff): vstate = __lookupVoice((ALSeqPlayer*)seqp, key, chan); - ALFlagFailIf(!vstate, seqp->debugFlags & NOTE_OFF_ERR_MASK, - ERR_ALSEQP_OFF_VOICE ); + ALFlagFailIf(!vstate, seqp->debugFlags & NOTE_OFF_ERR_MASK, ERR_ALSEQP_OFF_VOICE); if (vstate->phase == AL_PHASE_SUSTAIN) vstate->phase = AL_PHASE_SUSTREL; - else - { + else { vstate->phase = AL_PHASE_RELEASE; - __seqpReleaseVoice((ALSeqPlayer*)seqp, &vstate->voice, - vstate->sound->envelope->releaseTime); + __seqpReleaseVoice((ALSeqPlayer*)seqp, &vstate->voice, vstate->sound->envelope->releaseTime); } break; - + case (AL_MIDI_PolyKeyPressure): /* * Aftertouch per key (hardwired to volume). Note that @@ -608,12 +572,11 @@ static void __CSPHandleMIDIMsg(ALCSPlayer *seqp, ALEvent *event) * sounding. */ vstate = __lookupVoice((ALSeqPlayer*)seqp, key, chan); - ALFailIf(!vstate, ERR_ALSEQP_POLY_VOICE ); + ALFailIf(!vstate, ERR_ALSEQP_POLY_VOICE); vstate->velocity = byte2; - alSynSetVol(seqp->drvr, &vstate->voice, - __vsVol(vstate, (ALSeqPlayer*)seqp), - __vsDelta(vstate,seqp->curTime)); + alSynSetVol(seqp->drvr, &vstate->voice, __vsVol(vstate, (ALSeqPlayer*)seqp), + __vsDelta(vstate, seqp->curTime)); break; case (AL_MIDI_ChannelPressure): @@ -625,22 +588,17 @@ static void __CSPHandleMIDIMsg(ALCSPlayer *seqp, ALEvent *event) for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { if (vs->channel == chan) { vs->velocity = byte1; - alSynSetVol(seqp->drvr, &vs->voice, - __vsVol(vs, (ALSeqPlayer*)seqp), - __vsDelta(vs,seqp->curTime)); + alSynSetVol(seqp->drvr, &vs->voice, __vsVol(vs, (ALSeqPlayer*)seqp), __vsDelta(vs, seqp->curTime)); } } break; - + case (AL_MIDI_ControlChange): - switch (byte1) - { + switch (byte1) { case (AL_MIDI_PAN_CTRL): seqp->chanState[chan].pan = byte2; - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) - { - if (vs->channel == chan) - { + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + if (vs->channel == chan) { pan = __vsPan(vs, (ALSeqPlayer*)seqp); alSynSetPan(seqp->drvr, &vs->voice, pan); } @@ -648,47 +606,37 @@ static void __CSPHandleMIDIMsg(ALCSPlayer *seqp, ALEvent *event) break; case (AL_MIDI_VOLUME_CTRL): seqp->chanState[chan].vol = byte2; - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) - { - if ((vs->channel == chan) && (vs->envPhase != AL_PHASE_RELEASE)) - { + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + if ((vs->channel == chan) && (vs->envPhase != AL_PHASE_RELEASE)) { vol = __vsVol(vs, (ALSeqPlayer*)seqp); - alSynSetVol(seqp->drvr, &vs->voice, vol, - __vsDelta(vs,seqp->curTime)); + alSynSetVol(seqp->drvr, &vs->voice, vol, __vsDelta(vs, seqp->curTime)); } } break; case (AL_MIDI_PRIORITY_CTRL): - /* leave current voices where they are */ + /* leave current voices where they are */ seqp->chanState[chan].priority = byte2; break; case (AL_MIDI_SUSTAIN_CTRL): seqp->chanState[chan].sustain = byte2; - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) - { - if ((vs->channel == chan) && (vs->phase != AL_PHASE_RELEASE)) - { - if ( byte2 > AL_SUSTAIN ) - { + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + if ((vs->channel == chan) && (vs->phase != AL_PHASE_RELEASE)) { + if (byte2 > AL_SUSTAIN) { /* * sustain pedal down */ if (vs->phase == AL_PHASE_NOTEON) vs->phase = AL_PHASE_SUSTAIN; - } - else - { + } else { /* * sustain pedal up */ if (vs->phase == AL_PHASE_SUSTAIN) vs->phase = AL_PHASE_NOTEON; - else if(vs->phase == AL_PHASE_SUSTREL) - { + else if (vs->phase == AL_PHASE_SUSTREL) { vs->phase = AL_PHASE_RELEASE; - __seqpReleaseVoice((ALSeqPlayer*)seqp, - &vs->voice, + __seqpReleaseVoice((ALSeqPlayer*)seqp, &vs->voice, vs->sound->envelope->releaseTime); } } @@ -697,163 +645,141 @@ static void __CSPHandleMIDIMsg(ALCSPlayer *seqp, ALEvent *event) break; case (AL_MIDI_FX1_CTRL): seqp->chanState[chan].fxmix = byte2; - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) - { + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { if (vs->channel == chan) alSynSetFXMix(seqp->drvr, &vs->voice, byte2); } break; -/* case (AL_MIDI_FX_CTRL_0): - case (AL_MIDI_FX_CTRL_1): - case (AL_MIDI_FX_CTRL_2): - case (AL_MIDI_FX_CTRL_3): - case (AL_MIDI_FX_CTRL_4): - case (AL_MIDI_FX_CTRL_5): - case (AL_MIDI_FX_CTRL_6): - case (AL_MIDI_FX_CTRL_7): - fxref = alSynGetFXRef(seqp->drvr, 0, 0); - if (fxref) - alSynSetFXParam(seqp->drvr, fxref, (s16)byte1, (void *)byte2); - break; - case (AL_MIDI_FX3_CTRL): */ + /* case (AL_MIDI_FX_CTRL_0): + case (AL_MIDI_FX_CTRL_1): + case (AL_MIDI_FX_CTRL_2): + case (AL_MIDI_FX_CTRL_3): + case (AL_MIDI_FX_CTRL_4): + case (AL_MIDI_FX_CTRL_5): + case (AL_MIDI_FX_CTRL_6): + case (AL_MIDI_FX_CTRL_7): + fxref = alSynGetFXRef(seqp->drvr, 0, 0); + if (fxref) + alSynSetFXParam(seqp->drvr, fxref, (s16)byte1, (void + *)byte2); break; case (AL_MIDI_FX3_CTRL): */ default: break; } break; case (AL_MIDI_ProgramChange): - /* sct 1/16/96 - We must have a valid bank in order to process the program change. */ + /* sct 1/16/96 - We must have a valid bank in order to process the program change. */ #if BUILD_VERSION < VERSION_J #line 710 #endif - assert(seqp->bank != NULL); + assert(seqp->bank != NULL); - if (key < seqp->bank->instCount) - { - ALInstrument *inst = seqp->bank->instArray[key]; - __setInstChanState((ALSeqPlayer*)seqp, inst, chan); /* sct 11/6/95 */ - } - else - { + if (key < seqp->bank->instCount) { + ALInstrument* inst = seqp->bank->instArray[key]; + __setInstChanState((ALSeqPlayer*)seqp, inst, chan); /* sct 11/6/95 */ + } else { #ifdef _DEBUG __osError(ERR_ALSEQPINVALIDPROG, 2, key, seqp->bank->instCount); -#endif - } - break; - case (AL_MIDI_PitchBendChange): - { - s32 bendVal; - f32 bendRatio; - s32 cents; - - /* get 14-bit unsigned midi value */ - bendVal = ( (byte2 << 7) + byte1) - 8192; - - /* calculate pitch bend in cents */ - cents = (seqp->chanState[chan].bendRange * bendVal)/8192; - - /* calculate the corresponding ratio */ - bendRatio = alCents2Ratio(cents); - seqp->chanState[chan].pitchBend = bendRatio; - - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) - if (vs->channel == chan) - alSynSetPitch(seqp->drvr, &vs->voice, - vs->pitch * bendRatio * vs->vibrato); - +#endif } break; - + case (AL_MIDI_PitchBendChange): { + s32 bendVal; + f32 bendRatio; + s32 cents; + + /* get 14-bit unsigned midi value */ + bendVal = ((byte2 << 7) + byte1) - 8192; + + /* calculate pitch bend in cents */ + cents = (seqp->chanState[chan].bendRange * bendVal) / 8192; + + /* calculate the corresponding ratio */ + bendRatio = alCents2Ratio(cents); + seqp->chanState[chan].pitchBend = bendRatio; + + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) + if (vs->channel == chan) + alSynSetPitch(seqp->drvr, &vs->voice, vs->pitch * bendRatio * vs->vibrato); + + } break; + default: #ifdef _DEBUG __osError(ERR_ALSEQPUNKNOWNMIDI, 1, status); #endif break; } - } -static void __CSPHandleMetaMsg(ALCSPlayer *seqp, ALEvent *event) -{ - ALTempoEvent *tevt = &event->msg.tempo; - ALEvent evt; - s32 tempo; - s32 oldUspt; - u32 ticks; - ALMicroTime tempDelta,curDelta = 0; - ALEventListItem *thisNode,*nextNode,*firstTemp = 0; +static void __CSPHandleMetaMsg(ALCSPlayer* seqp, ALEvent* event) { + ALTempoEvent* tevt = &event->msg.tempo; + ALEvent evt; + s32 tempo; + s32 oldUspt; + u32 ticks; + ALMicroTime tempDelta, curDelta = 0; + ALEventListItem *thisNode, *nextNode, *firstTemp = 0; + if (event->msg.tempo.status == AL_MIDI_Meta) { + if (event->msg.tempo.type == AL_MIDI_META_TEMPO) { + oldUspt = seqp->uspt; + tempo = (tevt->byte1 << 16) | (tevt->byte2 << 8) | (tevt->byte3 << 0); + __setUsptFromTempo(seqp, (f32)tempo); /* sct 1/8/96 */ - if (event->msg.tempo.status == AL_MIDI_Meta) - { - if (event->msg.tempo.type == AL_MIDI_META_TEMPO) - { - oldUspt = seqp->uspt; - tempo = (tevt->byte1 << 16) | (tevt->byte2 << 8) | (tevt->byte3 << 0); - __setUsptFromTempo (seqp, (f32)tempo); /* sct 1/8/96 */ + thisNode = (ALEventListItem*)seqp->evtq.allocList.next; + while (thisNode) { + curDelta += thisNode->delta; + nextNode = (ALEventListItem*)thisNode->node.next; + if (thisNode->evt.type == AL_CSP_NOTEOFF_EVT) { + alUnlink((ALLink*)thisNode); - thisNode = (ALEventListItem*)seqp->evtq.allocList.next; - while(thisNode) - { - curDelta += thisNode->delta; - nextNode = (ALEventListItem*)thisNode->node.next; - if(thisNode->evt.type == AL_CSP_NOTEOFF_EVT) - { - alUnlink((ALLink*)thisNode); + if (firstTemp) + alLink((ALLink*)thisNode, (ALLink*)firstTemp); + else { + thisNode->node.next = 0; + thisNode->node.prev = 0; + firstTemp = thisNode; + } + tempDelta = curDelta; /* record the current delta */ + if (nextNode) /* don't do this if no nextNode */ + { + curDelta -= thisNode->delta; /* subtract out this delta */ + nextNode->delta += thisNode->delta; /* add it to next event */ + } + thisNode->delta = tempDelta; /* set this event delta from current */ + } + thisNode = nextNode; + } - if(firstTemp) - alLink((ALLink*)thisNode,(ALLink*)firstTemp); - else - { - thisNode->node.next = 0; - thisNode->node.prev = 0; - firstTemp = thisNode; - } - tempDelta = curDelta; /* record the current delta */ - if(nextNode) /* don't do this if no nextNode */ - { - curDelta -= thisNode->delta; /* subtract out this delta */ - nextNode->delta += thisNode->delta; /* add it to next event */ - } - thisNode->delta = tempDelta; /* set this event delta from current */ - } - thisNode = nextNode; - } - - thisNode = firstTemp; - while(thisNode) - { - nextNode = (ALEventListItem*)thisNode->node.next; - ticks = thisNode->delta/oldUspt; - thisNode->delta = ticks * seqp->uspt; - __CSPRepostEvent(&seqp->evtq,thisNode); - thisNode = nextNode; - } + thisNode = firstTemp; + while (thisNode) { + nextNode = (ALEventListItem*)thisNode->node.next; + ticks = thisNode->delta / oldUspt; + thisNode->delta = ticks * seqp->uspt; + __CSPRepostEvent(&seqp->evtq, thisNode); + thisNode = nextNode; + } } } } -static void __CSPRepostEvent(ALEventQueue *evtq, ALEventListItem *item) -{ - OSIntMask mask; - ALLink *node; - ALEventListItem *nextItem; - +static void __CSPRepostEvent(ALEventQueue* evtq, ALEventListItem* item) { + OSIntMask mask; + ALLink* node; + ALEventListItem* nextItem; + mask = osSetIntMask(OS_IM_NONE); - for (node = &evtq->allocList; node != 0; node = node->next) - { - if (!node->next) /* end of the list */ + for (node = &evtq->allocList; node != 0; node = node->next) { + if (!node->next) /* end of the list */ { - alLink((ALLink *)item, node); + alLink((ALLink*)item, node); break; - } - else - { - nextItem = (ALEventListItem *)node->next; - if (item->delta < nextItem->delta) - { + } else { + nextItem = (ALEventListItem*)node->next; + if (item->delta < nextItem->delta) { nextItem->delta -= item->delta; - alLink((ALLink *)item, node); + alLink((ALLink*)item, node); break; } item->delta -= nextItem->delta; @@ -862,7 +788,6 @@ static void __CSPRepostEvent(ALEventQueue *evtq, ALEventListItem *item) osSetIntMask(mask); } - /* This routine safely calculates the sequence player's uspt value based on the given tempo. It does this safely @@ -872,11 +797,9 @@ static void __CSPRepostEvent(ALEventQueue *evtq, ALEventListItem *item) Compact sequence player needs its own version of this routine since the ALCSeq's qnpt field is at a different offset. */ -static void __setUsptFromTempo (ALCSPlayer *seqp, f32 tempo) -{ +static void __setUsptFromTempo(ALCSPlayer* seqp, f32 tempo) { if (seqp->target) - seqp->uspt = (s32)((f32)tempo * seqp->target->qnpt); + seqp->uspt = (s32)((f32)tempo * seqp->target->qnpt); else - seqp->uspt = 488; /* This is the initial value set by alSeqpNew. */ + seqp->uspt = 488; /* This is the initial value set by alSeqpNew. */ } - diff --git a/src/audio/cspplay.c b/src/audio/cspplay.c index e34914c..38d0082 100644 --- a/src/audio/cspplay.c +++ b/src/audio/cspplay.c @@ -23,12 +23,10 @@ #include #include "cseqp.h" -void alCSPPlay(ALCSPlayer *seqp) -{ +void alCSPPlay(ALCSPlayer* seqp) { ALEvent evt; - + evt.type = AL_SEQP_PLAY_EVT; - + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/cspsendmidi.c b/src/audio/cspsendmidi.c index 3d03c9b..628457d 100644 --- a/src/audio/cspsendmidi.c +++ b/src/audio/cspsendmidi.c @@ -20,21 +20,18 @@ #include -void alCSPSendMidi(ALCSPlayer *seqp, s32 ticks, u8 status, u8 byte1, - u8 byte2) -{ - ALEvent evt; +void alCSPSendMidi(ALCSPlayer* seqp, s32 ticks, u8 status, u8 byte1, u8 byte2) { + ALEvent evt; ALMicroTime deltaTime; - evt.type = AL_SEQP_MIDI_EVT; - evt.msg.midi.ticks = 0; + evt.type = AL_SEQP_MIDI_EVT; + evt.msg.midi.ticks = 0; evt.msg.midi.status = status; - evt.msg.midi.byte1 = byte1; - evt.msg.midi.byte2 = byte2; + evt.msg.midi.byte1 = byte1; + evt.msg.midi.byte2 = byte2; evt.msg.midi.duration = 0; - - deltaTime = ticks*seqp->uspt; - + + deltaTime = ticks * seqp->uspt; + alEvtqPostEvent(&seqp->evtq, &evt, deltaTime); } - diff --git a/src/audio/cspsetbank.c b/src/audio/cspsetbank.c index 63292b4..11334ed 100644 --- a/src/audio/cspsetbank.c +++ b/src/audio/cspsetbank.c @@ -20,8 +20,7 @@ #include -void alCSPSetBank(ALCSPlayer *seqp, ALBank *b) -{ +void alCSPSetBank(ALCSPlayer* seqp, ALBank* b) { ALEvent evt; evt.type = AL_SEQP_BANK_EVT; @@ -29,4 +28,3 @@ void alCSPSetBank(ALCSPlayer *seqp, ALBank *b) alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/cspsetchlvol.c b/src/audio/cspsetchlvol.c index 28e62bb..774b0e8 100644 --- a/src/audio/cspsetchlvol.c +++ b/src/audio/cspsetchlvol.c @@ -20,16 +20,14 @@ #include -void alCSPSetChlVol(ALCSPlayer *seqp, u8 chan, u8 vol) -{ - ALEvent evt; +void alCSPSetChlVol(ALCSPlayer* seqp, u8 chan, u8 vol) { + ALEvent evt; - evt.type = AL_SEQP_MIDI_EVT; - evt.msg.midi.ticks = 0; + evt.type = AL_SEQP_MIDI_EVT; + evt.msg.midi.ticks = 0; evt.msg.midi.status = AL_MIDI_ControlChange | chan; - evt.msg.midi.byte1 = AL_MIDI_VOLUME_CTRL; - evt.msg.midi.byte2 = vol; - + evt.msg.midi.byte1 = AL_MIDI_VOLUME_CTRL; + evt.msg.midi.byte2 = vol; + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/cspsetfxmix.c b/src/audio/cspsetfxmix.c index f099297..c952e03 100644 --- a/src/audio/cspsetfxmix.c +++ b/src/audio/cspsetfxmix.c @@ -20,16 +20,14 @@ #include -void alCSPSetChlFXMix(ALCSPlayer *seqp, u8 chan, u8 fxmix) -{ - ALEvent evt; +void alCSPSetChlFXMix(ALCSPlayer* seqp, u8 chan, u8 fxmix) { + ALEvent evt; - evt.type = AL_SEQP_MIDI_EVT; - evt.msg.midi.ticks = 0; + evt.type = AL_SEQP_MIDI_EVT; + evt.msg.midi.ticks = 0; evt.msg.midi.status = AL_MIDI_ControlChange | chan; - evt.msg.midi.byte1 = AL_MIDI_FX1_CTRL; - evt.msg.midi.byte2 = fxmix; - + evt.msg.midi.byte1 = AL_MIDI_FX1_CTRL; + evt.msg.midi.byte2 = fxmix; + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/cspsetpan.c b/src/audio/cspsetpan.c index c0dab00..cfe9cf8 100644 --- a/src/audio/cspsetpan.c +++ b/src/audio/cspsetpan.c @@ -20,16 +20,14 @@ #include -void alCSPSetChlPan(ALCSPlayer *seqp, u8 chan, ALPan pan) -{ - ALEvent evt; +void alCSPSetChlPan(ALCSPlayer* seqp, u8 chan, ALPan pan) { + ALEvent evt; - evt.type = AL_SEQP_MIDI_EVT; - evt.msg.midi.ticks = 0; + evt.type = AL_SEQP_MIDI_EVT; + evt.msg.midi.ticks = 0; evt.msg.midi.status = AL_MIDI_ControlChange | chan; - evt.msg.midi.byte1 = AL_MIDI_PAN_CTRL; - evt.msg.midi.byte2 = pan; - + evt.msg.midi.byte1 = AL_MIDI_PAN_CTRL; + evt.msg.midi.byte2 = pan; + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/cspsetpriority.c b/src/audio/cspsetpriority.c index b449b82..dbb774c 100644 --- a/src/audio/cspsetpriority.c +++ b/src/audio/cspsetpriority.c @@ -20,8 +20,7 @@ #include -void alCSPSetChlPriority(ALCSPlayer *seqp, u8 chan, u8 priority) -{ +void alCSPSetChlPriority(ALCSPlayer* seqp, u8 chan, u8 priority) { ALEvent evt; evt.type = AL_SEQP_PRIORITY_EVT; diff --git a/src/audio/cspsetprogram.c b/src/audio/cspsetprogram.c index 2b19e63..717c13c 100644 --- a/src/audio/cspsetprogram.c +++ b/src/audio/cspsetprogram.c @@ -20,16 +20,14 @@ #include -void alCSPSetChlProgram(ALCSPlayer *seqp, u8 chan, u8 prog) -{ - ALEvent evt; +void alCSPSetChlProgram(ALCSPlayer* seqp, u8 chan, u8 prog) { + ALEvent evt; - evt.type = AL_SEQP_MIDI_EVT; - evt.msg.midi.ticks = 0; + evt.type = AL_SEQP_MIDI_EVT; + evt.msg.midi.ticks = 0; evt.msg.midi.status = AL_MIDI_ProgramChange | chan; - evt.msg.midi.byte1 = prog; - evt.msg.midi.byte2 = 0; - + evt.msg.midi.byte1 = prog; + evt.msg.midi.byte2 = 0; + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/cspsetseq.c b/src/audio/cspsetseq.c index 4b6718e..b0bcaa2 100644 --- a/src/audio/cspsetseq.c +++ b/src/audio/cspsetseq.c @@ -22,8 +22,7 @@ #include -void alCSPSetSeq(ALCSPlayer *seqp, ALCSeq *seq) -{ +void alCSPSetSeq(ALCSPlayer* seqp, ALCSeq* seq) { ALEvent evt; evt.type = AL_SEQP_SEQ_EVT; @@ -31,4 +30,3 @@ void alCSPSetSeq(ALCSPlayer *seqp, ALCSeq *seq) alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/cspsettempo.c b/src/audio/cspsettempo.c index b085b45..a589908 100644 --- a/src/audio/cspsettempo.c +++ b/src/audio/cspsettempo.c @@ -20,17 +20,15 @@ #include -void alCSPSetTempo(ALCSPlayer *seqp, s32 tempo) -{ - ALEvent evt; - - evt.type = AL_SEQP_META_EVT; +void alCSPSetTempo(ALCSPlayer* seqp, s32 tempo) { + ALEvent evt; + + evt.type = AL_SEQP_META_EVT; evt.msg.tempo.status = AL_MIDI_Meta; - evt.msg.tempo.type = AL_MIDI_META_TEMPO; - evt.msg.tempo.byte1 = (tempo & 0xff0000)>>16; - evt.msg.tempo.byte2 = (tempo & 0xff00)>>8; - evt.msg.tempo.byte3 = tempo & 0xff; - + evt.msg.tempo.type = AL_MIDI_META_TEMPO; + evt.msg.tempo.byte1 = (tempo & 0xff0000) >> 16; + evt.msg.tempo.byte2 = (tempo & 0xff00) >> 8; + evt.msg.tempo.byte3 = tempo & 0xff; + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/cspsetvol.c b/src/audio/cspsetvol.c index 6782f33..713e33a 100644 --- a/src/audio/cspsetvol.c +++ b/src/audio/cspsetvol.c @@ -20,13 +20,11 @@ #include -void alCSPSetVol(ALCSPlayer *seqp, s16 vol) -{ - ALEvent evt; +void alCSPSetVol(ALCSPlayer* seqp, s16 vol) { + ALEvent evt; + + evt.type = AL_SEQP_VOL_EVT; + evt.msg.spvol.vol = vol; - evt.type = AL_SEQP_VOL_EVT; - evt.msg.spvol.vol = vol; - alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/cspstop.c b/src/audio/cspstop.c index 9929820..7e399d3 100644 --- a/src/audio/cspstop.c +++ b/src/audio/cspstop.c @@ -22,11 +22,9 @@ #include -void alCSPStop(ALCSPlayer *seqp) -{ - ALEvent evt; +void alCSPStop(ALCSPlayer* seqp) { + ALEvent evt; - evt.type = AL_SEQP_STOPPING_EVT; + evt.type = AL_SEQP_STOPPING_EVT; alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/drvrnew.c b/src/audio/drvrnew.c index 7ca2e10..ac25114 100644 --- a/src/audio/drvrnew.c +++ b/src/audio/drvrnew.c @@ -28,182 +28,182 @@ * WARNING: THE FOLLOWING CONSTANT MUST BE KEPT IN SYNC * WITH SCALING IN MICROCODE!!! */ -#define SCALE 16384 +#define SCALE 16384 /* * the following arrays contain default parameters for * a few hopefully useful effects. */ -#define ms *(((s32)((f32)44.1))&~0x7) - +#define ms *(((s32)((f32)44.1)) & ~0x7) static s32 SMALLROOM_PARAMS[26] = { /* sections length */ - 3, 100 ms, - /* chorus chorus filter - input output fbcoef ffcoef gain rate depth coef */ - 0, 54 ms, 9830, -9830, 0, 0, 0, 0, - 19 ms, 38 ms, 3276, -3276, 0x3fff, 0, 0, 0, - 0, 60 ms, 5000, 0, 0, 0, 0, 0x5000 + 3, 100 ms, + /* chorus chorus filter +input output fbcoef ffcoef gain rate depth coef */ + 0, 54 ms, 9830, -9830, 0, 0, 0, 0, 19 ms, 38 ms, 3276, -3276, 0x3fff, 0, 0, 0, 0, 60 ms, 5000, 0, 0, 0, 0, 0x5000 }; static s32 BIGROOM_PARAMS[34] = { /* sections length */ - 4, 100 ms, - /* chorus chorus filter - input output fbcoef ffcoef gain rate depth coef */ - 0, 66 ms, 9830, -9830, 0, 0, 0, 0, - 22 ms, 54 ms, 3276, -3276, 0x3fff, 0, 0, 0, - 66 ms, 91 ms, 3276, -3276, 0x3fff, 0, 0, 0, - 0, 94 ms, 8000, 0, 0, 0, 0, 0x5000 + 4, 100 ms, + /* chorus chorus filter +input output fbcoef ffcoef gain rate depth coef */ + 0, 66 ms, 9830, -9830, 0, 0, 0, 0, 22 ms, 54 ms, 3276, -3276, 0x3fff, 0, 0, 0, 66 ms, 91 ms, 3276, -3276, 0x3fff, 0, + 0, 0, 0, 94 ms, 8000, 0, 0, 0, 0, 0x5000 }; static s32 ECHO_PARAMS[10] = { /* sections length */ - 1, 200 ms, - /* chorus chorus filter - input output fbcoef ffcoef gain rate depth coef */ - 0, 179 ms, 12000, 0, 0x7fff, 0, 0, 0 + 1, 200 ms, + /* chorus chorus filter +input output fbcoef ffcoef gain rate depth coef */ + 0, 179 ms, 12000, 0, 0x7fff, 0, 0, 0 }; static s32 CHORUS_PARAMS[10] = { /* sections length */ - 1, 20 ms, - /* chorus chorus filter - input output fbcoef ffcoef gain rate depth coef */ - 0, 5 ms, 0x4000, 0, 0x7fff, 7600, 700, 0 + 1, 20 ms, + /* chorus chorus filter +input output fbcoef ffcoef gain rate depth coef */ + 0, 5 ms, 0x4000, 0, 0x7fff, 7600, 700, 0 }; static s32 FLANGE_PARAMS[10] = { /* sections length */ - 1, 20 ms, - /* chorus chorus filter - input output fbcoef ffcoef gain rate depth coef */ - 0, 5 ms, 0, 0x5fff, 0x7fff, 380, 500, 0 + 1, 20 ms, + /* chorus chorus filter +input output fbcoef ffcoef gain rate depth coef */ + 0, 5 ms, 0, 0x5fff, 0x7fff, 380, 500, 0 }; -static s32 NULL_PARAMS[10] = { - 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 -}; +static s32 NULL_PARAMS[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - -void _init_lpfilter(ALLowPass *lp) -{ - s32 i, temp; - s16 fc; - f64 ffc, fcoef; +void _init_lpfilter(ALLowPass* lp) { + s32 i, temp; + s16 fc; + f64 ffc, fcoef; temp = lp->fc * SCALE; fc = temp >> 15; lp->fgain = SCALE - fc; lp->first = 1; - for (i=0; i<8; i++) - lp->fcvec.fccoef[i] = 0; - - lp->fcvec.fccoef[i++] = fc; - fcoef = ffc = (f64)fc/SCALE; + for (i = 0; i < 8; i++) + lp->fcvec.fccoef[i] = 0; - for (; i<16; i++){ - fcoef *= ffc; - lp->fcvec.fccoef[i] = (s16)(fcoef * SCALE); + lp->fcvec.fccoef[i++] = fc; + fcoef = ffc = (f64)fc / SCALE; + + for (; i < 16; i++) { + fcoef *= ffc; + lp->fcvec.fccoef[i] = (s16)(fcoef * SCALE); } } - -void alFxNew(ALFx *r, ALSynConfig *c, ALHeap *hp) -{ - u16 i, j, k; - s32 *param = 0; - ALFilter *f = (ALFilter *) r; - ALDelay *d; +void alFxNew(ALFx* r, ALSynConfig* c, ALHeap* hp) { + u16 i, j, k; + s32* param = 0; + ALFilter* f = (ALFilter*)r; + ALDelay* d; alFilterNew(f, 0, alFxParam, AL_FX); f->handler = alFxPull; r->paramHdl = (ALSetFXParam)alFxParamHdl; switch (c->fxType) { - case AL_FX_SMALLROOM: param = SMALLROOM_PARAMS; break; - case AL_FX_BIGROOM: param = BIGROOM_PARAMS; break; - case AL_FX_ECHO: param = ECHO_PARAMS; break; - case AL_FX_CHORUS: param = CHORUS_PARAMS; break; - case AL_FX_FLANGE: param = FLANGE_PARAMS; break; - case AL_FX_CUSTOM: param = c->params; break; - default: param = NULL_PARAMS; break; + case AL_FX_SMALLROOM: + param = SMALLROOM_PARAMS; + break; + case AL_FX_BIGROOM: + param = BIGROOM_PARAMS; + break; + case AL_FX_ECHO: + param = ECHO_PARAMS; + break; + case AL_FX_CHORUS: + param = CHORUS_PARAMS; + break; + case AL_FX_FLANGE: + param = FLANGE_PARAMS; + break; + case AL_FX_CUSTOM: + param = c->params; + break; + default: + param = NULL_PARAMS; + break; } - j = 0; - + r->section_count = param[j++]; - r->length = param[j++]; + r->length = param[j++]; r->delay = alHeapAlloc(hp, r->section_count, sizeof(ALDelay)); r->base = alHeapAlloc(hp, r->length, sizeof(s16)); r->input = r->base; - for ( k=0; k < r->length; k++) - r->base[k] = 0; + for (k = 0; k < r->length; k++) + r->base[k] = 0; - for ( i=0; isection_count; i++ ){ - d = &r->delay[i]; - d->input = param[j++]; - d->output = param[j++]; - d->fbcoef = param[j++]; - d->ffcoef = param[j++]; - d->gain = param[j++]; + for (i = 0; i < r->section_count; i++) { + d = &r->delay[i]; + d->input = param[j++]; + d->output = param[j++]; + d->fbcoef = param[j++]; + d->ffcoef = param[j++]; + d->gain = param[j++]; - if (param[j]) { + if (param[j]) { #define RANGE 2.0 -/* d->rsinc = ((f32) param[j++])/0xffffff; */ - d->rsinc = ((((f32)param[j++])/1000) * RANGE)/c->outputRate; + /* d->rsinc = ((f32) param[j++])/0xffffff; */ + d->rsinc = ((((f32)param[j++]) / 1000) * RANGE) / c->outputRate; - /* - * the following constant is derived from: - * - * ratio = 2^(cents/1200) - * - * and therefore for hundredths of a cent - * x - * ln(ratio) = --------------- - * (120,000)/ln(2) - * where - * 120,000/ln(2) = 173123.40... - */ + /* + * the following constant is derived from: + * + * ratio = 2^(cents/1200) + * + * and therefore for hundredths of a cent + * x + * ln(ratio) = --------------- + * (120,000)/ln(2) + * where + * 120,000/ln(2) = 173123.40... + */ #define CONVERT 173123.404906676 -#define LENGTH (d->output - d->input) - d->rsgain = (((f32) param[j++])/CONVERT) * LENGTH; - d->rsval = 1.0; - d->rsdelta = 0.0; - d->rs = alHeapAlloc(hp, 1, sizeof(ALResampler)); - d->rs->state = alHeapAlloc(hp, 1, sizeof(RESAMPLE_STATE)); - d->rs->delta = 0.0; - d->rs->first = 1; - } else { - d->rs = 0; - j++; - j++; - } +#define LENGTH (d->output - d->input) + d->rsgain = (((f32)param[j++]) / CONVERT) * LENGTH; + d->rsval = 1.0; + d->rsdelta = 0.0; + d->rs = alHeapAlloc(hp, 1, sizeof(ALResampler)); + d->rs->state = alHeapAlloc(hp, 1, sizeof(RESAMPLE_STATE)); + d->rs->delta = 0.0; + d->rs->first = 1; + } else { + d->rs = 0; + j++; + j++; + } - if (param[j]) { - d->lp = alHeapAlloc(hp, 1, sizeof(ALLowPass)); - d->lp->fstate = alHeapAlloc(hp, 1, sizeof(POLEF_STATE)); - d->lp->fc = param[j++]; - _init_lpfilter(d->lp); - } else { - d->lp = 0; - j++; - } + if (param[j]) { + d->lp = alHeapAlloc(hp, 1, sizeof(ALLowPass)); + d->lp->fstate = alHeapAlloc(hp, 1, sizeof(POLEF_STATE)); + d->lp->fc = param[j++]; + _init_lpfilter(d->lp); + } else { + d->lp = 0; + j++; + } } } -void alEnvmixerNew(ALEnvMixer *e, ALHeap *hp) -{ - alFilterNew((ALFilter *) e, alEnvmixerPull, alEnvmixerParam, AL_ENVMIX); +void alEnvmixerNew(ALEnvMixer* e, ALHeap* hp) { + alFilterNew((ALFilter*)e, alEnvmixerPull, alEnvmixerParam, AL_ENVMIX); e->state = alHeapAlloc(hp, 1, sizeof(ENVMIX_STATE)); - + e->first = 1; e->motion = AL_STOPPED; e->volume = 1; @@ -225,22 +225,20 @@ void alEnvmixerNew(ALEnvMixer *e, ALHeap *hp) e->sources = 0; } -void alLoadNew(ALLoadFilter *f, ALDMANew dmaNew, ALHeap *hp) -{ - s32 - i; - +void alLoadNew(ALLoadFilter* f, ALDMANew dmaNew, ALHeap* hp) { + s32 i; + /* * init filter superclass */ - alFilterNew((ALFilter *) f, alAdpcmPull, alLoadParam, AL_ADPCM); + alFilterNew((ALFilter*)f, alAdpcmPull, alLoadParam, AL_ADPCM); f->state = alHeapAlloc(hp, 1, sizeof(ADPCM_STATE)); f->lstate = alHeapAlloc(hp, 1, sizeof(ADPCM_STATE)); - + f->dma = dmaNew(&f->dmaState); - + /* * init the adpcm state */ @@ -249,55 +247,49 @@ void alLoadNew(ALLoadFilter *f, ALDMANew dmaNew, ALHeap *hp) f->memin = 0; } -void alResampleNew(ALResampler *r, ALHeap *hp) -{ - alFilterNew((ALFilter *) r, alResamplePull, alResampleParam, AL_RESAMPLE); +void alResampleNew(ALResampler* r, ALHeap* hp) { + alFilterNew((ALFilter*)r, alResamplePull, alResampleParam, AL_RESAMPLE); /* * Init resampler state */ r->state = alHeapAlloc(hp, 1, sizeof(RESAMPLE_STATE)); - r->delta = 0.0; - r->first = 1; + r->delta = 0.0; + r->first = 1; r->motion = AL_STOPPED; r->ratio = 1.0; r->upitch = 0; r->ctrlList = 0; r->ctrlTail = 0; - + /* state in the ucode is initialized by the A_INIT flag */ } -void alAuxBusNew(ALAuxBus *m, void *sources, s32 maxSources) -{ - alFilterNew((ALFilter *) m, alAuxBusPull, alAuxBusParam, AL_AUXBUS); +void alAuxBusNew(ALAuxBus* m, void* sources, s32 maxSources) { + alFilterNew((ALFilter*)m, alAuxBusPull, alAuxBusParam, AL_AUXBUS); m->sourceCount = 0; m->maxSources = maxSources; - m->sources = (ALFilter **)sources; + m->sources = (ALFilter**)sources; } -void alMainBusNew(ALMainBus *m, void *sources, s32 maxSources) -{ - alFilterNew((ALFilter *) m, alMainBusPull, alMainBusParam, AL_MAINBUS); +void alMainBusNew(ALMainBus* m, void* sources, s32 maxSources) { + alFilterNew((ALFilter*)m, alMainBusPull, alMainBusParam, AL_MAINBUS); m->sourceCount = 0; m->maxSources = maxSources; - m->sources = (ALFilter **)sources; + m->sources = (ALFilter**)sources; } -void alSaveNew(ALSave *f) -{ +void alSaveNew(ALSave* f) { /* * init filter superclass */ - alFilterNew((ALFilter *) f, alSavePull, alSaveParam, AL_SAVE); - + alFilterNew((ALFilter*)f, alSavePull, alSaveParam, AL_SAVE); + /* * init the save state, which is a virtual dram address */ - + f->dramout = 0; f->first = 1; - } - diff --git a/src/audio/env.c b/src/audio/env.c index fda20f4..9d513ba 100644 --- a/src/audio/env.c +++ b/src/audio/env.c @@ -32,58 +32,41 @@ extern u32 rate_num, rate_cnt, rate_max, rate_min; extern u32 vol_num, vol_cnt, vol_max, vol_min; #endif #define EQPOWER_LENGTH 128 -static s16 eqpower[ EQPOWER_LENGTH ] = { - 32767, 32764, 32757, 32744, 32727, 32704, - 32677, 32644, 32607, 32564, 32517, 32464, - 32407, 32344, 32277, 32205, 32127, 32045, - 31958, 31866, 31770, 31668, 31561, 31450, - 31334, 31213, 31087, 30957, 30822, 30682, - 30537, 30388, 30234, 30075, 29912, 29744, - 29572, 29395, 29214, 29028, 28838, 28643, - 28444, 28241, 28033, 27821, 27605, 27385, - 27160, 26931, 26698, 26461, 26220, 25975, - 25726, 25473, 25216, 24956, 24691, 24423, - 24151, 23875, 23596, 23313, 23026, 22736, - 22442, 22145, 21845, 21541, 21234, 20924, - 20610, 20294, 19974, 19651, 19325, 18997, - 18665, 18331, 17993, 17653, 17310, 16965, - 16617, 16266, 15913, 15558, 15200, 14840, - 14477, 14113, 13746, 13377, 13006, 12633, - 12258, 11881, 11503, 11122, 10740, 10357, - 9971, 9584, 9196, 8806, 8415, 8023, - 7630, 7235, 6839, 6442, 6044, 5646, - 5246, 4845, 4444, 4042, 3640, 3237, - 2833, 2429, 2025, 1620, 1216, 810, - 405, 0 +static s16 eqpower[EQPOWER_LENGTH] = { + 32767, 32764, 32757, 32744, 32727, 32704, 32677, 32644, 32607, 32564, 32517, 32464, 32407, 32344, 32277, 32205, + 32127, 32045, 31958, 31866, 31770, 31668, 31561, 31450, 31334, 31213, 31087, 30957, 30822, 30682, 30537, 30388, + 30234, 30075, 29912, 29744, 29572, 29395, 29214, 29028, 28838, 28643, 28444, 28241, 28033, 27821, 27605, 27385, + 27160, 26931, 26698, 26461, 26220, 25975, 25726, 25473, 25216, 24956, 24691, 24423, 24151, 23875, 23596, 23313, + 23026, 22736, 22442, 22145, 21845, 21541, 21234, 20924, 20610, 20294, 19974, 19651, 19325, 18997, 18665, 18331, + 17993, 17653, 17310, 16965, 16617, 16266, 15913, 15558, 15200, 14840, 14477, 14113, 13746, 13377, 13006, 12633, + 12258, 11881, 11503, 11122, 10740, 10357, 9971, 9584, 9196, 8806, 8415, 8023, 7630, 7235, 6839, 6442, + 6044, 5646, 5246, 4845, 4444, 4042, 3640, 3237, 2833, 2429, 2025, 1620, 1216, 810, 405, 0 }; -extern f64 __pow(f64, f64); +extern f64 __pow(f64, f64); /* * prototypes for private enveloper functions */ -static Acmd *_pullSubFrame(void *filter, s16 *inp, s16 *outp, s32 outCount, - s32 sampleOffset, Acmd *p) ; -static s16 _getRate(f64 vol, f64 tgt, s32 count, u16* ratel); +static Acmd* _pullSubFrame(void* filter, s16* inp, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +static s16 _getRate(f64 vol, f64 tgt, s32 count, u16* ratel); -static f32 _getVol(f32 ivol, s32 samples, s16 ratem, u16 ratel); +static f32 _getVol(f32 ivol, s32 samples, s16 ratem, u16 ratel); /*********************************************************************** * Enveloper filter public interfaces ***********************************************************************/ -Acmd *alEnvmixerPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, - Acmd *p) -{ - Acmd *ptr = p; - ALEnvMixer *e = (ALEnvMixer *)filter; - s16 inp; - s32 lastOffset; - s32 thisOffset = sampleOffset; - s32 samples; - s16 loutp = 0; - s32 fVol; - ALParam *thisParam; - +Acmd* alEnvmixerPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALEnvMixer* e = (ALEnvMixer*)filter; + s16 inp; + s32 lastOffset; + s32 thisOffset = sampleOffset; + s32 samples; + s16 loutp = 0; + s32 fVol; + ALParam* thisParam; + #ifdef AUD_PROFILE lastCnt[++cnt_index] = osGetCount(); #endif @@ -93,10 +76,10 @@ Acmd *alEnvmixerPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, */ inp = AL_RESAMPLER_OUT; - while (e->ctrlList != 0) { + while (e->ctrlList != 0) { lastOffset = thisOffset; thisOffset = e->ctrlList->delta; - samples = thisOffset - lastOffset; + samples = thisOffset - lastOffset; if (samples > outCount) break; #if BUILD_VERSION < VERSION_J @@ -105,180 +88,165 @@ Acmd *alEnvmixerPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, assert(samples >= 0); assert(samples <= AL_MAX_RSP_SAMPLES); - switch (e->ctrlList->type) { - case (AL_FILTER_START_VOICE_ALT): - { - ALStartParamAlt *param = (ALStartParamAlt *)e->ctrlList; - ALFilter *f = (ALFilter *) e; - s32 tmp; - - if (param->unity) { - (*e->filter.setParam)(&e->filter, - AL_FILTER_SET_UNITY_PITCH, 0); - } - - (*e->filter.setParam)(&e->filter, AL_FILTER_SET_WAVETABLE, - param->wave); - (*e->filter.setParam)(&e->filter, AL_FILTER_START, 0); + case (AL_FILTER_START_VOICE_ALT): { + ALStartParamAlt* param = (ALStartParamAlt*)e->ctrlList; + ALFilter* f = (ALFilter*)e; + s32 tmp; - e->first = 1; + if (param->unity) { + (*e->filter.setParam)(&e->filter, AL_FILTER_SET_UNITY_PITCH, 0); + } - e->delta = 0; - e->segEnd = param->samples; + (*e->filter.setParam)(&e->filter, AL_FILTER_SET_WAVETABLE, param->wave); + (*e->filter.setParam)(&e->filter, AL_FILTER_START, 0); - tmp = ((s32)param->volume * (s32)param->volume) >> 15; - e->volume = (s16) tmp; - e->pan = param->pan; - e->dryamt = eqpower[param->fxMix]; - e->wetamt = eqpower[EQPOWER_LENGTH - param->fxMix - 1]; - - if (param->samples) { - e->cvolL = 1; - e->cvolR = 1; - } else { - /* - * Attack time is zero. Simply set the - * volume. We don't want an attack segment. - */ - e->cvolL = (e->volume * eqpower[e->pan]) >> 15; - e->cvolR = (e->volume * - eqpower[EQPOWER_LENGTH - e->pan - 1]) >> 15; - } + e->first = 1; - if (f->source) { - union { - f32 f; - s32 i; - } data; - data.f = param->pitch; - (*f->source->setParam)(f->source, AL_FILTER_SET_PITCH, - (void *)data.i); - } - - } - - break; - - case (AL_FILTER_SET_FXAMT): - case (AL_FILTER_SET_PAN): - case (AL_FILTER_SET_VOLUME): - ptr = _pullSubFrame(e, &inp, &loutp, samples, sampleOffset, ptr); - - if (e->delta >= e->segEnd){ - /* - * We should have reached our target, calculate - * target in case e->segEnd was 0 - */ - e->ltgt = (e->volume * eqpower[e->pan]) >> 15; - e->rtgt = (e->volume * - eqpower[EQPOWER_LENGTH - e->pan - 1]) >> 15; - e->delta = e->segEnd; /* To prevent overflow */ - e->cvolL = e->ltgt; - e->cvolR = e->rtgt; - } else { - /* - * Estimate the current volume - */ - e->cvolL = _getVol(e->cvolL, e->delta, e->lratm, e->lratl); - e->cvolR = _getVol(e->cvolR, e->delta, e->rratm, e->rratl); - } - - /* - * We can't have volume of zero, because the envelope - * would never go anywhere from there - */ - if( e->cvolL == 0 ) e->cvolL = 1; - if( e->cvolR == 0 ) e->cvolR = 1; + e->delta = 0; + e->segEnd = param->samples; - if (e->ctrlList->type == AL_FILTER_SET_PAN) + tmp = ((s32)param->volume * (s32)param->volume) >> 15; + e->volume = (s16)tmp; + e->pan = param->pan; + e->dryamt = eqpower[param->fxMix]; + e->wetamt = eqpower[EQPOWER_LENGTH - param->fxMix - 1]; - /* - * This should result in a change to the current - * segment rate and target - */ - e->pan = (s16) e->ctrlList->data.i; + if (param->samples) { + e->cvolL = 1; + e->cvolR = 1; + } else { + /* + * Attack time is zero. Simply set the + * volume. We don't want an attack segment. + */ + e->cvolL = (e->volume * eqpower[e->pan]) >> 15; + e->cvolR = (e->volume * eqpower[EQPOWER_LENGTH - e->pan - 1]) >> 15; + } - if (e->ctrlList->type == AL_FILTER_SET_VOLUME){ + if (f->source) { + union { + f32 f; + s32 i; + } data; + data.f = param->pitch; + (*f->source->setParam)(f->source, AL_FILTER_SET_PITCH, (void*)data.i); + } - /* - * Switching to a new segment - */ - e->delta = 0; - - /* - * Map volume non-linearly to give something close to - * loudness - */ - fVol = (e->ctrlList->data.i); - fVol = (fVol*fVol)>>15; - e->volume = (s16) fVol; - - e->segEnd = e->ctrlList->moredata.i; + } - } - - if (e->ctrlList->type == AL_FILTER_SET_FXAMT){ - e->dryamt = eqpower[e->ctrlList->data.i]; - e->wetamt = eqpower[EQPOWER_LENGTH - e->ctrlList->data.i - 1]; - } - - /* - * Force a volume update - */ - e->first = 1; - break; + break; - case (AL_FILTER_START_VOICE): - { - ALStartParam *p = (ALStartParam *)e->ctrlList; - - /* - * Changing to PLAYING (since the previous state was - * persumable STOPPED, we'll just bump the output - * pointer rather than pull a subframe of zeros). - */ - if (p->unity) { - (*e->filter.setParam)(&e->filter, - AL_FILTER_SET_UNITY_PITCH, 0); - } - - (*e->filter.setParam)(&e->filter, AL_FILTER_SET_WAVETABLE, - p->wave); - (*e->filter.setParam)(&e->filter, AL_FILTER_START, 0); - } - break; - - case (AL_FILTER_STOP_VOICE): - { - /* - * Changing to STOPPED and reset the filter - */ - ptr = _pullSubFrame(e, &inp, &loutp, samples, sampleOffset, ptr); - (*e->filter.setParam)(&e->filter, AL_FILTER_RESET, 0); - } - break; + case (AL_FILTER_SET_FXAMT): + case (AL_FILTER_SET_PAN): + case (AL_FILTER_SET_VOLUME): + ptr = _pullSubFrame(e, &inp, &loutp, samples, sampleOffset, ptr); - case (AL_FILTER_FREE_VOICE): - { - ALSynth *drvr = &alGlobals->drvr; - ALFreeParam *param = (ALFreeParam *)e->ctrlList; - param->pvoice->offset = 0; - _freePVoice(drvr, (PVoice *)param->pvoice); - } - break; - - default: - /* - * Pull the reuired number of samples and then pass the message - * on down the chain - */ - ptr = _pullSubFrame(e, &inp, &loutp, samples, sampleOffset, ptr); - (*e->filter.setParam)(&e->filter, e->ctrlList->type, - (void *) e->ctrlList->data.i); - break; + if (e->delta >= e->segEnd) { + /* + * We should have reached our target, calculate + * target in case e->segEnd was 0 + */ + e->ltgt = (e->volume * eqpower[e->pan]) >> 15; + e->rtgt = (e->volume * eqpower[EQPOWER_LENGTH - e->pan - 1]) >> 15; + e->delta = e->segEnd; /* To prevent overflow */ + e->cvolL = e->ltgt; + e->cvolR = e->rtgt; + } else { + /* + * Estimate the current volume + */ + e->cvolL = _getVol(e->cvolL, e->delta, e->lratm, e->lratl); + e->cvolR = _getVol(e->cvolR, e->delta, e->rratm, e->rratl); + } + + /* + * We can't have volume of zero, because the envelope + * would never go anywhere from there + */ + if (e->cvolL == 0) + e->cvolL = 1; + if (e->cvolR == 0) + e->cvolR = 1; + + if (e->ctrlList->type == AL_FILTER_SET_PAN) + + /* + * This should result in a change to the current + * segment rate and target + */ + e->pan = (s16)e->ctrlList->data.i; + + if (e->ctrlList->type == AL_FILTER_SET_VOLUME) { + + /* + * Switching to a new segment + */ + e->delta = 0; + + /* + * Map volume non-linearly to give something close to + * loudness + */ + fVol = (e->ctrlList->data.i); + fVol = (fVol * fVol) >> 15; + e->volume = (s16)fVol; + + e->segEnd = e->ctrlList->moredata.i; + } + + if (e->ctrlList->type == AL_FILTER_SET_FXAMT) { + e->dryamt = eqpower[e->ctrlList->data.i]; + e->wetamt = eqpower[EQPOWER_LENGTH - e->ctrlList->data.i - 1]; + } + + /* + * Force a volume update + */ + e->first = 1; + break; + + case (AL_FILTER_START_VOICE): { + ALStartParam* p = (ALStartParam*)e->ctrlList; + + /* + * Changing to PLAYING (since the previous state was + * persumable STOPPED, we'll just bump the output + * pointer rather than pull a subframe of zeros). + */ + if (p->unity) { + (*e->filter.setParam)(&e->filter, AL_FILTER_SET_UNITY_PITCH, 0); + } + + (*e->filter.setParam)(&e->filter, AL_FILTER_SET_WAVETABLE, p->wave); + (*e->filter.setParam)(&e->filter, AL_FILTER_START, 0); + } break; + + case (AL_FILTER_STOP_VOICE): { + /* + * Changing to STOPPED and reset the filter + */ + ptr = _pullSubFrame(e, &inp, &loutp, samples, sampleOffset, ptr); + (*e->filter.setParam)(&e->filter, AL_FILTER_RESET, 0); + } break; + + case (AL_FILTER_FREE_VOICE): { + ALSynth* drvr = &alGlobals->drvr; + ALFreeParam* param = (ALFreeParam*)e->ctrlList; + param->pvoice->offset = 0; + _freePVoice(drvr, (PVoice*)param->pvoice); + } break; + + default: + /* + * Pull the reuired number of samples and then pass the message + * on down the chain + */ + ptr = _pullSubFrame(e, &inp, &loutp, samples, sampleOffset, ptr); + (*e->filter.setParam)(&e->filter, e->ctrlList->type, (void*)e->ctrlList->data.i); + break; } - loutp += (samples<<1); + loutp += (samples << 1); outCount -= samples; /* @@ -288,11 +256,10 @@ Acmd *alEnvmixerPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, e->ctrlList = e->ctrlList->next; if (e->ctrlList == 0) e->ctrlTail = 0; - + __freeParam(thisParam); - } - + ptr = _pullSubFrame(e, &inp, &loutp, outCount, sampleOffset, ptr); /* @@ -307,56 +274,53 @@ Acmd *alEnvmixerPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, return ptr; } -s32 alEnvmixerParam(void *filter, s32 paramID, void *param) -{ - ALFilter *f = (ALFilter *) filter; - ALEnvMixer *e = (ALEnvMixer *) filter; - +s32 alEnvmixerParam(void* filter, s32 paramID, void* param) { + ALFilter* f = (ALFilter*)filter; + ALEnvMixer* e = (ALEnvMixer*)filter; + switch (paramID) { - case (AL_FILTER_ADD_UPDATE): - if (e->ctrlTail) { - e->ctrlTail->next = (ALParam *)param; - } else { - e->ctrlList = (ALParam *)param; - } - e->ctrlTail = (ALParam *)param; - - break; - - case (AL_FILTER_RESET): - e->first = 1; - e->motion = AL_STOPPED; - e->volume = 1; - if (f->source) - (*f->source->setParam)(f->source, AL_FILTER_RESET, param); - break; + case (AL_FILTER_ADD_UPDATE): + if (e->ctrlTail) { + e->ctrlTail->next = (ALParam*)param; + } else { + e->ctrlList = (ALParam*)param; + } + e->ctrlTail = (ALParam*)param; - case (AL_FILTER_START): - e->motion = AL_PLAYING; - if (f->source) - (*f->source->setParam)(f->source, AL_FILTER_START, param); - break; - - case (AL_FILTER_SET_SOURCE): - f->source = (ALFilter *) param; - break; + break; - default: - if (f->source) - (*f->source->setParam)(f->source, paramID, param); + case (AL_FILTER_RESET): + e->first = 1; + e->motion = AL_STOPPED; + e->volume = 1; + if (f->source) + (*f->source->setParam)(f->source, AL_FILTER_RESET, param); + break; + + case (AL_FILTER_START): + e->motion = AL_PLAYING; + if (f->source) + (*f->source->setParam)(f->source, AL_FILTER_START, param); + break; + + case (AL_FILTER_SET_SOURCE): + f->source = (ALFilter*)param; + break; + + default: + if (f->source) + (*f->source->setParam)(f->source, paramID, param); } return 0; } #if BUILD_VERSION < VERSION_J #line 350 #endif -static Acmd* _pullSubFrame(void *filter, s16 *inp, s16 *outp, s32 outCount, - s32 sampleOffset, Acmd *p) -{ - Acmd *ptr = p; - ALEnvMixer *e = (ALEnvMixer *)filter; - ALFilter *source= e->filter.source; +static Acmd* _pullSubFrame(void* filter, s16* inp, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALEnvMixer* e = (ALEnvMixer*)filter; + ALFilter* source = e->filter.source; /* filter must be playing and request non-zero output samples to pull. */ if (e->motion != AL_PLAYING || !outCount) @@ -369,45 +333,39 @@ static Acmd* _pullSubFrame(void *filter, s16 *inp, s16 *outp, s32 outCount, assert(source); - ptr = (*source->handler)(source, inp, outCount, sampleOffset, p); /* * construct our portion of the command list */ - aSetBuffer(ptr++, A_MAIN, *inp, AL_MAIN_L_OUT + *outp, outCount<<1); - aSetBuffer(ptr++, A_AUX, AL_MAIN_R_OUT + *outp, AL_AUX_L_OUT + *outp, - AL_AUX_R_OUT + *outp); + aSetBuffer(ptr++, A_MAIN, *inp, AL_MAIN_L_OUT + *outp, outCount << 1); + aSetBuffer(ptr++, A_AUX, AL_MAIN_R_OUT + *outp, AL_AUX_L_OUT + *outp, AL_AUX_R_OUT + *outp); - if (e->first){ - e->first = 0; + if (e->first) { + e->first = 0; /* * Calculate derived parameters */ e->ltgt = (e->volume * eqpower[e->pan]) >> 15; - e->lratm = _getRate((f64)e->cvolL, (f64)e->ltgt, - e->segEnd, &(e->lratl)); - e->rtgt = (e->volume * - eqpower[EQPOWER_LENGTH - e->pan - 1]) >> 15; - e->rratm = _getRate((f64)e->cvolR, (f64)e->rtgt, e->segEnd, - &(e->rratl)); + e->lratm = _getRate((f64)e->cvolL, (f64)e->ltgt, e->segEnd, &(e->lratl)); + e->rtgt = (e->volume * eqpower[EQPOWER_LENGTH - e->pan - 1]) >> 15; + e->rratm = _getRate((f64)e->cvolR, (f64)e->rtgt, e->segEnd, &(e->rratl)); aSetVolume(ptr++, A_LEFT | A_VOL, e->cvolL, 0, 0); aSetVolume(ptr++, A_RIGHT | A_VOL, e->cvolR, 0, 0); - aSetVolume(ptr++, A_LEFT | A_RATE, e->ltgt, e->lratm, e->lratl); - aSetVolume(ptr++, A_RIGHT | A_RATE, e->rtgt, e->rratm, e->rratl); - aSetVolume(ptr++, A_AUX, e->dryamt, 0, e->wetamt); - aEnvMixer (ptr++, A_INIT | A_AUX, osVirtualToPhysical(e->state)); - } - else - aEnvMixer(ptr++, A_CONTINUE | A_AUX, osVirtualToPhysical(e->state)); + aSetVolume(ptr++, A_LEFT | A_RATE, e->ltgt, e->lratm, e->lratl); + aSetVolume(ptr++, A_RIGHT | A_RATE, e->rtgt, e->rratm, e->rratl); + aSetVolume(ptr++, A_AUX, e->dryamt, 0, e->wetamt); + aEnvMixer(ptr++, A_INIT | A_AUX, osVirtualToPhysical(e->state)); + } else + aEnvMixer(ptr++, A_CONTINUE | A_AUX, osVirtualToPhysical(e->state)); /* * bump the input buffer pointer */ - *inp += (outCount<<1); + *inp += (outCount << 1); e->delta += outCount; return ptr; @@ -416,64 +374,57 @@ static Acmd* _pullSubFrame(void *filter, s16 *inp, s16 *outp, s32 outCount, #define EXP_MASK 0x7f800000 #define MANT_MASK 0x807fffff -f64 -_frexpf(f64 value, s32 *eptr) -{ +f64 _frexpf(f64 value, s32* eptr) { f64 absvalue; *eptr = 0; if (value == 0.0) /* nothing to do for zero */ return (value); absvalue = (value > 0.0) ? value : -value; - for ( ; absvalue >= 1.0; absvalue *= 0.5) + for (; absvalue >= 1.0; absvalue *= 0.5) ++*eptr; - for ( ; absvalue < 0.5; absvalue += absvalue) + for (; absvalue < 0.5; absvalue += absvalue) --*eptr; return (value > 0.0 ? absvalue : -absvalue); } -f64 -_ldexpf(f64 in, s32 ex) -{ +f64 _ldexpf(f64 in, s32 ex) { s32 exp; - - if ( ex ) { - exp = 1 << ex; - in *= (f64)exp; + + if (ex) { + exp = 1 << ex; + in *= (f64)exp; } - return ( in ); + return (in); } /* _getRate() -- This function determines how to go from the - current volume level (vol) to the target - volume level (tgt) in some number of steps - (count). Two values are returned that are - used as multipliers to incrementally scale - the volume. Some tricky math is used and - is explained below. - RWW 28jun95 + current volume level (vol) to the target + volume level (tgt) in some number of steps + (count). Two values are returned that are + used as multipliers to incrementally scale + the volume. Some tricky math is used and + is explained below. + RWW 28jun95 */ -static -s16 _getRate(f64 vol, f64 tgt, s32 count, u16* ratel) -{ - s16 s; - - f64 invn = 1.0/count, eps, a, fs, mant; - s32 i_invn, ex, indx; +static s16 _getRate(f64 vol, f64 tgt, s32 count, u16* ratel) { + s16 s; + + f64 invn = 1.0 / count, eps, a, fs, mant; + s32 i_invn, ex, indx; #ifdef AUD_PROFILE lastCnt[++cnt_index] = osGetCount(); #endif - - if (count == 0){ - if (tgt >= vol){ + + if (count == 0) { + if (tgt >= vol) { *ratel = 0xffff; return 0x7fff; - } - else{ + } else { *ratel = 0; return 0; } @@ -481,12 +432,13 @@ s16 _getRate(f64 vol, f64 tgt, s32 count, u16* ratel) if (tgt < 1.0) tgt = 1.0; - if (vol <= 0) vol = 1; /* zero and neg values not allowed */ + if (vol <= 0) + vol = 1; /* zero and neg values not allowed */ -#define NBITS (3) -#define NPOS (1<>= 1; - } + i_invn = (s32)_ldexpf(invn, NFRACBITS); + mant = _frexpf(tgt / vol, &ex); + indx = (s32)(_ldexpf(mant, NBITS + 1)); /* NPOS <= indx < 2*NPOS */ + eps = (logtab[indx - NPOS] + ex) * M_LN2; + eps /= _ldexpf(1, NFRACBITS); /* eps / 2^NFRACBITS */ + fs = (1.0 + eps); + a = 1.0; + while (i_invn) { + if (i_invn & 1) + a = a * fs; + fs *= fs; + i_invn >>= 1; + } } a *= (a *= (a *= a)); - s = (s16) a; - *ratel = (s16)(0xffff * (a - (f32) s)); + s = (s16)a; + *ratel = (s16)(0xffff * (a - (f32)s)); #ifdef AUD_PROFILE PROFILE_AUD(rate_num, rate_cnt, rate_max, rate_min); #endif return (s16)a; - } -static -f32 _getVol(f32 ivol, s32 samples, s16 ratem, u16 ratel) -{ - f32 r, a; - s32 i; +static f32 _getVol(f32 ivol, s32 samples, s16 ratem, u16 ratel) { + f32 r, a; + s32 i; #ifdef AUD_PROFILE lastCnt[++cnt_index] = osGetCount(); #endif - + /* * Rate values are actually rate^8 */ - samples >>=3; - if (samples == 0){ + samples >>= 3; + if (samples == 0) { return ivol; } - r = ((f32) (ratem<<16) + (f32) ratel)/65536; - + r = ((f32)(ratem << 16) + (f32)ratel) / 65536; + a = 1.0; - for (i=0; i<32; i++){ - if( samples & 1 ) - a *= r; + for (i = 0; i < 32; i++) { + if (samples & 1) + a *= r; samples >>= 1; if (samples == 0) break; - r *= r; + r *= r; } ivol *= a; #ifdef AUD_PROFILE @@ -582,10 +530,3 @@ f32 _getVol(f32 ivol, s32 samples, s16 ratem, u16 ratel) #endif return ivol; } - - - - - - - diff --git a/src/audio/event.c b/src/audio/event.c index 3112c99..ed8b045 100644 --- a/src/audio/event.c +++ b/src/audio/event.c @@ -22,177 +22,161 @@ #include #include - -void alEvtqNew(ALEventQueue *evtq, ALEventListItem *items, s32 itemCount) -{ +void alEvtqNew(ALEventQueue* evtq, ALEventListItem* items, s32 itemCount) { s32 i; - - evtq->eventCount = 0; + + evtq->eventCount = 0; evtq->allocList.next = 0; evtq->allocList.prev = 0; - evtq->freeList.next = 0; - evtq->freeList.prev = 0; + evtq->freeList.next = 0; + evtq->freeList.prev = 0; for (i = 0; i < itemCount; i++) { - alLink((ALLink *)&items[i], &evtq->freeList); + alLink((ALLink*)&items[i], &evtq->freeList); } } -ALMicroTime alEvtqNextEvent(ALEventQueue *evtq, ALEvent *evt) -{ - ALEventListItem *item; +ALMicroTime alEvtqNextEvent(ALEventQueue* evtq, ALEvent* evt) { + ALEventListItem* item; ALMicroTime delta; OSIntMask mask; mask = osSetIntMask(OS_IM_NONE); - - item = (ALEventListItem *)evtq->allocList.next; - if (item) - { - alUnlink((ALLink *)item); + item = (ALEventListItem*)evtq->allocList.next; + + if (item) { + alUnlink((ALLink*)item); alCopy(&item->evt, evt, sizeof(*evt)); - alLink((ALLink *)item, &evtq->freeList); - delta = item->delta; - } - else - { + alLink((ALLink*)item, &evtq->freeList); + delta = item->delta; + } else { /* sct 11/28/95 - If we get here, most like we overflowed the event queue */ - /* with non-self-perpetuating events. Eg. if we filled the evtq with volume */ - /* events, then when the seqp is told to play it will handle all the events */ - /* at once completely emptying out the queue. At this point this problem */ - /* must be treated as an out of resource error and the evtq should be increased. */ - evt->type = -1; - delta = 0; + /* with non-self-perpetuating events. Eg. if we filled the evtq with volume */ + /* events, then when the seqp is told to play it will handle all the events */ + /* at once completely emptying out the queue. At this point this problem */ + /* must be treated as an out of resource error and the evtq should be increased. */ + evt->type = -1; + delta = 0; } osSetIntMask(mask); - + return delta; } -void alEvtqPostEvent(ALEventQueue *evtq, ALEvent *evt, ALMicroTime delta) -{ - ALEventListItem *item; - ALEventListItem *nextItem; - ALLink *node; - s32 postAtEnd=0; - OSIntMask mask; +void alEvtqPostEvent(ALEventQueue* evtq, ALEvent* evt, ALMicroTime delta) { + ALEventListItem* item; + ALEventListItem* nextItem; + ALLink* node; + s32 postAtEnd = 0; + OSIntMask mask; mask = osSetIntMask(OS_IM_NONE); - item = (ALEventListItem *)evtq->freeList.next; + item = (ALEventListItem*)evtq->freeList.next; if (!item) { osSetIntMask(mask); #ifdef _DEBUG __osError(ERR_ALEVENTNOFREE, 0); -#endif +#endif return; } - - alUnlink((ALLink *)item); + + alUnlink((ALLink*)item); alCopy(evt, &item->evt, sizeof(*evt)); if (delta == AL_EVTQ_END) postAtEnd = -1; - + for (node = &evtq->allocList; node != 0; node = node->next) { if (!node->next) { /* end of the list */ if (postAtEnd) item->delta = 0; else item->delta = delta; - alLink((ALLink *)item, node); + alLink((ALLink*)item, node); break; } else { - nextItem = (ALEventListItem *)node->next; + nextItem = (ALEventListItem*)node->next; if (delta < nextItem->delta) { item->delta = delta; nextItem->delta -= delta; - - alLink((ALLink *)item, node); + + alLink((ALLink*)item, node); break; } - - delta -= nextItem->delta; + delta -= nextItem->delta; } } osSetIntMask(mask); - } -void alEvtqFlush(ALEventQueue *evtq) -{ - ALLink *thisNode; - ALLink *nextNode; - OSIntMask mask; +void alEvtqFlush(ALEventQueue* evtq) { + ALLink* thisNode; + ALLink* nextNode; + OSIntMask mask; mask = osSetIntMask(OS_IM_NONE); thisNode = evtq->allocList.next; - while( thisNode != 0 ) { - nextNode = thisNode->next; - alUnlink(thisNode); - alLink(thisNode, &evtq->freeList); - thisNode = nextNode; + while (thisNode != 0) { + nextNode = thisNode->next; + alUnlink(thisNode); + alLink(thisNode, &evtq->freeList); + thisNode = nextNode; } - + osSetIntMask(mask); } - /* This routine flushes events according their type. */ -void alEvtqFlushType(ALEventQueue *evtq, s16 type) -{ - ALLink *thisNode; - ALLink *nextNode; - ALEventListItem *thisItem, *nextItem; - OSIntMask mask; +void alEvtqFlushType(ALEventQueue* evtq, s16 type) { + ALLink* thisNode; + ALLink* nextNode; + ALEventListItem *thisItem, *nextItem; + OSIntMask mask; mask = osSetIntMask(OS_IM_NONE); thisNode = evtq->allocList.next; - while( thisNode != 0 ) - { - nextNode = thisNode->next; - thisItem = (ALEventListItem *)thisNode; - nextItem = (ALEventListItem *)nextNode; - if (thisItem->evt.type == type) - { - if (nextItem) - nextItem->delta += thisItem->delta; - alUnlink(thisNode); - alLink(thisNode, &evtq->freeList); - } - thisNode = nextNode; + while (thisNode != 0) { + nextNode = thisNode->next; + thisItem = (ALEventListItem*)thisNode; + nextItem = (ALEventListItem*)nextNode; + if (thisItem->evt.type == type) { + if (nextItem) + nextItem->delta += thisItem->delta; + alUnlink(thisNode); + alLink(thisNode, &evtq->freeList); + } + thisNode = nextNode; } osSetIntMask(mask); } - #ifdef _DEBUG_INTERNAL -void alEvtqPrintEvtQueue(ALEventQueue *evtq) -{ +void alEvtqPrintEvtQueue(ALEventQueue* evtq) { s32 count1 = 0; s32 count2 = 0; - ALLink *node; - ALEventListItem *item; - + ALLink* node; + ALEventListItem* item; + /* count free events */ - for (node = evtq->freeList.next; node != 0; node= node->next) { + for (node = evtq->freeList.next; node != 0; node = node->next) { count1++; } PRINTF("----- Allocated Events -----\n"); - for (node = evtq->allocList.next; node != 0; node= node->next) { - item = (ALEventListItem *)node; - + for (node = evtq->allocList.next; node != 0; node = node->next) { + item = (ALEventListItem*)node; + PRINTF("\tdelta: %d\ttype %d\n", item->delta, item->evt.type); count2++; } @@ -203,70 +187,58 @@ void alEvtqPrintEvtQueue(ALEventQueue *evtq) PRINTF("total events\t %d\n", count1 + count2); } -char *MidiStatus2Str (char status, char *str); +char* MidiStatus2Str(char status, char* str); -void -alEvtqPrintAllocEvts(ALEventQueue *evtq) -{ - ALLink *node; - ALEventListItem *item; +void alEvtqPrintAllocEvts(ALEventQueue* evtq) { + ALLink* node; + ALEventListItem* item; ALMicroTime itemTime = 0; char str[32]; PRINTF("----- Allocated Events -----\n"); - for (node = evtq->allocList.next; node != 0; node= node->next) - { - item = (ALEventListItem *)node; + for (node = evtq->allocList.next; node != 0; node = node->next) { + item = (ALEventListItem*)node; itemTime += item->delta; PRINTF("\tdelta: %d\tabs: %d\t", item->delta, itemTime); - switch (item->evt.type) - { - case AL_NOTE_END_EVT: - PRINTF("NOTE_END\tvox: %x\n", item->evt.msg.note.voice); - break; + switch (item->evt.type) { + case AL_NOTE_END_EVT: + PRINTF("NOTE_END\tvox: %x\n", item->evt.msg.note.voice); + break; - case AL_SEQP_MIDI_EVT: - PRINTF("SEQP_MIDI\t%s\n", MidiStatus2Str(item->evt.msg.midi.status & AL_MIDI_StatusMask, str)); - break; + case AL_SEQP_MIDI_EVT: + PRINTF("SEQP_MIDI\t%s\n", MidiStatus2Str(item->evt.msg.midi.status & AL_MIDI_StatusMask, str)); + break; - case AL_SEQP_PRIORITY_EVT: - PRINTF("SEQP_PRIORITY\n"); - break; - - default: - PRINTF("type: %d\n", item->evt.type); - break; - } + case AL_SEQP_PRIORITY_EVT: + PRINTF("SEQP_PRIORITY\n"); + break; + default: + PRINTF("type: %d\n", item->evt.type); + break; + } } PRINTF("\n"); - } -char * -MidiStatus2Str (char status, char *str) -{ - switch (status) - { +char* MidiStatus2Str(char status, char* str) { + switch (status) { case AL_MIDI_NoteOn: - sprintf(str, "note on"); - break; + sprintf(str, "note on"); + break; case AL_MIDI_NoteOff: - sprintf(str, "note off"); - break; + sprintf(str, "note off"); + break; default: - sprintf(str, "status:%d", status); - break; + sprintf(str, "status:%d", status); + break; } return str; } #endif /* _DEBUG_INTERNAL */ - - - diff --git a/src/audio/filter.c b/src/audio/filter.c index d88460b..1dd41d8 100644 --- a/src/audio/filter.c +++ b/src/audio/filter.c @@ -21,12 +21,11 @@ #include #include "synthInternals.h" -void alFilterNew(ALFilter *f, ALCmdHandler h, ALSetParam s, s32 type) -{ - f->source = 0; - f->handler = h; - f->setParam = s; - f->inp = 0; - f->outp = 0; - f->type = type; +void alFilterNew(ALFilter* f, ALCmdHandler h, ALSetParam s, s32 type) { + f->source = 0; + f->handler = h; + f->setParam = s; + f->inp = 0; + f->outp = 0; + f->type = type; } diff --git a/src/audio/heapalloc.c b/src/audio/heapalloc.c index 8a37808..096d4cd 100644 --- a/src/audio/heapalloc.c +++ b/src/audio/heapalloc.c @@ -23,42 +23,41 @@ #include #include -void *alHeapDBAlloc(u8 *file, s32 line, ALHeap *hp, s32 num, s32 size) -{ +void* alHeapDBAlloc(u8* file, s32 line, ALHeap* hp, s32 num, s32 size) { s32 bytes; - u8 *ptr = 0; + u8* ptr = 0; + + bytes = (num * size + AL_CACHE_ALIGN) & ~AL_CACHE_ALIGN; - bytes = (num*size + AL_CACHE_ALIGN) & ~AL_CACHE_ALIGN; - #ifdef _DEBUG - hp->count++; + hp->count++; bytes += sizeof(HeapInfo); #endif - + if ((hp->cur + bytes) <= (hp->base + hp->len)) { ptr = hp->cur; hp->cur += bytes; -#ifdef _DEBUG - ((HeapInfo *)ptr)->magic = AL_HEAP_MAGIC; - ((HeapInfo *)ptr)->size = bytes; - ((HeapInfo *)ptr)->count = hp->count; +#ifdef _DEBUG + ((HeapInfo*)ptr)->magic = AL_HEAP_MAGIC; + ((HeapInfo*)ptr)->size = bytes; + ((HeapInfo*)ptr)->count = hp->count; if (file) { - ((HeapInfo *)ptr)->file = file; - ((HeapInfo *)ptr)->line = line; + ((HeapInfo*)ptr)->file = file; + ((HeapInfo*)ptr)->line = line; } else { - ((HeapInfo *)ptr)->file = (u8 *) "unknown"; - ((HeapInfo *)ptr)->line = 0; + ((HeapInfo*)ptr)->file = (u8*)"unknown"; + ((HeapInfo*)ptr)->line = 0; } - - ptr += sizeof(HeapInfo); + + ptr += sizeof(HeapInfo); #endif } else { #ifdef _DEBUG __osError(ERR_ALHEAPNOFREE, 1, size); -#endif +#endif } return ptr; diff --git a/src/audio/heapcheck.c b/src/audio/heapcheck.c index baae643..267ceae 100644 --- a/src/audio/heapcheck.c +++ b/src/audio/heapcheck.c @@ -28,38 +28,36 @@ extern u32 cnt_index, heap_num, heap_cnt, heap_max, heap_min, lastCnt[]; #endif -s32 alHeapCheck(ALHeap *hp) -{ - s32 rv = 0; - HeapInfo *hi; - HeapInfo *last = 0; - u8 *ptr; - +s32 alHeapCheck(ALHeap* hp) { + s32 rv = 0; + HeapInfo* hi; + HeapInfo* last = 0; + u8* ptr; + #ifdef AUD_PROFILE lastCnt[++cnt_index] = osGetCount(); #endif - -#ifdef _DEBUG - for (ptr = hp->base; ptr < hp->cur; ptr += hi->size){ - hi = (HeapInfo *)ptr; +#ifdef _DEBUG + for (ptr = hp->base; ptr < hp->cur; ptr += hi->size) { - if ( hi->magic != AL_HEAP_MAGIC) { + hi = (HeapInfo*)ptr; + + if (hi->magic != AL_HEAP_MAGIC) { if (last) { __osError(ERR_ALHEAPCORRUPT, 0); } else { __osError(ERR_ALHEAPFIRSTBLOCK, 0); } - + rv = 1; #ifdef AUD_PROFILE - PROFILE_AUD(heap_num, heap_cnt, heap_max, heap_min); + PROFILE_AUD(heap_num, heap_cnt, heap_max, heap_min); #endif return rv; } last = hi; - } #endif #ifdef AUD_PROFILE @@ -67,5 +65,3 @@ s32 alHeapCheck(ALHeap *hp) #endif return rv; } - - diff --git a/src/audio/heapinit.c b/src/audio/heapinit.c index 9053375..03c5e62 100644 --- a/src/audio/heapinit.c +++ b/src/audio/heapinit.c @@ -21,17 +21,15 @@ #include "synthInternals.h" #include -void alHeapInit(ALHeap *hp, u8 *base, s32 len) -{ - s32 extraAlign = (AL_CACHE_ALIGN+1) - ((s32) base & AL_CACHE_ALIGN); - - if (extraAlign != AL_CACHE_ALIGN+1) +void alHeapInit(ALHeap* hp, u8* base, s32 len) { + s32 extraAlign = (AL_CACHE_ALIGN + 1) - ((s32)base & AL_CACHE_ALIGN); + + if (extraAlign != AL_CACHE_ALIGN + 1) hp->base = base + extraAlign; else hp->base = base; - hp->len = len; - hp->cur = hp->base; + hp->len = len; + hp->cur = hp->base; hp->count = 0; } - diff --git a/src/audio/initfx.h b/src/audio/initfx.h index 704e1f4..14221f7 100644 --- a/src/audio/initfx.h +++ b/src/audio/initfx.h @@ -21,39 +21,39 @@ #ifndef __initfx__ #define __initfx__ -#define MAX_L0 AL_FX_BUFFER_SIZE/4 -#define MAX_L1 AL_FX_BUFFER_SIZE/4 -#define MAX_L2 AL_FX_BUFFER_SIZE/2 +#define MAX_L0 AL_FX_BUFFER_SIZE / 4 +#define MAX_L1 AL_FX_BUFFER_SIZE / 4 +#define MAX_L2 AL_FX_BUFFER_SIZE / 2 -#define L0_INC MAX_L0/128 -#define L1_INC MAX_L1/128 -#define L2_INC MAX_L2/128 +#define L0_INC MAX_L0 / 128 +#define L1_INC MAX_L1 / 128 +#define L2_INC MAX_L2 / 128 #define SMALLROOM_SECT_CNT 3 -#define SMALLROOM_SIZE AL_FX_BUFFER_SIZE -#define SMALLROOM_L0 880 /* 22 ms */ -#define SMALLROOM_C0 9830 -#define SMALLROOM_L1 1400 /* 35 ms */ -#define SMALLROOM_C1 3276 -#define SMALLROOM_L2 2640 /* 66 ms */ -#define SMALLROOM_C2 10000 +#define SMALLROOM_SIZE AL_FX_BUFFER_SIZE +#define SMALLROOM_L0 880 /* 22 ms */ +#define SMALLROOM_C0 9830 +#define SMALLROOM_L1 1400 /* 35 ms */ +#define SMALLROOM_C1 3276 +#define SMALLROOM_L2 2640 /* 66 ms */ +#define SMALLROOM_C2 10000 #define SMALLROOM_FILT_CNT 1 -#define SMALLROOM_FC0 0x4000 /* .25 */ +#define SMALLROOM_FC0 0x4000 /* .25 */ #define BIGROOM_SECT_CNT 3 -#define BIGROOM_SIZE AL_FX_BUFFER_SIZE -#define BIGROOM_L0 1408 /* 32 ms */ -#define BIGROOM_C0 9830 -#define BIGROOM_L1 1984 /* 45 ms */ -#define BIGROOM_C1 9830 -#define BIGROOM_L2 3792 /* 86 ms */ -#define BIGROOM_C2 12000 +#define BIGROOM_SIZE AL_FX_BUFFER_SIZE +#define BIGROOM_L0 1408 /* 32 ms */ +#define BIGROOM_C0 9830 +#define BIGROOM_L1 1984 /* 45 ms */ +#define BIGROOM_C1 9830 +#define BIGROOM_L2 3792 /* 86 ms */ +#define BIGROOM_C2 12000 #define BIGROOM_FILT_CNT 1 -#define BIGROOM_FC0 0x4000 /* .25 */ +#define BIGROOM_FC0 0x4000 /* .25 */ -#define ECHO_SIZE AL_FX_BUFFER_SIZE +#define ECHO_SIZE AL_FX_BUFFER_SIZE #define ECHO_SECT_CNT 1 -#define ECHO_L0 7936 /* 180 ms */ -#define ECHO_C0 0x6000 +#define ECHO_L0 7936 /* 180 ms */ +#define ECHO_C0 0x6000 #endif diff --git a/src/audio/load.c b/src/audio/load.c index af07075..9ae078e 100644 --- a/src/audio/load.c +++ b/src/audio/load.c @@ -24,37 +24,35 @@ #include #ifndef MIN -# define MIN(a,b) (((a)<(b))?(a):(b)) +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif #ifdef AUD_PROFILE extern u32 cnt_index, adpcm_num, adpcm_cnt, adpcm_max, adpcm_min, lastCnt[]; #endif -#define ADPCMFBYTES 9 -#define LFSAMPLES 4 +#define ADPCMFBYTES 9 +#define LFSAMPLES 4 -static -Acmd *_decodeChunk(Acmd *ptr, ALLoadFilter *f, s32 tsam, s32 nbytes, s16 outp, s16 inp, u32 flags); +static Acmd* _decodeChunk(Acmd* ptr, ALLoadFilter* f, s32 tsam, s32 nbytes, s16 outp, s16 inp, u32 flags); -Acmd *alAdpcmPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd *p) -{ - Acmd *ptr = p; - s16 inp; - s32 tsam; - s32 nframes; - s32 nbytes; - s32 overFlow; - s32 startZero; - s32 nOver; - s32 nSam; - s32 op; - s32 nLeft; - s32 bEnd; - s32 decoded = 0; - s32 looped = 0; - - ALLoadFilter *f = (ALLoadFilter *)filter; +Acmd* alAdpcmPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + s16 inp; + s32 tsam; + s32 nframes; + s32 nbytes; + s32 overFlow; + s32 startZero; + s32 nOver; + s32 nSam; + s32 op; + s32 nLeft; + s32 bEnd; + s32 decoded = 0; + s32 looped = 0; + + ALLoadFilter* f = (ALLoadFilter*)filter; #ifdef AUD_PROFILE lastCnt[++cnt_index] = osGetCount(); @@ -64,26 +62,26 @@ Acmd *alAdpcmPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd return ptr; inp = AL_DECODER_IN; - aLoadADPCM(ptr++, f->bookSize, - K0_TO_PHYS(f->table->waveInfo.adpcmWave.book->book)); + aLoadADPCM(ptr++, f->bookSize, K0_TO_PHYS(f->table->waveInfo.adpcmWave.book->book)); looped = (outCount + f->sample > f->loop.end) && (f->loop.count != 0); if (looped) nSam = f->loop.end - f->sample; else nSam = outCount; - + if (f->lastsam) nLeft = ADPCMFSIZE - f->lastsam; else nLeft = 0; tsam = nSam - nLeft; - if (tsam<0) tsam = 0; - - nframes = (tsam+ADPCMFSIZE-1)>>LFSAMPLES; - nbytes = nframes*ADPCMFBYTES; + if (tsam < 0) + tsam = 0; - if (looped){ + nframes = (tsam + ADPCMFSIZE - 1) >> LFSAMPLES; + nbytes = nframes * ADPCMFBYTES; + + if (looped) { ptr = _decodeChunk(ptr, f, tsam, nbytes, *outp, inp, f->first); @@ -92,60 +90,59 @@ Acmd *alAdpcmPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd * by the following module. */ if (f->lastsam) - *outp += (f->lastsam<<1); + *outp += (f->lastsam << 1); else - *outp += (ADPCMFSIZE<<1); + *outp += (ADPCMFSIZE << 1); /* * Now fix up state info to reflect the loop start point */ - f->lastsam = f->loop.start &0xf; - f->memin = (s32) f->table->base + ADPCMFBYTES * - ((s32) (f->loop.start>>LFSAMPLES) + 1); + f->lastsam = f->loop.start & 0xf; + f->memin = (s32)f->table->base + ADPCMFBYTES * ((s32)(f->loop.start >> LFSAMPLES) + 1); f->sample = f->loop.start; bEnd = *outp; - while (outCount > nSam){ - + while (outCount > nSam) { + outCount -= nSam; - + /* * Put next one after the end of the last lot - on the * frame boundary (32 byte) after the end. */ - op = (bEnd + ((nframes+1)<<(LFSAMPLES+1))) & ~0x1f; + op = (bEnd + ((nframes + 1) << (LFSAMPLES + 1))) & ~0x1f; /* * The actual end of data */ - bEnd += (nSam<<1); - + bEnd += (nSam << 1); + /* * -1 is loop forever - the loop count is not exact now * for small loops! */ if ((f->loop.count != -1) && (f->loop.count != 0)) f->loop.count--; - + /* * What's left to compute. */ nSam = MIN(outCount, f->loop.end - f->loop.start); - tsam = nSam - ADPCMFSIZE + f->lastsam; - if (tsam<0) tsam = 0; - nframes = (tsam+ADPCMFSIZE-1)>>LFSAMPLES; - nbytes = nframes*ADPCMFBYTES; + tsam = nSam - ADPCMFSIZE + f->lastsam; + if (tsam < 0) + tsam = 0; + nframes = (tsam + ADPCMFSIZE - 1) >> LFSAMPLES; + nbytes = nframes * ADPCMFBYTES; ptr = _decodeChunk(ptr, f, tsam, nbytes, op, inp, f->first | A_LOOP); /* * Merge the two sections in DMEM. */ - aDMEMMove(ptr++, op+(f->lastsam<<1), bEnd, nSam<<1); - + aDMEMMove(ptr++, op + (f->lastsam << 1), bEnd, nSam << 1); } - + f->lastsam = (outCount + f->lastsam) & 0xf; f->sample += outCount; - f->memin += ADPCMFBYTES*nframes; + f->memin += ADPCMFBYTES * nframes; #ifdef AUD_PROFILE PROFILE_AUD(adpcm_num, adpcm_cnt, adpcm_max, adpcm_min); #endif @@ -156,48 +153,48 @@ Acmd *alAdpcmPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd * The unlooped case, which is executed most of the time */ - nSam = nframes<memin + nbytes - ((s32) f->table->base + f->table->len); + overFlow = f->memin + nbytes - ((s32)f->table->base + f->table->len); if (overFlow < 0) overFlow = 0; - nOver = (overFlow/ADPCMFBYTES)< nSam + nLeft) nOver = nSam + nLeft; - + nbytes -= overFlow; - if ((nOver - (nOver & 0xf))< outCount){ + if ((nOver - (nOver & 0xf)) < outCount) { decoded = 1; ptr = _decodeChunk(ptr, f, nSam - nOver, nbytes, *outp, inp, f->first); - + if (f->lastsam) - *outp += (f->lastsam<<1); + *outp += (f->lastsam << 1); else - *outp += (ADPCMFSIZE<<1); + *outp += (ADPCMFSIZE << 1); f->lastsam = (outCount + f->lastsam) & 0xf; f->sample += outCount; - f->memin += ADPCMFBYTES*nframes; - } else { + f->memin += ADPCMFBYTES * nframes; + } else { f->lastsam = 0; - f->memin += ADPCMFBYTES*nframes; + f->memin += ADPCMFBYTES * nframes; } /* * Put zeros in if necessary */ - if (nOver){ + if (nOver) { f->lastsam = 0; if (decoded) - startZero = (nLeft + nSam - nOver)<<1; + startZero = (nLeft + nSam - nOver) << 1; else startZero = 0; - aClearBuffer(ptr++, startZero + *outp, nOver<<1); + aClearBuffer(ptr++, startZero + *outp, nOver << 1); } #ifdef AUD_PROFILE PROFILE_AUD(adpcm_num, adpcm_cnt, adpcm_max, adpcm_min); @@ -206,31 +203,30 @@ Acmd *alAdpcmPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd return ptr; } -Acmd *alRaw16Pull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd *p) -{ - Acmd *ptr = p; - s32 nbytes; - s32 dramLoc; - s32 dramAlign; - s32 dmemAlign; - s32 overFlow; - s32 startZero; - s32 nSam; - s32 op; - - ALLoadFilter *f = (ALLoadFilter *)filter; - ALFilter *a = (ALFilter *) filter; +Acmd* alRaw16Pull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + s32 nbytes; + s32 dramLoc; + s32 dramAlign; + s32 dmemAlign; + s32 overFlow; + s32 startZero; + s32 nSam; + s32 op; + + ALLoadFilter* f = (ALLoadFilter*)filter; + ALFilter* a = (ALFilter*)filter; if (outCount == 0) return ptr; - - if ((outCount + f->sample > f->loop.end) && (f->loop.count != 0)){ + + if ((outCount + f->sample > f->loop.end) && (f->loop.count != 0)) { nSam = f->loop.end - f->sample; - nbytes = nSam<<1; - if (nSam > 0){ + nbytes = nSam << 1; + if (nSam > 0) { dramLoc = (f->dma)(f->memin, nbytes, f->dmaState); - + /* * Make sure enough is loaded into DMEM to take care * of 8 byte alignment @@ -239,39 +235,39 @@ Acmd *alRaw16Pull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd nbytes += dramAlign; aSetBuffer(ptr++, 0, *outp, 0, nbytes + 8 - (nbytes & 0x7)); aLoadBuffer(ptr++, dramLoc - dramAlign); - } else - dramAlign = 0; - + } else + dramAlign = 0; + /* * Fix up output pointer to allow for dram alignment */ *outp += dramAlign; - - f->memin = (s32) f->table->base + (f->loop.start<<1); + + f->memin = (s32)f->table->base + (f->loop.start << 1); f->sample = f->loop.start; op = *outp; - - while (outCount > nSam){ - op += (nSam<<1); + while (outCount > nSam) { + + op += (nSam << 1); outCount -= nSam; /* * -1 is loop forever */ if ((f->loop.count != -1) && (f->loop.count != 0)) f->loop.count--; - + /* * What to compute. */ nSam = MIN(outCount, f->loop.end - f->loop.start); - nbytes = nSam<<1; - + nbytes = nSam << 1; + /* * Do the next section, same as last. */ dramLoc = (f->dma)(f->memin, nbytes, f->dmaState); - + /* * Make sure enough is loaded into DMEM to take care * of 8 byte alignment @@ -290,13 +286,12 @@ Acmd *alRaw16Pull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd * Merge the two sections in DMEM. */ if (dramAlign || dmemAlign) - aDMEMMove(ptr++, op+dramAlign+dmemAlign, op, nSam<<1); - + aDMEMMove(ptr++, op + dramAlign + dmemAlign, op, nSam << 1); } - + f->sample += outCount; - f->memin += (outCount<<1); - + f->memin += (outCount << 1); + return ptr; } @@ -307,18 +302,18 @@ Acmd *alRaw16Pull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd * of the bitstream I try to generate */ - nbytes = outCount<<1; - overFlow = f->memin + nbytes - ((s32) f->table->base + f->table->len); + nbytes = outCount << 1; + overFlow = f->memin + nbytes - ((s32)f->table->base + f->table->len); if (overFlow < 0) overFlow = 0; if (overFlow > nbytes) overFlow = nbytes; - - if (overFlow < nbytes){ - if (outCount > 0){ + + if (overFlow < nbytes) { + if (outCount > 0) { nbytes -= overFlow; dramLoc = (f->dma)(f->memin, nbytes, f->dmaState); - + /* * Make sure enough is loaded into DMEM to take care * of 8 byte alignment @@ -327,21 +322,21 @@ Acmd *alRaw16Pull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd nbytes += dramAlign; aSetBuffer(ptr++, 0, *outp, 0, nbytes + 8 - (nbytes & 0x7)); aLoadBuffer(ptr++, dramLoc - dramAlign); - } else - dramAlign = 0; + } else + dramAlign = 0; *outp += dramAlign; f->sample += outCount; - f->memin += outCount<<1; - } else { - f->memin += outCount<<1; + f->memin += outCount << 1; + } else { + f->memin += outCount << 1; } /* * Put zeros in if necessary */ - if (overFlow){ - startZero = (outCount<<1) - overFlow; + if (overFlow) { + startZero = (outCount << 1) - overFlow; if (startZero < 0) startZero = 0; aClearBuffer(ptr++, startZero + *outp, overFlow); @@ -349,46 +344,41 @@ Acmd *alRaw16Pull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd return ptr; } +s32 alLoadParam(void* filter, s32 paramID, void* param) { + ALLoadFilter* a = (ALLoadFilter*)filter; + ALFilter* f = (ALFilter*)filter; -s32 -alLoadParam(void *filter, s32 paramID, void *param) -{ - ALLoadFilter *a = (ALLoadFilter *) filter; - ALFilter *f = (ALFilter *) filter; - switch (paramID) { case (AL_FILTER_SET_WAVETABLE): - a->table = (ALWaveTable *) param; - a->memin = (s32) a->table->base; + a->table = (ALWaveTable*)param; + a->memin = (s32)a->table->base; a->sample = 0; - switch (a->table->type){ + switch (a->table->type) { case (AL_ADPCM_WAVE): /* * Set up the correct handler */ f->handler = alAdpcmPull; - + /* * Make sure the table length is an integer number of * frames */ - a->table->len = ADPCMFBYTES * - ((s32) (a->table->len/ADPCMFBYTES)); - - a->bookSize = 2*a->table->waveInfo.adpcmWave.book->order* - a->table->waveInfo.adpcmWave.book->npredictors*ADPCMVSIZE; + a->table->len = ADPCMFBYTES * ((s32)(a->table->len / ADPCMFBYTES)); + + a->bookSize = 2 * a->table->waveInfo.adpcmWave.book->order + * a->table->waveInfo.adpcmWave.book->npredictors * ADPCMVSIZE; if (a->table->waveInfo.adpcmWave.loop) { a->loop.start = a->table->waveInfo.adpcmWave.loop->start; a->loop.end = a->table->waveInfo.adpcmWave.loop->end; a->loop.count = a->table->waveInfo.adpcmWave.loop->count; - alCopy(a->table->waveInfo.adpcmWave.loop->state, - a->lstate, sizeof(ADPCM_STATE)); + alCopy(a->table->waveInfo.adpcmWave.loop->state, a->lstate, sizeof(ADPCM_STATE)); } else { a->loop.start = a->loop.end = a->loop.count = 0; } break; - + case (AL_RAW16_WAVE): f->handler = alRaw16Pull; if (a->table->waveInfo.rawWave.loop) { @@ -399,51 +389,42 @@ alLoadParam(void *filter, s32 paramID, void *param) a->loop.start = a->loop.end = a->loop.count = 0; } break; - + default: break; - } break; - + case (AL_FILTER_RESET): a->lastsam = 0; - a->first = 1; + a->first = 1; a->sample = 0; - - /* sct 2/14/96 - Check table since it is initialized to null and */ - /* Get loop info according to table type. */ - if (a->table) - { - a->memin = (s32) a->table->base; - if (a->table->type == AL_ADPCM_WAVE) - { - if (a->table->waveInfo.adpcmWave.loop) - a->loop.count = a->table->waveInfo.adpcmWave.loop->count; - } - else if (a->table->type == AL_RAW16_WAVE) - { - if (a->table->waveInfo.rawWave.loop) - a->loop.count = a->table->waveInfo.rawWave.loop->count; - } - } - + + /* sct 2/14/96 - Check table since it is initialized to null and */ + /* Get loop info according to table type. */ + if (a->table) { + a->memin = (s32)a->table->base; + if (a->table->type == AL_ADPCM_WAVE) { + if (a->table->waveInfo.adpcmWave.loop) + a->loop.count = a->table->waveInfo.adpcmWave.loop->count; + } else if (a->table->type == AL_RAW16_WAVE) { + if (a->table->waveInfo.rawWave.loop) + a->loop.count = a->table->waveInfo.rawWave.loop->count; + } + } + break; - + default: break; } } -Acmd *_decodeChunk(Acmd *ptr, ALLoadFilter *f, s32 tsam, s32 nbytes, s16 outp, s16 inp, u32 flags) +Acmd* _decodeChunk(Acmd* ptr, ALLoadFilter* f, s32 tsam, s32 nbytes, s16 outp, s16 inp, u32 flags) { -{ + s32 dramAlign, dramLoc; - s32 - dramAlign, - dramLoc; - - if (nbytes > 0){ + if (nbytes > 0) { dramLoc = (f->dma)(f->memin, nbytes, f->dmaState); /* * Make sure enough is loaded into DMEM to take care @@ -456,16 +437,13 @@ Acmd *_decodeChunk(Acmd *ptr, ALLoadFilter *f, s32 tsam, s32 nbytes, s16 outp, s } else dramAlign = 0; - if (flags & A_LOOP){ + if (flags & A_LOOP) { aSetLoop(ptr++, K0_TO_PHYS(f->lstate)); } - - aSetBuffer(ptr++, 0, inp + dramAlign, outp, tsam<<1); + + aSetBuffer(ptr++, 0, inp + dramAlign, outp, tsam << 1); aADPCMdec(ptr++, flags, K0_TO_PHYS(f->state)); f->first = 0; return ptr; } - - - diff --git a/src/audio/mainbus.c b/src/audio/mainbus.c index d5c8eca..d1bf705 100644 --- a/src/audio/mainbus.c +++ b/src/audio/mainbus.c @@ -21,47 +21,42 @@ #include #include "synthInternals.h" -Acmd *alMainBusPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, Acmd *p) -{ - Acmd *ptr = p; - ALMainBus *m = (ALMainBus *)filter; - ALFilter **sources = m->sources; - s32 i; +Acmd* alMainBusPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALMainBus* m = (ALMainBus*)filter; + ALFilter** sources = m->sources; + s32 i; /* * clear the output buffers here */ - aClearBuffer(ptr++, AL_MAIN_L_OUT, outCount<<1); - aClearBuffer(ptr++, AL_MAIN_R_OUT, outCount<<1); + aClearBuffer(ptr++, AL_MAIN_L_OUT, outCount << 1); + aClearBuffer(ptr++, AL_MAIN_R_OUT, outCount << 1); for (i = 0; i < m->sourceCount; i++) { - ptr = (sources[i]->handler)(sources[i], outp, outCount, sampleOffset, - ptr); - aSetBuffer(ptr++, 0, 0, 0, outCount<<1); - aMix(ptr++, 0, 0x7fff, AL_AUX_L_OUT, AL_MAIN_L_OUT); - aMix(ptr++, 0, 0x7fff, AL_AUX_R_OUT, AL_MAIN_R_OUT); + ptr = (sources[i]->handler)(sources[i], outp, outCount, sampleOffset, ptr); + aSetBuffer(ptr++, 0, 0, 0, outCount << 1); + aMix(ptr++, 0, 0x7fff, AL_AUX_L_OUT, AL_MAIN_L_OUT); + aMix(ptr++, 0, 0x7fff, AL_AUX_R_OUT, AL_MAIN_R_OUT); } - + return ptr; } -s32 alMainBusParam(void *filter, s32 paramID, void *param) -{ - ALMainBus *m = (ALMainBus *) filter; - ALFilter **sources = m->sources; - +s32 alMainBusParam(void* filter, s32 paramID, void* param) { + ALMainBus* m = (ALMainBus*)filter; + ALFilter** sources = m->sources; + switch (paramID) { case (AL_FILTER_ADD_SOURCE): - sources[m->sourceCount++] = (ALFilter *) param; + sources[m->sourceCount++] = (ALFilter*)param; break; - + default: /* ??? */ break; } return 0; - } - diff --git a/src/audio/parse_abi.c b/src/audio/parse_abi.c index f1fd37d..0b67d7c 100644 --- a/src/audio/parse_abi.c +++ b/src/audio/parse_abi.c @@ -4,44 +4,16 @@ #include #ifndef _FINALROM -void alParseAbiCL(Acmd *cmdList, u32 nbytes) -{ - guDLPrintCB cntlBlk; +void alParseAbiCL(Acmd* cmdList, u32 nbytes) { + guDLPrintCB cntlBlk; cntlBlk.dataSize = nbytes; cntlBlk.flags = 0; cntlBlk.dlType = GU_PARSE_ABI_TYPE; cntlBlk.paddr = osVirtualToPhysical(cmdList); - - osWriteHost(&cntlBlk,sizeof(cntlBlk)); - osWriteHost(cmdList,nbytes); -} - + osWriteHost(&cntlBlk, sizeof(cntlBlk)); + osWriteHost(cmdList, nbytes); +} + #endif - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/audio/resample.c b/src/audio/resample.c index 2baf26f..9173315 100644 --- a/src/audio/resample.c +++ b/src/audio/resample.c @@ -33,20 +33,19 @@ extern u32 cnt_index, resampler_num, resampler_cnt, resampler_max, resampler_min /*********************************************************************** * Resampler filter public interfaces ***********************************************************************/ -Acmd *alResamplePull(void *filter, s16 *outp, s32 outCnt, s32 sampleOffset, Acmd *p) -{ - ALResampler *f = (ALResampler *)filter; - Acmd *ptr = p; - s16 inp; - s32 inCount; - ALFilter *source = f->filter.source; - s32 incr; - f32 finCount; - +Acmd* alResamplePull(void* filter, s16* outp, s32 outCnt, s32 sampleOffset, Acmd* p) { + ALResampler* f = (ALResampler*)filter; + Acmd* ptr = p; + s16 inp; + s32 inCount; + ALFilter* source = f->filter.source; + s32 incr; + f32 finCount; + #ifdef AUD_PROFILE lastCnt[++cnt_index] = osGetCount(); #endif - + inp = AL_DECODER_OUT; if (!outCnt) @@ -57,69 +56,69 @@ Acmd *alResamplePull(void *filter, s16 *outp, s32 outCnt, s32 sampleOffset, Acmd */ if (f->upitch) { - ptr = (*source->handler)(source, &inp, outCnt, sampleOffset, p); - aDMEMMove(ptr++, inp, *outp, outCnt<<1); + ptr = (*source->handler)(source, &inp, outCnt, sampleOffset, p); + aDMEMMove(ptr++, inp, *outp, outCnt << 1); } else { - /* - * clip to maximum allowable pitch - * FIXME: should we check for some minimum as well? - */ - if (f->ratio > MAX_RATIO) f->ratio = MAX_RATIO; + /* + * clip to maximum allowable pitch + * FIXME: should we check for some minimum as well? + */ + if (f->ratio > MAX_RATIO) + f->ratio = MAX_RATIO; - /* - * quantize the pitch - */ - f->ratio = (s32)(f->ratio * UNITY_PITCH); - f->ratio = f->ratio / UNITY_PITCH; + /* + * quantize the pitch + */ + f->ratio = (s32)(f->ratio * UNITY_PITCH); + f->ratio = f->ratio / UNITY_PITCH; - /* - * determine how many samples to generate - */ - finCount = f->delta + (f->ratio * (f32) outCnt); - inCount = (s32) finCount; - f->delta = finCount - (f32)inCount; + /* + * determine how many samples to generate + */ + finCount = f->delta + (f->ratio * (f32)outCnt); + inCount = (s32)finCount; + f->delta = finCount - (f32)inCount; - /* - * ask all filters upstream from us to build their command - * lists. - */ - ptr = (*source->handler)(source, &inp, inCount, sampleOffset, p); + /* + * ask all filters upstream from us to build their command + * lists. + */ + ptr = (*source->handler)(source, &inp, inCount, sampleOffset, p); - /* - * construct our portion of the command list - */ - incr = (s32)(f->ratio * UNITY_PITCH); - aSetBuffer(ptr++, 0, inp, *outp, outCnt<<1); - aResample(ptr++, f->first, incr, osVirtualToPhysical(f->state)); - f->first = 0; + /* + * construct our portion of the command list + */ + incr = (s32)(f->ratio * UNITY_PITCH); + aSetBuffer(ptr++, 0, inp, *outp, outCnt << 1); + aResample(ptr++, f->first, incr, osVirtualToPhysical(f->state)); + f->first = 0; } - + #ifdef AUD_PROFILE PROFILE_AUD(resampler_num, resampler_cnt, resampler_max, resampler_min); #endif return ptr; } -s32 alResampleParam(void *filter, s32 paramID, void *param) -{ - ALFilter *f = (ALFilter *) filter; - ALResampler *r = (ALResampler *) filter; +s32 alResampleParam(void* filter, s32 paramID, void* param) { + ALFilter* f = (ALFilter*)filter; + ALResampler* r = (ALResampler*)filter; union { - f32 f; - s32 i; + f32 f; + s32 i; } data; - + switch (paramID) { case (AL_FILTER_SET_SOURCE): - f->source = (ALFilter *) param; + f->source = (ALFilter*)param; break; - + case (AL_FILTER_RESET): - r->delta = 0.0; - r->first = 1; + r->delta = 0.0; + r->first = 1; r->motion = AL_STOPPED; r->upitch = 0; if (f->source) @@ -131,16 +130,16 @@ s32 alResampleParam(void *filter, s32 paramID, void *param) if (f->source) (*f->source->setParam)(f->source, AL_FILTER_START, 0); break; - + case (AL_FILTER_SET_PITCH): - data.i = (s32) param; + data.i = (s32)param; r->ratio = data.f; break; - - case (AL_FILTER_SET_UNITY_PITCH): - r->upitch = 1; + + case (AL_FILTER_SET_UNITY_PITCH): + r->upitch = 1; break; - + default: if (f->source) (*f->source->setParam)(f->source, paramID, param); diff --git a/src/audio/reverb.c b/src/audio/reverb.c index f5158c3..054125d 100644 --- a/src/audio/reverb.c +++ b/src/audio/reverb.c @@ -28,7 +28,7 @@ #ident "$Revision: 1.49 $" #ident "$Revision: 1.17 $" #define RANGE 2.0 -extern ALGlobals *alGlobals; +extern ALGlobals* alGlobals; #ifdef AUD_PROFILE extern u32 cnt_index, reverb_num, reverb_cnt, reverb_max, reverb_min, lastCnt[]; @@ -38,34 +38,31 @@ extern u32 load_num, load_cnt, load_max, load_min, save_num, save_cnt, save_max, /* * macros */ -#define SWAP(in, out) \ -{ \ - s16 t = out; \ - out = in; \ - in = t; \ -} +#define SWAP(in, out) \ + { \ + s16 t = out; \ + out = in; \ + in = t; \ + } - -Acmd *_loadOutputBuffer(ALFx *r, ALDelay *d, s32 buff, s32 incount, Acmd *p); -Acmd *_loadBuffer(ALFx *r, s16 *curr_ptr, s32 buff, s32 count, Acmd *p); -Acmd *_saveBuffer(ALFx *r, s16 *curr_ptr, s32 buff, s32 count, Acmd *p); -Acmd *_filterBuffer(ALLowPass *lp, s32 buff, s32 count, Acmd *p); -f32 _doModFunc(ALDelay *d, s32 count); +Acmd* _loadOutputBuffer(ALFx* r, ALDelay* d, s32 buff, s32 incount, Acmd* p); +Acmd* _loadBuffer(ALFx* r, s16* curr_ptr, s32 buff, s32 count, Acmd* p); +Acmd* _saveBuffer(ALFx* r, s16* curr_ptr, s32 buff, s32 count, Acmd* p); +Acmd* _filterBuffer(ALLowPass* lp, s32 buff, s32 count, Acmd* p); +f32 _doModFunc(ALDelay* d, s32 count); static s32 L_INC[] = { L0_INC, L1_INC, L2_INC }; /*********************************************************************** * Reverb filter public interfaces ***********************************************************************/ -Acmd *alFxPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, - Acmd *p) -{ - Acmd *ptr = p; - ALFx *r = (ALFx *)filter; - ALFilter *source = r->filter.source; - s16 i, buff1, buff2, input, output; - s16 *in_ptr, *out_ptr, gain, *prev_out_ptr = 0; - ALDelay *d, *pd; +Acmd* alFxPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALFx* r = (ALFx*)filter; + ALFilter* source = r->filter.source; + s16 i, buff1, buff2, input, output; + s16 *in_ptr, *out_ptr, gain, *prev_out_ptr = 0; + ALDelay *d, *pd; #ifdef AUD_PROFILE lastCnt[++cnt_index] = osGetCount(); @@ -80,53 +77,53 @@ Acmd *alFxPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, */ ptr = (*source->handler)(source, outp, outCount, sampleOffset, p); - input = AL_AUX_L_OUT; + input = AL_AUX_L_OUT; output = AL_AUX_R_OUT; - buff1 = AL_TEMP_0; - buff2 = AL_TEMP_1; - - aSetBuffer(ptr++, 0, 0, 0, outCount<<1); /* set the buffer size */ + buff1 = AL_TEMP_0; + buff2 = AL_TEMP_1; + + aSetBuffer(ptr++, 0, 0, 0, outCount << 1); /* set the buffer size */ aMix(ptr++, 0, 0xda83, AL_AUX_L_OUT, input); /* .707L = L - .293L */ aMix(ptr++, 0, 0x5a82, AL_AUX_R_OUT, input); /* mix the AuxL and AuxR into the AuxL */ /* and write the mixed value to the delay line at r->input */ ptr = _saveBuffer(r, r->input, input, outCount, ptr); - aClearBuffer(ptr++, output, outCount<<1); /* clear the AL_AUX_R_OUT */ + aClearBuffer(ptr++, output, outCount << 1); /* clear the AL_AUX_R_OUT */ for (i = 0; i < r->section_count; i++) { - d = &r->delay[i]; /* get the ALDelay structure */ - in_ptr = &r->input[-d->input]; - out_ptr = &r->input[-d->output]; - - if (in_ptr == prev_out_ptr) { - SWAP(buff1, buff2); - } else { /* load data at in_ptr into buff1 */ - ptr = _loadBuffer(r, in_ptr, buff1, outCount, ptr); - } - ptr = _loadOutputBuffer(r, d, buff2, outCount, ptr); + d = &r->delay[i]; /* get the ALDelay structure */ + in_ptr = &r->input[-d->input]; + out_ptr = &r->input[-d->output]; - if (d->ffcoef) { - aMix(ptr++, 0, (u16)d->ffcoef, buff1, buff2); - if (!d->rs && !d->lp) { - ptr = _saveBuffer(r, out_ptr, buff2, outCount, ptr); - } - } - - if (d->fbcoef) { - aMix(ptr++, 0, (u16)d->fbcoef, buff2, buff1); - ptr = _saveBuffer(r, in_ptr, buff1, outCount, ptr); - } + if (in_ptr == prev_out_ptr) { + SWAP(buff1, buff2); + } else { /* load data at in_ptr into buff1 */ + ptr = _loadBuffer(r, in_ptr, buff1, outCount, ptr); + } + ptr = _loadOutputBuffer(r, d, buff2, outCount, ptr); - if (d->lp) - ptr = _filterBuffer(d->lp, buff2, outCount, ptr); + if (d->ffcoef) { + aMix(ptr++, 0, (u16)d->ffcoef, buff1, buff2); + if (!d->rs && !d->lp) { + ptr = _saveBuffer(r, out_ptr, buff2, outCount, ptr); + } + } - if (!d->rs) - ptr = _saveBuffer(r, out_ptr, buff2, outCount, ptr); - - if (d->gain) - aMix(ptr++, 0, (u16)d->gain, buff2, output); - - prev_out_ptr = &r->input[d->output]; + if (d->fbcoef) { + aMix(ptr++, 0, (u16)d->fbcoef, buff2, buff1); + ptr = _saveBuffer(r, in_ptr, buff1, outCount, ptr); + } + + if (d->lp) + ptr = _filterBuffer(d->lp, buff2, outCount, ptr); + + if (!d->rs) + ptr = _saveBuffer(r, out_ptr, buff2, outCount, ptr); + + if (d->gain) + aMix(ptr++, 0, (u16)d->gain, buff2, output); + + prev_out_ptr = &r->input[d->output]; } /* @@ -135,13 +132,13 @@ Acmd *alFxPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, */ r->input += outCount; if (r->input > &r->base[r->length]) - r->input -= r->length; + r->input -= r->length; /* * output already in AL_AUX_R_OUT * just copy to AL_AUX_L_OUT */ - aDMEMMove(ptr++, output, AL_AUX_L_OUT, outCount<<1); + aDMEMMove(ptr++, output, AL_AUX_L_OUT, outCount << 1); #ifdef AUD_PROFILE PROFILE_AUD(reverb_num, reverb_cnt, reverb_max, reverb_min); @@ -149,39 +146,35 @@ Acmd *alFxPull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, return ptr; } -s32 alFxParam(void *filter, s32 paramID, void *param) -{ - if(paramID == AL_FILTER_SET_SOURCE) - { - ALFilter *f = (ALFilter *) filter; - f->source = (ALFilter*) param; +s32 alFxParam(void* filter, s32 paramID, void* param) { + if (paramID == AL_FILTER_SET_SOURCE) { + ALFilter* f = (ALFilter*)filter; + f->source = (ALFilter*)param; } return 0; } /* - * This routine gets called by alSynSetFXParam. No checking takes place to - * verify the validity of the paramID or the param value. input and output - * values must be 8 byte aligned, so round down any param passed. + * This routine gets called by alSynSetFXParam. No checking takes place to + * verify the validity of the paramID or the param value. input and output + * values must be 8 byte aligned, so round down any param passed. */ -s32 alFxParamHdl(void *filter, s32 paramID, void *param) -{ - ALFx *f = (ALFx *) filter; - s32 p = (paramID - 2) % 8; - s32 s = (paramID - 2) / 8; - s32 val = *(s32*)param; +s32 alFxParamHdl(void* filter, s32 paramID, void* param) { + ALFx* f = (ALFx*)filter; + s32 p = (paramID - 2) % 8; + s32 s = (paramID - 2) / 8; + s32 val = *(s32*)param; -#define INPUT_PARAM 0 -#define OUTPUT_PARAM 1 -#define FBCOEF_PARAM 2 -#define FFCOEF_PARAM 3 -#define GAIN_PARAM 4 -#define CHORUSRATE_PARAM 5 -#define CHORUSDEPTH_PARAM 6 -#define LPFILT_PARAM 7 +#define INPUT_PARAM 0 +#define OUTPUT_PARAM 1 +#define FBCOEF_PARAM 2 +#define FFCOEF_PARAM 3 +#define GAIN_PARAM 4 +#define CHORUSRATE_PARAM 5 +#define CHORUSDEPTH_PARAM 6 +#define LPFILT_PARAM 7 - switch(p) - { + switch (p) { case INPUT_PARAM: f->delay[s].input = (u32)val & 0xFFFFFFF8; break; @@ -199,7 +192,7 @@ s32 alFxParamHdl(void *filter, s32 paramID, void *param) break; case CHORUSRATE_PARAM: /* f->delay[s].rsinc = ((f32)val)/0xffffff; */ - f->delay[s].rsinc = ((((f32)val)/1000) * RANGE)/alGlobals->drvr.outputRate; + f->delay[s].rsinc = ((((f32)val) / 1000) * RANGE) / alGlobals->drvr.outputRate; break; /* @@ -222,8 +215,7 @@ s32 alFxParamHdl(void *filter, s32 paramID, void *param) f->delay[s].rsgain = (((f32)val) / CONVERT) * LENGTH; break; case LPFILT_PARAM: - if(f->delay[s].lp) - { + if (f->delay[s].lp) { f->delay[s].lp->fc = (s16)val; _init_lpfilter(f->delay[s].lp); } @@ -232,19 +224,18 @@ s32 alFxParamHdl(void *filter, s32 paramID, void *param) return 0; } -Acmd *_loadOutputBuffer(ALFx *r, ALDelay *d, s32 buff, s32 incount, Acmd *p) -{ - Acmd *ptr = p; - s32 ratio, count, rbuff = AL_TEMP_2; - s16 *out_ptr; - f32 fincount, fratio, delta; - s32 ramalign = 0, length; - static f32 val=0.0, lastval=-10.0; - static f32 blob=0; -/* - * The following section implements the chorus resampling. Modulate where you pull - * the samples from, since you need varying amounts of samples. - */ +Acmd* _loadOutputBuffer(ALFx* r, ALDelay* d, s32 buff, s32 incount, Acmd* p) { + Acmd* ptr = p; + s32 ratio, count, rbuff = AL_TEMP_2; + s16* out_ptr; + f32 fincount, fratio, delta; + s32 ramalign = 0, length; + static f32 val = 0.0, lastval = -10.0; + static f32 blob = 0; + /* + * The following section implements the chorus resampling. Modulate where you pull + * the samples from, since you need varying amounts of samples. + */ if (d->rs) { length = d->output - d->input; delta = _doModFunc(d, incount); /* get the number of samples to modulate by */ @@ -252,27 +243,27 @@ Acmd *_loadOutputBuffer(ALFx *r, ALDelay *d, s32 buff, s32 incount, Acmd *p) * find ratio of delta to delay length and quantize * to same resolution as resampler */ - delta /= length; /* convert delta from number of samples to a pitch ratio */ + delta /= length; /* convert delta from number of samples to a pitch ratio */ delta = (s32)(delta * UNITY_PITCH); /* quantize to value microcode will use */ delta = delta / UNITY_PITCH; - fratio = 1.0 - delta; /* pitch ratio needs to be centered around 1, not zero */ - + fratio = 1.0 - delta; /* pitch ratio needs to be centered around 1, not zero */ + /* d->rs->delta is the difference between the fractional and integer value - * of the samples needed. fratio * incount + rs->delta gives the number of samples + * of the samples needed. fratio * incount + rs->delta gives the number of samples * needed for this frame. */ fincount = d->rs->delta + (fratio * (f32)incount); - count = (s32) fincount; /* quantize to s32 */ + count = (s32)fincount; /* quantize to s32 */ d->rs->delta = fincount - (f32)count; /* calculate the round off and store */ /* - * d->rsdelta is amount the out_ptr has deviated from its starting position. - * You calc the out_ptr by taking d->output - d->rsdelta, and then using the + * d->rsdelta is amount the out_ptr has deviated from its starting position. + * You calc the out_ptr by taking d->output - d->rsdelta, and then using the * negative of that as an index into the delay buffer. loadBuffer that uses this * value then bumps it up if it is below the delay buffer. - */ + */ out_ptr = &r->input[-(d->output - d->rsdelta)]; - ramalign = ((s32)out_ptr & 0x7) >> 1; /* calculate the number of samples needed + ramalign = ((s32)out_ptr & 0x7) >> 1; /* calculate the number of samples needed to align the buffer*/ #ifdef _DEBUG #if 0 @@ -292,13 +283,13 @@ Acmd *_loadOutputBuffer(ALFx *r, ALDelay *d, s32 buff, s32 incount, Acmd *p) * samples at the begining which you don't care about. */ ptr = _loadBuffer(r, out_ptr - ramalign, rbuff, count + ramalign, ptr); - /* convert fratio to 16 bit fraction for microcode use */ + /* convert fratio to 16 bit fraction for microcode use */ ratio = (s32)(fratio * UNITY_PITCH); /* set the buffers, and do the resample */ - aSetBuffer(ptr++, 0, rbuff + (ramalign<<1), buff, incount<<1); + aSetBuffer(ptr++, 0, rbuff + (ramalign << 1), buff, incount << 1); aResample(ptr++, d->rs->first, ratio, osVirtualToPhysical(d->rs->state)); - - d->rs->first = 0; /* turn off first time flag */ + + d->rs->first = 0; /* turn off first time flag */ d->rsdelta += count - incount; /* add the number of samples to d->rsdelta */ } else { out_ptr = &r->input[-d->output]; @@ -307,18 +298,17 @@ Acmd *_loadOutputBuffer(ALFx *r, ALDelay *d, s32 buff, s32 incount, Acmd *p) return ptr; } -/* +/* * This routine is for loading data from the delay line buff. If the * address of curr_ptr < r->base, it will force it to be within r->base * space, If the load goes past the end of r->base it will wrap around. * Cause count bytes of data at curr_ptr (within the delay line) to be * loaded into buff. (Buff is a dmem buffer) */ -Acmd *_loadBuffer(ALFx *r, s16 *curr_ptr, s32 buff, s32 count, Acmd *p) -{ - Acmd *ptr = p; - s32 after_end, before_end; - s16 *updated_ptr, *delay_end; +Acmd* _loadBuffer(ALFx* r, s16* curr_ptr, s32 buff, s32 count, Acmd* p) { + Acmd* ptr = p; + s32 after_end, before_end; + s16 *updated_ptr, *delay_end; #ifdef AUD_PROFILE lastCnt[++cnt_index] = osGetCount(); @@ -327,34 +317,33 @@ Acmd *_loadBuffer(ALFx *r, s16 *curr_ptr, s32 buff, s32 count, Acmd *p) delay_end = &r->base[r->length]; #ifdef _DEBUG - if(curr_ptr > delay_end) + if (curr_ptr > delay_end) __osError(ERR_ALMODDELAYOVERFLOW, 1, delay_end - curr_ptr); #endif if (curr_ptr < r->base) - curr_ptr += r->length; + curr_ptr += r->length; updated_ptr = curr_ptr + count; - + if (updated_ptr > delay_end) { after_end = updated_ptr - delay_end; before_end = delay_end - curr_ptr; - - aSetBuffer(ptr++, 0, buff, 0, before_end<<1); + + aSetBuffer(ptr++, 0, buff, 0, before_end << 1); aLoadBuffer(ptr++, osVirtualToPhysical(curr_ptr)); - aSetBuffer(ptr++, 0, buff+(before_end<<1), 0, after_end<<1); + aSetBuffer(ptr++, 0, buff + (before_end << 1), 0, after_end << 1); aLoadBuffer(ptr++, osVirtualToPhysical(r->base)); } else { - aSetBuffer(ptr++, 0, buff, 0, count<<1); + aSetBuffer(ptr++, 0, buff, 0, count << 1); aLoadBuffer(ptr++, osVirtualToPhysical(curr_ptr)); } - aSetBuffer(ptr++, 0, 0, 0, count<<1); + aSetBuffer(ptr++, 0, 0, 0, count << 1); #ifdef AUD_PROFILE PROFILE_AUD(load_num, load_cnt, load_max, load_min); #endif return ptr; - } /* @@ -363,32 +352,31 @@ Acmd *_loadBuffer(ALFx *r, s16 *curr_ptr, s32 buff, s32 count, Acmd *p) * space. If the write goes past the end of r->base, it will wrap around * Cause count bytes of data at buff to be written to delay line, curr_ptr. */ -Acmd *_saveBuffer(ALFx *r, s16 *curr_ptr, s32 buff, s32 count, Acmd *p) -{ - Acmd *ptr = p; - s32 after_end, before_end; - s16 *updated_ptr, *delay_end; +Acmd* _saveBuffer(ALFx* r, s16* curr_ptr, s32 buff, s32 count, Acmd* p) { + Acmd* ptr = p; + s32 after_end, before_end; + s16 *updated_ptr, *delay_end; #ifdef AUD_PROFILE lastCnt[++cnt_index] = osGetCount(); #endif delay_end = &r->base[r->length]; - if (curr_ptr < r->base) /* probably just security */ - curr_ptr += r->length; /* shouldn't occur */ + if (curr_ptr < r->base) /* probably just security */ + curr_ptr += r->length; /* shouldn't occur */ updated_ptr = curr_ptr + count; if (updated_ptr > delay_end) { /* if the data wraps past end of r->base */ after_end = updated_ptr - delay_end; before_end = delay_end - curr_ptr; - aSetBuffer(ptr++, 0, 0, buff, before_end<<1); + aSetBuffer(ptr++, 0, 0, buff, before_end << 1); aSaveBuffer(ptr++, osVirtualToPhysical(curr_ptr)); - aSetBuffer(ptr++, 0, 0, buff+(before_end<<1), after_end<<1); + aSetBuffer(ptr++, 0, 0, buff + (before_end << 1), after_end << 1); aSaveBuffer(ptr++, osVirtualToPhysical(r->base)); - aSetBuffer(ptr++, 0, 0, 0, count<<1); + aSetBuffer(ptr++, 0, 0, 0, count << 1); } else { - aSetBuffer(ptr++, 0, 0, buff, count<<1); + aSetBuffer(ptr++, 0, 0, buff, count << 1); aSaveBuffer(ptr++, osVirtualToPhysical(curr_ptr)); } @@ -396,14 +384,12 @@ Acmd *_saveBuffer(ALFx *r, s16 *curr_ptr, s32 buff, s32 count, Acmd *p) PROFILE_AUD(save_num, save_cnt, save_max, save_min); #endif return ptr; - } -Acmd *_filterBuffer(ALLowPass *lp, s32 buff, s32 count, Acmd *p) -{ - Acmd *ptr = p; +Acmd* _filterBuffer(ALLowPass* lp, s32 buff, s32 count, Acmd* p) { + Acmd* ptr = p; - aSetBuffer(ptr++, 0, buff, buff, count<<1); + aSetBuffer(ptr++, 0, buff, buff, count << 1); aLoadADPCM(ptr++, 32, osVirtualToPhysical(lp->fcvec.fccoef)); aPoleFilter(ptr++, lp->first, lp->fgain, osVirtualToPhysical(lp->fstate)); lp->first = 0; @@ -411,8 +397,6 @@ Acmd *_filterBuffer(ALLowPass *lp, s32 buff, s32 count, Acmd *p) return ptr; } - - /* * Generate a triangle wave from -1 to 1, and find the current position * in the wave. (Rate of the wave is controlled by d->rsinc, which is chorus @@ -421,32 +405,28 @@ Acmd *_filterBuffer(ALLowPass *lp, s32 buff, s32 count, Acmd *p) * should go at it's full chorus. In otherwords, this function returns a number * of samples the output pointer should modulate backwards. */ -f32 _doModFunc(ALDelay *d, s32 count) -{ - f32 val; +f32 _doModFunc(ALDelay* d, s32 count) { + f32 val; - /* - * generate bipolar sawtooth - * from -RANGE to +RANGE - */ - d->rsval += d->rsinc * count; - d->rsval = (d->rsval > RANGE) ? d->rsval-(RANGE*2) : d->rsval; + /* + * generate bipolar sawtooth + * from -RANGE to +RANGE + */ + d->rsval += d->rsinc * count; + d->rsval = (d->rsval > RANGE) ? d->rsval - (RANGE * 2) : d->rsval; - /* - * convert to monopolar triangle - * from 0 to RANGE - */ - val = d->rsval; - val = (val < 0) ? -val : val; + /* + * convert to monopolar triangle + * from 0 to RANGE + */ + val = d->rsval; + val = (val < 0) ? -val : val; - /* - * convert to bipolar triangle - * from -1 to 1 - */ - val -= RANGE/2; + /* + * convert to bipolar triangle + * from -1 to 1 + */ + val -= RANGE / 2; - return(d->rsgain * val); + return (d->rsgain * val); } - - - diff --git a/src/audio/save.c b/src/audio/save.c index 59bd09b..5fda872 100644 --- a/src/audio/save.c +++ b/src/audio/save.c @@ -23,48 +23,40 @@ // TODO: this comes from a header #ident "$Revision: 1.17 $" -Acmd *alSavePull(void *filter, s16 *outp, s32 outCount, s32 sampleOffset, - Acmd *p) -{ - Acmd *ptr = p; - ALSave *f = (ALSave *)filter; - ALFilter *source = f->filter.source; +Acmd* alSavePull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALSave* f = (ALSave*)filter; + ALFilter* source = f->filter.source; #if BUILD_VERSION < VERSION_J #line 33 #endif assert(f->filter.source); - ptr = (*source->handler)(source, outp, outCount, sampleOffset, ptr); - - aSetBuffer (ptr++, 0, 0, 0, outCount<<1); + + aSetBuffer(ptr++, 0, 0, 0, outCount << 1); aInterleave(ptr++, AL_MAIN_L_OUT, AL_MAIN_R_OUT); - aSetBuffer (ptr++, 0, 0, 0, outCount<<2); + aSetBuffer(ptr++, 0, 0, 0, outCount << 2); aSaveBuffer(ptr++, f->dramout); return ptr; } -s32 alSaveParam(void *filter, s32 paramID, void *param) -{ - ALSave *a = (ALSave *) filter; - ALFilter *f = (ALFilter *) filter; - s32 pp = (s32) param; +s32 alSaveParam(void* filter, s32 paramID, void* param) { + ALSave* a = (ALSave*)filter; + ALFilter* f = (ALFilter*)filter; + s32 pp = (s32)param; switch (paramID) { case (AL_FILTER_SET_SOURCE): - f->source = (ALFilter *) param; + f->source = (ALFilter*)param; break; - case (AL_FILTER_SET_DRAM): + case (AL_FILTER_SET_DRAM): a->dramout = pp; break; - + default: break; } return 0; - } - - - diff --git a/src/audio/seq.c b/src/audio/seq.c index 5da5b11..0e5b02f 100644 --- a/src/audio/seq.c +++ b/src/audio/seq.c @@ -23,91 +23,86 @@ #include #include "seq.h" +#define IFF_FILE_HDR 0x4d546864 /* 'MThd' */ +#define IFF_TRACK_HDR 0x4d54726b /* 'MTrk' */ -#define IFF_FILE_HDR 0x4d546864 /* 'MThd' */ -#define IFF_TRACK_HDR 0x4d54726b /* 'MTrk' */ +static s32 readVarLen(ALSeq* s); +static u8 read8(ALSeq* s); +static s16 read16(ALSeq* s); +static s32 read32(ALSeq* s); -static s32 readVarLen(ALSeq *s); -static u8 read8(ALSeq *s); -static s16 read16(ALSeq *s); -static s32 read32(ALSeq *s); - - -void alSeqNew(ALSeq *seq, u8 *ptr, s32 len) -{ +void alSeqNew(ALSeq* seq, u8* ptr, s32 len) { /* * load the seqence pointed to by ptr */ - seq->base = ptr; - seq->len = len; - seq->lastStatus = 0; - seq->lastTicks = 0; - seq->curPtr = ptr; - + seq->base = ptr; + seq->len = len; + seq->lastStatus = 0; + seq->lastTicks = 0; + seq->curPtr = ptr; + if (read32(seq) != IFF_FILE_HDR) { #ifdef _DEBUG __osError(ERR_ALSEQNOTMIDI, 1, ptr); -#endif +#endif return; } - read32(seq); /* skip the length field */ + read32(seq); /* skip the length field */ if (read16(seq) != 0) { -#ifdef _DEBUG +#ifdef _DEBUG __osError(ERR_ALSEQNOTMIDI0, 1, ptr); -#endif +#endif return; } if (read16(seq) != 1) { -#ifdef _DEBUG +#ifdef _DEBUG __osError(ERR_ALSEQNUMTRACKS, 1, ptr); -#endif +#endif return; } seq->division = read16(seq); if (seq->division & 0x8000) { -#ifdef _DEBUG +#ifdef _DEBUG __osError(ERR_ALSEQTIME, 1, ptr); -#endif +#endif return; } - - seq->qnpt = 1.0/(f32)seq->division; + + seq->qnpt = 1.0 / (f32)seq->division; if (read32(seq) != IFF_TRACK_HDR) { -#ifdef _DEBUG +#ifdef _DEBUG __osError(ERR_ALSEQTRACKHDR, 1, ptr); -#endif +#endif return; } - read32(seq); /* skip the length field */ + read32(seq); /* skip the length field */ seq->trackStart = seq->curPtr; } - -void alSeqNextEvent(ALSeq *seq, ALEvent *event) -{ - u8 status; - s16 delta; - s32 len; - s32 deltaTicks; - s32 i; +void alSeqNextEvent(ALSeq* seq, ALEvent* event) { + u8 status; + s16 delta; + s32 len; + s32 deltaTicks; + s32 i; #ifdef _DEBUG /* sct 1/17/96 - Warn if curPtr is beyond the end of sequence. */ if (seq->curPtr >= seq->base + seq->len) - __osError(ERR_ALSEQOVERRUN, 0); + __osError(ERR_ALSEQOVERRUN, 0); #endif - - deltaTicks = readVarLen(seq); /* read the delta time */ + + deltaTicks = readVarLen(seq); /* read the delta time */ seq->lastTicks += deltaTicks; status = read8(seq); - + #if _DEBUG /* * System exclusives are not supported, so just skip them and read @@ -119,29 +114,29 @@ void alSeqNextEvent(ALSeq *seq, ALEvent *event) for (i = 0; i < len; i++) { read8(seq); } - alSeqNextEvent(seq,event); + alSeqNextEvent(seq, event); return; } #endif - + if (status == AL_MIDI_Meta) { u8 type = read8(seq); - + if (type == AL_MIDI_META_TEMPO) { event->type = AL_TEMPO_EVT; event->msg.tempo.ticks = deltaTicks; event->msg.tempo.status = status; event->msg.tempo.type = type; - event->msg.tempo.len = read8(seq); + event->msg.tempo.len = read8(seq); event->msg.tempo.byte1 = read8(seq); event->msg.tempo.byte2 = read8(seq); event->msg.tempo.byte3 = read8(seq); } else if (type == AL_MIDI_META_EOT) { event->type = AL_SEQ_END_EVT; - event->msg.end.ticks = deltaTicks; + event->msg.end.ticks = deltaTicks; event->msg.end.status = status; - event->msg.end.type = type; - event->msg.end.len = read8(seq); + event->msg.end.type = type; + event->msg.end.len = read8(seq); } else { #ifdef _DEBUG __osError(ERR_ALSEQMETA, 1, type); @@ -149,13 +144,13 @@ void alSeqNextEvent(ALSeq *seq, ALEvent *event) for (i = 0; i < len; i++) { read8(seq); } - alSeqNextEvent(seq,event); + alSeqNextEvent(seq, event); return; -#endif +#endif } seq->lastStatus = 0; - + } else { event->type = AL_SEQ_MIDI_EVT; event->msg.midi.ticks = deltaTicks; @@ -168,9 +163,9 @@ void alSeqNextEvent(ALSeq *seq, ALEvent *event) event->msg.midi.status = seq->lastStatus; event->msg.midi.byte1 = status; } - - if (((event->msg.midi.status & 0xf0) != AL_MIDI_ProgramChange) && - ((event->msg.midi.status & 0xf0) != AL_MIDI_ChannelPressure)) { + + if (((event->msg.midi.status & 0xf0) != AL_MIDI_ProgramChange) + && ((event->msg.midi.status & 0xf0) != AL_MIDI_ChannelPressure)) { event->msg.midi.byte2 = read8(seq); } else { event->msg.midi.byte2 = 0; @@ -178,151 +173,135 @@ void alSeqNextEvent(ALSeq *seq, ALEvent *event) } } - /* Returns the delta time in ticks for the next event in the sequence. Assumes that the sequence data pointer is pointing to the delta time. - + If the curPtr is at or beyond the end of the sequence, then return FALSE to indicate no next event. sct 11/6/95 */ -char __alSeqNextDelta (ALSeq *seq, s32 *pDeltaTicks) -{ - u8 * savedPtr; +char __alSeqNextDelta(ALSeq* seq, s32* pDeltaTicks) { + u8* savedPtr; - /* sct 1/16/96 - Put in safety check here to make sure we don't read past sequence data. */ - if (seq->curPtr >= seq->base + seq->len) - return FALSE; + /* sct 1/16/96 - Put in safety check here to make sure we don't read past sequence data. */ + if (seq->curPtr >= seq->base + seq->len) + return FALSE; - savedPtr = seq->curPtr; - *pDeltaTicks = readVarLen(seq); /* read the delta time */ - seq->curPtr = savedPtr; + savedPtr = seq->curPtr; + *pDeltaTicks = readVarLen(seq); /* read the delta time */ + seq->curPtr = savedPtr; - return TRUE; -} - - -f32 alSeqTicksToSec(ALSeq *seq, s32 ticks, u32 tempo) -{ - return ((f32) (((f32)(ticks) * (f32)(tempo)) / - ((f32)(seq->division) * 1000000.0))); + return TRUE; } -u32 alSeqSecToTicks(ALSeq *seq, f32 sec, u32 tempo) -{ +f32 alSeqTicksToSec(ALSeq* seq, s32 ticks, u32 tempo) { + return ((f32)(((f32)(ticks) * (f32)(tempo)) / ((f32)(seq->division) * 1000000.0))); +} + +u32 alSeqSecToTicks(ALSeq* seq, f32 sec, u32 tempo) { return (u32)(((sec * 1000000.0) * seq->division) / tempo); } -void alSeqNewMarker(ALSeq *seq, ALSeqMarker *m, u32 ticks) -{ - ALEvent evt; - u8 *savePtr, *lastPtr; - s32 saveTicks, lastTicks; - s16 saveStatus, lastStatus; - +void alSeqNewMarker(ALSeq* seq, ALSeqMarker* m, u32 ticks) { + ALEvent evt; + u8 *savePtr, *lastPtr; + s32 saveTicks, lastTicks; + s16 saveStatus, lastStatus; + /* does not check that ticks is within bounds */ - + if (ticks == 0) { /* common case */ - m->curPtr = seq->trackStart; + m->curPtr = seq->trackStart; m->lastStatus = 0; - m->lastTicks = 0; - m->curTicks = 0; + m->lastTicks = 0; + m->curTicks = 0; return; } else { - savePtr = seq->curPtr; - saveStatus = seq->lastStatus; - saveTicks = seq->lastTicks; + savePtr = seq->curPtr; + saveStatus = seq->lastStatus; + saveTicks = seq->lastTicks; - seq->curPtr = seq->trackStart; + seq->curPtr = seq->trackStart; seq->lastStatus = 0; - seq->lastTicks = 0; + seq->lastTicks = 0; do { - lastPtr = seq->curPtr; + lastPtr = seq->curPtr; lastStatus = seq->lastStatus; - lastTicks = seq->lastTicks; - + lastTicks = seq->lastTicks; + alSeqNextEvent(seq, &evt); - - if (evt.type == AL_SEQ_END_EVT) - { - lastPtr = seq->curPtr; - lastStatus = seq->lastStatus; - lastTicks = seq->lastTicks; + + if (evt.type == AL_SEQ_END_EVT) { + lastPtr = seq->curPtr; + lastStatus = seq->lastStatus; + lastTicks = seq->lastTicks; break; - } - + } + } while (seq->lastTicks < ticks); - m->curPtr = lastPtr; + m->curPtr = lastPtr; m->lastStatus = lastStatus; - m->lastTicks = lastTicks; - m->curTicks = seq->lastTicks; /* Used by test loop condition. */ - - seq->curPtr = savePtr; - seq->lastStatus = saveStatus; - seq->lastTicks = saveTicks; + m->lastTicks = lastTicks; + m->curTicks = seq->lastTicks; /* Used by test loop condition. */ - } + seq->curPtr = savePtr; + seq->lastStatus = saveStatus; + seq->lastTicks = saveTicks; + } } -s32 alSeqGetTicks(ALSeq *seq) -{ +s32 alSeqGetTicks(ALSeq* seq) { return seq->lastTicks; } -void alSeqSetLoc(ALSeq *seq, ALSeqMarker *m) -{ - seq->curPtr = m->curPtr; +void alSeqSetLoc(ALSeq* seq, ALSeqMarker* m) { + seq->curPtr = m->curPtr; seq->lastStatus = m->lastStatus; - seq->lastTicks = m->lastTicks; + seq->lastTicks = m->lastTicks; } -void alSeqGetLoc(ALSeq *seq, ALSeqMarker *m) -{ +void alSeqGetLoc(ALSeq* seq, ALSeqMarker* m) { m->curPtr = seq->curPtr; m->lastStatus = seq->lastStatus; m->lastTicks = seq->lastTicks; } /* non-aligned byte reading routines */ -static u8 read8(ALSeq *seq) -{ +static u8 read8(ALSeq* seq) { return *seq->curPtr++; } -static s16 read16(ALSeq *seq) -{ +static s16 read16(ALSeq* seq) { s16 tmp; - tmp = *seq->curPtr++ << 8; + tmp = *seq->curPtr++ << 8; tmp |= *seq->curPtr++; - + return tmp; } -static s32 read32(ALSeq *seq) -{ +static s32 read32(ALSeq* seq) { s32 tmp; - tmp = *seq->curPtr++ << 24; + tmp = *seq->curPtr++ << 24; tmp |= *seq->curPtr++ << 16; - tmp |= *seq->curPtr++ << 8; + tmp |= *seq->curPtr++ << 8; tmp |= *seq->curPtr++; return tmp; } -static s32 readVarLen(ALSeq *seq) -{ +static s32 readVarLen(ALSeq* seq) { s32 value; s32 c; c = *seq->curPtr++; value = c; - if ( c & 0x80 ) { + if (c & 0x80) { value &= 0x7f; do { c = *seq->curPtr++; @@ -331,13 +310,3 @@ static s32 readVarLen(ALSeq *seq) } return (value); } - - - - - - - - - - diff --git a/src/audio/seq.h b/src/audio/seq.h index 479b339..a93c829 100644 --- a/src/audio/seq.h +++ b/src/audio/seq.h @@ -3,7 +3,6 @@ #ifndef __seq__ #define __seq__ -char __alSeqNextDelta (ALSeq *seq, s32 *pDeltaTicks); - +char __alSeqNextDelta(ALSeq* seq, s32* pDeltaTicks); #endif /* __seq__ */ diff --git a/src/audio/seqp.h b/src/audio/seqp.h index c9ab02b..6c6cdf0 100644 --- a/src/audio/seqp.h +++ b/src/audio/seqp.h @@ -1,37 +1,35 @@ -#define KILL_TIME 50000 /* 50 ms */ +#define KILL_TIME 50000 /* 50 ms */ #ifndef MIN -#define MIN(a,b) (((a)<(b))?(a):(b)) +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif #ifndef MAX -#define MAX(a,b) (((a)>(b))?(a):(b)) +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) #endif -ALVoiceState *__mapVoice(ALSeqPlayer *, u8, u8, u8); -void __unmapVoice(ALSeqPlayer *seqp, ALVoice *voice); -char __voiceNeedsNoteKill(ALSeqPlayer *seqp, ALVoice *voice, ALMicroTime killTime); /* sct 1/5/96 */ +ALVoiceState* __mapVoice(ALSeqPlayer*, u8, u8, u8); +void __unmapVoice(ALSeqPlayer* seqp, ALVoice* voice); +char __voiceNeedsNoteKill(ALSeqPlayer* seqp, ALVoice* voice, ALMicroTime killTime); /* sct 1/5/96 */ -ALVoiceState *__lookupVoice(ALSeqPlayer *, u8, u8); -ALSound *__lookupSound(ALSeqPlayer *, u8, u8, u8); -ALSound *__lookupSoundQuick(ALSeqPlayer *, u8, u8, u8); +ALVoiceState* __lookupVoice(ALSeqPlayer*, u8, u8); +ALSound* __lookupSound(ALSeqPlayer*, u8, u8, u8); +ALSound* __lookupSoundQuick(ALSeqPlayer*, u8, u8, u8); -s16 __vsVol(ALVoiceState *voice, ALSeqPlayer *seqp); -ALMicroTime __vsDelta(ALVoiceState *voice, ALMicroTime t); -ALPan __vsPan(ALVoiceState *voice, ALSeqPlayer *seqp); +s16 __vsVol(ALVoiceState* voice, ALSeqPlayer* seqp); +ALMicroTime __vsDelta(ALVoiceState* voice, ALMicroTime t); +ALPan __vsPan(ALVoiceState* voice, ALSeqPlayer* seqp); -void __initFromBank(ALSeqPlayer *seqp, ALBank *b); -void __initChanState(ALSeqPlayer *seqp); -void __resetPerfChanState(ALSeqPlayer *seqp, s32 chan); -void __setInstChanState(ALSeqPlayer *seqp, ALInstrument *inst, s32 chan); +void __initFromBank(ALSeqPlayer* seqp, ALBank* b); +void __initChanState(ALSeqPlayer* seqp); +void __resetPerfChanState(ALSeqPlayer* seqp, s32 chan); +void __setInstChanState(ALSeqPlayer* seqp, ALInstrument* inst, s32 chan); -void __seqpPrintVoices(ALSeqPlayer *); -void __seqpReleaseVoice(ALSeqPlayer *seqp, ALVoice *voice, - ALMicroTime deltaTime); +void __seqpPrintVoices(ALSeqPlayer*); +void __seqpReleaseVoice(ALSeqPlayer* seqp, ALVoice* voice, ALMicroTime deltaTime); -void __seqpStopOsc(ALSeqPlayer *seqp, ALVoiceState *vs); - -void __postNextSeqEvent(ALSeqPlayer *seqp); /* sct 11/7/95 */ +void __seqpStopOsc(ALSeqPlayer* seqp, ALVoiceState* vs); +void __postNextSeqEvent(ALSeqPlayer* seqp); /* sct 11/7/95 */ diff --git a/src/audio/seqpdelete.c b/src/audio/seqpdelete.c index 142f190..8f201cb 100644 --- a/src/audio/seqpdelete.c +++ b/src/audio/seqpdelete.c @@ -23,8 +23,7 @@ // TODO: this comes from a header #ident "$Revision: 1.17 $" -void alSeqpDelete(ALSeqPlayer *seqp) -{ +void alSeqpDelete(ALSeqPlayer* seqp) { /* sct 1/4/96 - If the sequence player isn't stopped, then you may end up with stuck notes. Application should check state before calling this routine to be sure. */ @@ -33,7 +32,5 @@ void alSeqpDelete(ALSeqPlayer *seqp) #endif assert(seqp->state == AL_STOPPED); - alSynRemovePlayer(seqp->drvr, &seqp->node); } - diff --git a/src/audio/seqpgetchlvol.c b/src/audio/seqpgetchlvol.c index e205651..0096ec2 100644 --- a/src/audio/seqpgetchlvol.c +++ b/src/audio/seqpgetchlvol.c @@ -20,8 +20,6 @@ #include -u8 alSeqpGetChlVol(ALSeqPlayer *seqp, u8 chan) -{ +u8 alSeqpGetChlVol(ALSeqPlayer* seqp, u8 chan) { return seqp->chanState[chan].vol; } - diff --git a/src/audio/seqpgetfxmix.c b/src/audio/seqpgetfxmix.c index 5d7ee3f..5ea563a 100644 --- a/src/audio/seqpgetfxmix.c +++ b/src/audio/seqpgetfxmix.c @@ -20,8 +20,6 @@ #include -u8 alSeqpGetChlFXMix(ALSeqPlayer *seqp, u8 chan) -{ +u8 alSeqpGetChlFXMix(ALSeqPlayer* seqp, u8 chan) { return seqp->chanState[chan].fxmix; } - diff --git a/src/audio/seqpgetpan.c b/src/audio/seqpgetpan.c index 23f1067..f3e494e 100644 --- a/src/audio/seqpgetpan.c +++ b/src/audio/seqpgetpan.c @@ -20,8 +20,6 @@ #include -ALPan alSeqpGetChlPan(ALSeqPlayer *seqp, u8 chan) -{ +ALPan alSeqpGetChlPan(ALSeqPlayer* seqp, u8 chan) { return seqp->chanState[chan].pan; } - diff --git a/src/audio/seqpgetpriority.c b/src/audio/seqpgetpriority.c index e6f77a4..6b59fe2 100644 --- a/src/audio/seqpgetpriority.c +++ b/src/audio/seqpgetpriority.c @@ -20,7 +20,6 @@ #include -u8 alSeqpGetChlPriority(ALSeqPlayer *seqp, u8 chan) -{ +u8 alSeqpGetChlPriority(ALSeqPlayer* seqp, u8 chan) { return seqp->chanState[chan].priority; } diff --git a/src/audio/seqpgetprogram.c b/src/audio/seqpgetprogram.c index d421cde..25a9003 100644 --- a/src/audio/seqpgetprogram.c +++ b/src/audio/seqpgetprogram.c @@ -22,21 +22,19 @@ #include -s32 alSeqpGetChlProgram(ALSeqPlayer *seqp, u8 chan) +s32 alSeqpGetChlProgram(ALSeqPlayer* seqp, u8 chan) { - s32 i; - ALBank *b = seqp->bank; - ALInstrument *inst; + s32 i; + ALBank* b = seqp->bank; + ALInstrument* inst; ALChanState s; s = seqp->chanState[chan]; - for (i=0; iinstCount; i++){ + for (i = 0; i < b->instCount; i++) { inst = b->instArray[i]; if (inst == s.instrument) return i; } - return(-1); - + return (-1); } - diff --git a/src/audio/seqpgetseq.c b/src/audio/seqpgetseq.c index d35ea19..f86f7d9 100644 --- a/src/audio/seqpgetseq.c +++ b/src/audio/seqpgetseq.c @@ -22,8 +22,6 @@ #include -ALSeq *alSeqpGetSeq(ALSeqPlayer *seqp) -{ +ALSeq* alSeqpGetSeq(ALSeqPlayer* seqp) { return seqp->target; } - diff --git a/src/audio/seqpgetstate.c b/src/audio/seqpgetstate.c index 8d36b49..87e1481 100644 --- a/src/audio/seqpgetstate.c +++ b/src/audio/seqpgetstate.c @@ -22,8 +22,6 @@ #include -s32 alSeqpGetState(ALSeqPlayer *seqp) -{ +s32 alSeqpGetState(ALSeqPlayer* seqp) { return seqp->state; } - diff --git a/src/audio/seqpgettempo.c b/src/audio/seqpgettempo.c index 41cd4b4..dc2e22f 100644 --- a/src/audio/seqpgettempo.c +++ b/src/audio/seqpgettempo.c @@ -20,12 +20,10 @@ #include -s32 alSeqpGetTempo(ALSeqPlayer *seqp) -{ +s32 alSeqpGetTempo(ALSeqPlayer* seqp) { /* sct 1/8/96 - If no target sequence has been set, just return zero (instead of crashing). */ if (seqp->target == NULL) - return 0; + return 0; - return seqp->uspt/seqp->target->qnpt; + return seqp->uspt / seqp->target->qnpt; } - diff --git a/src/audio/seqpgetvol.c b/src/audio/seqpgetvol.c index 43a3bb8..5499074 100644 --- a/src/audio/seqpgetvol.c +++ b/src/audio/seqpgetvol.c @@ -20,8 +20,6 @@ #include -s16 alSeqpGetVol(ALSeqPlayer *seqp) -{ +s16 alSeqpGetVol(ALSeqPlayer* seqp) { return seqp->vol; } - diff --git a/src/audio/seqplayer.c b/src/audio/seqplayer.c index 9d77a6f..2d67ea8 100644 --- a/src/audio/seqplayer.c +++ b/src/audio/seqplayer.c @@ -43,54 +43,52 @@ // TODO: this comes from a header #ident "$Revision: 1.17 $" - -static ALMicroTime __seqpVoiceHandler(void *node); -static void __handleMIDIMsg(ALSeqPlayer *seqp, ALEvent *event); -static void __handleMetaMsg(ALSeqPlayer *seqp, ALEvent *event); -static void __handleNextSeqEvent(ALSeqPlayer *seqp); -static void __setUsptFromTempo(ALSeqPlayer *seqp, f32 tempo); /* sct 1/8/96 */ +static ALMicroTime __seqpVoiceHandler(void* node); +static void __handleMIDIMsg(ALSeqPlayer* seqp, ALEvent* event); +static void __handleMetaMsg(ALSeqPlayer* seqp, ALEvent* event); +static void __handleNextSeqEvent(ALSeqPlayer* seqp); +static void __setUsptFromTempo(ALSeqPlayer* seqp, f32 tempo); /* sct 1/8/96 */ /* * Sequence Player public functions */ -void alSeqpNew(ALSeqPlayer *seqp, ALSeqpConfig *c) -{ - s32 i; - ALEventListItem *items; - ALVoiceState *vs; - ALVoiceState *voices; - ALHeap *hp = c->heap; - +void alSeqpNew(ALSeqPlayer* seqp, ALSeqpConfig* c) { + s32 i; + ALEventListItem* items; + ALVoiceState* vs; + ALVoiceState* voices; + ALHeap* hp = c->heap; + /* * initialize member variables */ - seqp->bank = 0; - seqp->target = NULL; - seqp->drvr = &alGlobals->drvr; - seqp->chanMask = 0xff; - seqp->uspt = 488; - seqp->nextDelta = 0; - seqp->state = AL_STOPPED; - seqp->vol = 0x7FFF; /* full volume */ - seqp->debugFlags = c->debugFlags; - seqp->frameTime = AL_USEC_PER_FRAME; /* should get this from driver */ - seqp->curTime = 0; - seqp->initOsc = c->initOsc; - seqp->updateOsc = c->updateOsc; - seqp->stopOsc = c->stopOsc; + seqp->bank = 0; + seqp->target = NULL; + seqp->drvr = &alGlobals->drvr; + seqp->chanMask = 0xff; + seqp->uspt = 488; + seqp->nextDelta = 0; + seqp->state = AL_STOPPED; + seqp->vol = 0x7FFF; /* full volume */ + seqp->debugFlags = c->debugFlags; + seqp->frameTime = AL_USEC_PER_FRAME; /* should get this from driver */ + seqp->curTime = 0; + seqp->initOsc = c->initOsc; + seqp->updateOsc = c->updateOsc; + seqp->stopOsc = c->stopOsc; seqp->loopStart = 0; - seqp->loopEnd = 0; - seqp->loopCount = 0; /* -1 = loop forever, 0 = no loop */ - + seqp->loopEnd = 0; + seqp->loopCount = 0; /* -1 = loop forever, 0 = no loop */ + seqp->nextEvent.type = AL_SEQP_API_EVT; /* start the voice handler "spinning" */ - + /* * init the channel state */ seqp->maxChannels = c->maxChannels; - seqp->chanState = alHeapAlloc(hp, c->maxChannels, sizeof(ALChanState) ); - __initChanState(seqp); /* sct 11/6/95 */ - + seqp->chanState = alHeapAlloc(hp, c->maxChannels, sizeof(ALChanState)); + __initChanState(seqp); /* sct 11/6/95 */ + /* * init the voice state array */ @@ -99,12 +97,12 @@ void alSeqpNew(ALSeqPlayer *seqp, ALSeqpConfig *c) for (i = 0; i < c->maxVoices; i++) { vs = &voices[i]; vs->next = seqp->vFreeList; - seqp->vFreeList = vs; + seqp->vFreeList = vs; } - + seqp->vAllocHead = 0; - seqp->vAllocTail = 0; - + seqp->vAllocTail = 0; + /* * init the event queue */ @@ -114,8 +112,8 @@ void alSeqpNew(ALSeqPlayer *seqp, ALSeqpConfig *c) /* * add ourselves to the driver */ - seqp->node.next = NULL; - seqp->node.handler = __seqpVoiceHandler; + seqp->node.next = NULL; + seqp->node.handler = __seqpVoiceHandler; seqp->node.clientData = seqp; alSynAddPlayer(&alGlobals->drvr, &seqp->node); } @@ -123,221 +121,209 @@ void alSeqpNew(ALSeqPlayer *seqp, ALSeqpConfig *c) /************************************************************* * private routines or driver callback routines *************************************************************/ -ALMicroTime __seqpVoiceHandler(void *node) -{ - ALSeqPlayer *seqp = (ALSeqPlayer *) node; - ALEvent evt; - ALVoice *voice; - ALMicroTime delta; - ALVoiceState *vs; - void *oscState; - f32 oscValue; - u8 chan; - +ALMicroTime __seqpVoiceHandler(void* node) { + ALSeqPlayer* seqp = (ALSeqPlayer*)node; + ALEvent evt; + ALVoice* voice; + ALMicroTime delta; + ALVoiceState* vs; + void* oscState; + f32 oscValue; + u8 chan; + do { - switch (seqp->nextEvent.type) { + switch (seqp->nextEvent.type) { - case (AL_SEQ_REF_EVT): - __handleNextSeqEvent(seqp); - break; + case (AL_SEQ_REF_EVT): + __handleNextSeqEvent(seqp); + break; - case (AL_SEQP_API_EVT): - evt.type = AL_SEQP_API_EVT; - alEvtqPostEvent(&seqp->evtq, (ALEvent *)&evt, seqp->frameTime); - break; + case (AL_SEQP_API_EVT): + evt.type = AL_SEQP_API_EVT; + alEvtqPostEvent(&seqp->evtq, (ALEvent*)&evt, seqp->frameTime); + break; - case (AL_NOTE_END_EVT): - voice = seqp->nextEvent.msg.note.voice; - alSynStopVoice(seqp->drvr, voice); - alSynFreeVoice(seqp->drvr, voice); - vs = (ALVoiceState *)voice->clientPrivate; - if(vs->flags) - __seqpStopOsc((ALSeqPlayer*)seqp,vs); - __unmapVoice(seqp, voice); - break; + case (AL_NOTE_END_EVT): + voice = seqp->nextEvent.msg.note.voice; + alSynStopVoice(seqp->drvr, voice); + alSynFreeVoice(seqp->drvr, voice); + vs = (ALVoiceState*)voice->clientPrivate; + if (vs->flags) + __seqpStopOsc((ALSeqPlayer*)seqp, vs); + __unmapVoice(seqp, voice); + break; - case (AL_SEQP_ENV_EVT): - voice = seqp->nextEvent.msg.vol.voice; - vs = (ALVoiceState *)voice->clientPrivate; - - if (vs->envPhase == AL_PHASE_ATTACK) - vs->envPhase = AL_PHASE_DECAY; + case (AL_SEQP_ENV_EVT): + voice = seqp->nextEvent.msg.vol.voice; + vs = (ALVoiceState*)voice->clientPrivate; - delta = seqp->nextEvent.msg.vol.delta; - vs->envGain = seqp->nextEvent.msg.vol.vol; - vs->envEndTime = seqp->curTime + delta; - alSynSetVol(seqp->drvr, voice, __vsVol(vs, seqp), delta); - break; + if (vs->envPhase == AL_PHASE_ATTACK) + vs->envPhase = AL_PHASE_DECAY; - case (AL_TREM_OSC_EVT): - vs = seqp->nextEvent.msg.osc.vs; - oscState = seqp->nextEvent.msg.osc.oscState; - delta = (*seqp->updateOsc)(oscState,&oscValue); - vs->tremelo = (u8)oscValue; - alSynSetVol(seqp->drvr, &vs->voice, __vsVol(vs,seqp), - __vsDelta(vs,seqp->curTime)); - evt.type = AL_TREM_OSC_EVT; - evt.msg.osc.vs = vs; - evt.msg.osc.oscState = oscState; - alEvtqPostEvent(&seqp->evtq, &evt, delta); - break; - - case (AL_VIB_OSC_EVT): - vs = seqp->nextEvent.msg.osc.vs; - oscState = seqp->nextEvent.msg.osc.oscState; - chan = seqp->nextEvent.msg.osc.chan; - delta = (*seqp->updateOsc)(oscState,&oscValue); - vs->vibrato = oscValue; - alSynSetPitch(seqp->drvr, &vs->voice, vs->pitch * vs->vibrato - * seqp->chanState[chan].pitchBend); - evt.type = AL_VIB_OSC_EVT; - evt.msg.osc.vs = vs; - evt.msg.osc.oscState = oscState; - evt.msg.osc.chan = chan; - alEvtqPostEvent(&seqp->evtq, &evt, delta); - break; - - case (AL_SEQP_MIDI_EVT): - __handleMIDIMsg(seqp, &seqp->nextEvent); - break; + delta = seqp->nextEvent.msg.vol.delta; + vs->envGain = seqp->nextEvent.msg.vol.vol; + vs->envEndTime = seqp->curTime + delta; + alSynSetVol(seqp->drvr, voice, __vsVol(vs, seqp), delta); + break; - case (AL_SEQP_META_EVT): - __handleMetaMsg(seqp, &seqp->nextEvent); - break; - - case (AL_SEQP_PLAY_EVT): - if (seqp->state != AL_PLAYING) - { - seqp->state = AL_PLAYING; - __postNextSeqEvent(seqp); /* seqp must be AL_PLAYING before we call this routine. */ - } - break; + case (AL_TREM_OSC_EVT): + vs = seqp->nextEvent.msg.osc.vs; + oscState = seqp->nextEvent.msg.osc.oscState; + delta = (*seqp->updateOsc)(oscState, &oscValue); + vs->tremelo = (u8)oscValue; + alSynSetVol(seqp->drvr, &vs->voice, __vsVol(vs, seqp), __vsDelta(vs, seqp->curTime)); + evt.type = AL_TREM_OSC_EVT; + evt.msg.osc.vs = vs; + evt.msg.osc.oscState = oscState; + alEvtqPostEvent(&seqp->evtq, &evt, delta); + break; - case (AL_SEQP_STOP_EVT): - if ( seqp->state == AL_STOPPING ) - { - for (vs = seqp->vAllocHead; vs != 0; vs = seqp->vAllocHead) - { - alSynStopVoice(seqp->drvr, &vs->voice); - alSynFreeVoice(seqp->drvr, &vs->voice); - if(vs->flags) - __seqpStopOsc((ALSeqPlayer*)seqp,vs); - __unmapVoice((ALSeqPlayer*)seqp, &vs->voice); - } + case (AL_VIB_OSC_EVT): + vs = seqp->nextEvent.msg.osc.vs; + oscState = seqp->nextEvent.msg.osc.oscState; + chan = seqp->nextEvent.msg.osc.chan; + delta = (*seqp->updateOsc)(oscState, &oscValue); + vs->vibrato = oscValue; + alSynSetPitch(seqp->drvr, &vs->voice, vs->pitch * vs->vibrato * seqp->chanState[chan].pitchBend); + evt.type = AL_VIB_OSC_EVT; + evt.msg.osc.vs = vs; + evt.msg.osc.oscState = oscState; + evt.msg.osc.chan = chan; + alEvtqPostEvent(&seqp->evtq, &evt, delta); + break; - seqp->curTime = 0; - seqp->state = AL_STOPPED; + case (AL_SEQP_MIDI_EVT): + __handleMIDIMsg(seqp, &seqp->nextEvent); + break; - /* alEvtqFlush(&seqp->evtq); - Don't flush event - queue anymore. */ - /* sct 1/3/96 - Don't overwrite nextEvent with - AL_SEQP_API_EVT or set nextDelta to - AL_USEC_PER_FRAME since we're not stopping event - processing. */ - /* sct 1/3/96 - Don't return here since we keep - processing events as usual. */ - } - break; + case (AL_SEQP_META_EVT): + __handleMetaMsg(seqp, &seqp->nextEvent); + break; - case (AL_SEQP_STOPPING_EVT): - if (seqp->state == AL_PLAYING) - { - /* - * sct 12/29/95 - Remove events associated with the - * stopping sequence. Note that flushing - * AL_SEQP_MIDI_EVTs may flush events that were - * posted after the call to alSeqpStop, so the - * application must queue these events either when - * the player is fully stopped, or when it is - * playing. - */ - alEvtqFlushType(&seqp->evtq, AL_SEQ_REF_EVT); - alEvtqFlushType(&seqp->evtq, AL_SEQP_MIDI_EVT); + case (AL_SEQP_PLAY_EVT): + if (seqp->state != AL_PLAYING) { + seqp->state = AL_PLAYING; + __postNextSeqEvent(seqp); /* seqp must be AL_PLAYING before we call this routine. */ + } + break; - /* - * sct 1/3/96 - Check to see which voices need to be - * killed and release them. Unkilled voices should - * have note end events occurring prior to - * KILL_TIME. - */ - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) - { - if (__voiceNeedsNoteKill (seqp, &vs->voice, KILL_TIME)) - __seqpReleaseVoice(seqp, &vs->voice, KILL_TIME); - } + case (AL_SEQP_STOP_EVT): + if (seqp->state == AL_STOPPING) { + for (vs = seqp->vAllocHead; vs != 0; vs = seqp->vAllocHead) { + alSynStopVoice(seqp->drvr, &vs->voice); + alSynFreeVoice(seqp->drvr, &vs->voice); + if (vs->flags) + __seqpStopOsc((ALSeqPlayer*)seqp, vs); + __unmapVoice((ALSeqPlayer*)seqp, &vs->voice); + } - seqp->state = AL_STOPPING; - evt.type = AL_SEQP_STOP_EVT; - alEvtqPostEvent(&seqp->evtq, &evt, AL_EVTQ_END); - } - break; + seqp->curTime = 0; + seqp->state = AL_STOPPED; - case (AL_SEQP_VOL_EVT): - seqp->vol = seqp->nextEvent.msg.spvol.vol; - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { - alSynSetVol(seqp->drvr, &vs->voice, __vsVol(vs, seqp), - __vsDelta(vs, seqp->curTime)); - } - break; - - case (AL_SEQP_LOOP_EVT): - seqp->loopStart = seqp->nextEvent.msg.loop.start; - seqp->loopEnd = seqp->nextEvent.msg.loop.end; - seqp->loopCount = seqp->nextEvent.msg.loop.count; - break; + /* alEvtqFlush(&seqp->evtq); - Don't flush event + queue anymore. */ + /* sct 1/3/96 - Don't overwrite nextEvent with + AL_SEQP_API_EVT or set nextDelta to + AL_USEC_PER_FRAME since we're not stopping event + processing. */ + /* sct 1/3/96 - Don't return here since we keep + processing events as usual. */ + } + break; - case (AL_SEQP_PRIORITY_EVT): - chan = seqp->nextEvent.msg.sppriority.chan; - seqp->chanState[chan].priority = seqp->nextEvent.msg.sppriority.priority; - break; - case (AL_SEQP_SEQ_EVT): + case (AL_SEQP_STOPPING_EVT): + if (seqp->state == AL_PLAYING) { + /* + * sct 12/29/95 - Remove events associated with the + * stopping sequence. Note that flushing + * AL_SEQP_MIDI_EVTs may flush events that were + * posted after the call to alSeqpStop, so the + * application must queue these events either when + * the player is fully stopped, or when it is + * playing. + */ + alEvtqFlushType(&seqp->evtq, AL_SEQ_REF_EVT); + alEvtqFlushType(&seqp->evtq, AL_SEQP_MIDI_EVT); + + /* + * sct 1/3/96 - Check to see which voices need to be + * killed and release them. Unkilled voices should + * have note end events occurring prior to + * KILL_TIME. + */ + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + if (__voiceNeedsNoteKill(seqp, &vs->voice, KILL_TIME)) + __seqpReleaseVoice(seqp, &vs->voice, KILL_TIME); + } + + seqp->state = AL_STOPPING; + evt.type = AL_SEQP_STOP_EVT; + alEvtqPostEvent(&seqp->evtq, &evt, AL_EVTQ_END); + } + break; + + case (AL_SEQP_VOL_EVT): + seqp->vol = seqp->nextEvent.msg.spvol.vol; + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + alSynSetVol(seqp->drvr, &vs->voice, __vsVol(vs, seqp), __vsDelta(vs, seqp->curTime)); + } + break; + + case (AL_SEQP_LOOP_EVT): + seqp->loopStart = seqp->nextEvent.msg.loop.start; + seqp->loopEnd = seqp->nextEvent.msg.loop.end; + seqp->loopCount = seqp->nextEvent.msg.loop.count; + break; + + case (AL_SEQP_PRIORITY_EVT): + chan = seqp->nextEvent.msg.sppriority.chan; + seqp->chanState[chan].priority = seqp->nextEvent.msg.sppriority.priority; + break; + case (AL_SEQP_SEQ_EVT): #if BUILD_VERSION < VERSION_J // Adjust line numbers to match asserts #line 295 #endif - assert(seqp->state != AL_PLAYING); /* Must be done playing to change sequences. */ + assert(seqp->state != AL_PLAYING); /* Must be done playing to change sequences. */ - - seqp->target = seqp->nextEvent.msg.spseq.seq; - __setUsptFromTempo (seqp, 500000.0); - if (seqp->bank) - __initFromBank(seqp, seqp->bank); - break; - case (AL_SEQP_BANK_EVT): + seqp->target = seqp->nextEvent.msg.spseq.seq; + __setUsptFromTempo(seqp, 500000.0); + if (seqp->bank) + __initFromBank(seqp, seqp->bank); + break; + case (AL_SEQP_BANK_EVT): #if BUILD_VERSION < VERSION_J #line 304 #endif - assert(seqp->state == AL_STOPPED); /* Must be fully stopped to change banks. */ + assert(seqp->state == AL_STOPPED); /* Must be fully stopped to change banks. */ - seqp->bank = seqp->nextEvent.msg.spbank.bank; - __initFromBank(seqp, seqp->bank); - break; + seqp->bank = seqp->nextEvent.msg.spbank.bank; + __initFromBank(seqp, seqp->bank); + break; - /* sct 11/6/95 - these events should now be handled by __handleNextSeqEvent */ - case (AL_SEQ_END_EVT): - case (AL_TEMPO_EVT): - case (AL_SEQ_MIDI_EVT): + /* sct 11/6/95 - these events should now be handled by __handleNextSeqEvent */ + case (AL_SEQ_END_EVT): + case (AL_TEMPO_EVT): + case (AL_SEQ_MIDI_EVT): #if BUILD_VERSION < VERSION_J #line 314 #endif - assert(FALSE); + assert(FALSE); - - break; + break; } - seqp->nextDelta = alEvtqNextEvent (&seqp->evtq, &seqp->nextEvent); - + seqp->nextDelta = alEvtqNextEvent(&seqp->evtq, &seqp->nextEvent); + } while (seqp->nextDelta == 0); /* * assume that next callback won't be more than half an hour away */ - seqp->curTime += seqp->nextDelta; /* Update the player's current time. */ + seqp->curTime += seqp->nextDelta; /* Update the player's current time. */ return seqp->nextDelta; } - /* Calculates the delta time in ticks until the next sequence event taking into account loop points, and posts a @@ -348,34 +334,31 @@ ALMicroTime __seqpVoiceHandler(void *node) sct 11/7/95 */ -void __postNextSeqEvent(ALSeqPlayer *seqp) -{ - ALEvent evt; - s32 deltaTicks; - ALSeq *seq = seqp->target; +void __postNextSeqEvent(ALSeqPlayer* seqp) { + ALEvent evt; + s32 deltaTicks; + ALSeq* seq = seqp->target; /* sct 1/5/96 - Do nothing if we're not playing or don't have a target sequence. */ if ((seqp->state != AL_PLAYING) || (seq == NULL)) - return; + return; /* Get the next event time in ticks. */ /* If false is returned, then there is no next delta (ie. end of sequence reached). */ if (!__alSeqNextDelta(seq, &deltaTicks)) - return; + return; /* Handle loops. */ - if (seqp->loopCount) - { + if (seqp->loopCount) { /* Assume that the loop end falls on a MIDI event. Delta time will be correct even if we loop */ - if (alSeqGetTicks(seq) + deltaTicks >= seqp->loopEnd->curTicks) - { - alSeqSetLoc(seq, seqp->loopStart); + if (alSeqGetTicks(seq) + deltaTicks >= seqp->loopEnd->curTicks) { + alSeqSetLoc(seq, seqp->loopStart); - if (seqp->loopCount != -1) - seqp->loopCount--; - } - } + if (seqp->loopCount != -1) + seqp->loopCount--; + } + } evt.type = AL_SEQ_REF_EVT; alEvtqPostEvent(&seqp->evtq, &evt, deltaTicks * seqp->uspt); @@ -388,106 +371,99 @@ void __postNextSeqEvent(ALSeqPlayer *seqp) sct 11/7/95 */ -static void -__handleNextSeqEvent(ALSeqPlayer *seqp) -{ - ALEvent evt; +static void __handleNextSeqEvent(ALSeqPlayer* seqp) { + ALEvent evt; /* sct 1/5/96 - Do nothing if we don't have a target sequence. */ if (seqp->target == NULL) - return; + return; alSeqNextEvent(seqp->target, &evt); - switch (evt.type) - { - case AL_SEQ_MIDI_EVT: - __handleMIDIMsg(seqp, &evt); - __postNextSeqEvent(seqp); - break; + switch (evt.type) { + case AL_SEQ_MIDI_EVT: + __handleMIDIMsg(seqp, &evt); + __postNextSeqEvent(seqp); + break; - case AL_TEMPO_EVT: - __handleMetaMsg(seqp, &evt); - __postNextSeqEvent(seqp); - break; + case AL_TEMPO_EVT: + __handleMetaMsg(seqp, &evt); + __postNextSeqEvent(seqp); + break; - case AL_SEQ_END_EVT: - seqp->state = AL_STOPPING; - evt.type = AL_SEQP_STOP_EVT; - alEvtqPostEvent(&seqp->evtq, &evt, AL_EVTQ_END); - break; + case AL_SEQ_END_EVT: + seqp->state = AL_STOPPING; + evt.type = AL_SEQP_STOP_EVT; + alEvtqPostEvent(&seqp->evtq, &evt, AL_EVTQ_END); + break; - default: + default: #if BUILD_VERSION < VERSION_J #line 411 #endif - assert(FALSE); /* Sequence event type not supported. */ + assert(FALSE); /* Sequence event type not supported. */ #if BUILD_VERSION >= VERSION_J - break; + break; #endif } } -void __handleMIDIMsg(ALSeqPlayer *seqp, ALEvent *event) -{ - ALVoice *voice; - ALVoiceState *vs; - s32 status; - u8 chan; - u8 key; - u8 vel; - u8 byte1; - u8 byte2; - ALMIDIEvent *midi = &event->msg.midi; - s16 vol; - ALEvent evt; - ALMicroTime deltaTime; - ALVoiceState *vstate; - ALPan pan; - ALFxRef fxref; +void __handleMIDIMsg(ALSeqPlayer* seqp, ALEvent* event) { + ALVoice* voice; + ALVoiceState* vs; + s32 status; + u8 chan; + u8 key; + u8 vel; + u8 byte1; + u8 byte2; + ALMIDIEvent* midi = &event->msg.midi; + s16 vol; + ALEvent evt; + ALMicroTime deltaTime; + ALVoiceState* vstate; + ALPan pan; + ALFxRef fxref; #if BUILD_VERSION < VERSION_J #line 434 #endif /* sct 12/15/95 - Fixed assert to also allow seqp midi event types. */ assert(event->type == AL_SEQ_MIDI_EVT || event->type == AL_SEQP_MIDI_EVT); - status = midi->status & AL_MIDI_StatusMask; chan = midi->status & AL_MIDI_ChannelMask; - byte1 = key = midi->byte1; - byte2 = vel = midi->byte2; + byte1 = key = midi->byte1; + byte2 = vel = midi->byte2; switch (status) { case (AL_MIDI_NoteOn): - - if (vel != 0) { /* a real note on */ - ALVoiceConfig config; - ALSound *sound; - s16 cents; - f32 pitch,oscValue; - u8 fxmix; - void *oscState; - ALInstrument *inst; - /* If we're not playing, don't process note ons. */ - if (seqp->state != AL_PLAYING) - break; + if (vel != 0) { /* a real note on */ + ALVoiceConfig config; + ALSound* sound; + s16 cents; + f32 pitch, oscValue; + u8 fxmix; + void* oscState; + ALInstrument* inst; + + /* If we're not playing, don't process note ons. */ + if (seqp->state != AL_PLAYING) + break; sound = __lookupSoundQuick(seqp, key, vel, chan); - ALFlagFailIf(!sound, seqp->debugFlags & NO_SOUND_ERR_MASK, - ERR_ALSEQP_NO_SOUND); - + ALFlagFailIf(!sound, seqp->debugFlags & NO_SOUND_ERR_MASK, ERR_ALSEQP_NO_SOUND); + config.priority = seqp->chanState[chan].priority; - config.fxBus = 0; + config.fxBus = 0; config.unityPitch = 0; vstate = __mapVoice(seqp, key, vel, chan); - ALFlagFailIf(!vstate, seqp->debugFlags & NO_VOICE_ERR_MASK, - ERR_ALSEQP_NO_VOICE ); + ALFlagFailIf(!vstate, seqp->debugFlags & NO_VOICE_ERR_MASK, ERR_ALSEQP_NO_VOICE); voice = &vstate->voice; - + alSynAllocVoice(seqp->drvr, voice, &config); /* @@ -499,14 +475,12 @@ void __handleMIDIMsg(ALSeqPlayer *seqp, ALEvent *event) vstate->phase = AL_PHASE_SUSTAIN; else vstate->phase = AL_PHASE_NOTEON; - - cents = (key - sound->keyMap->keyBase) * 100 - + sound->keyMap->detune; - + + cents = (key - sound->keyMap->keyBase) * 100 + sound->keyMap->detune; + vstate->pitch = alCents2Ratio(cents); vstate->envGain = sound->envelope->attackVolume; - vstate->envEndTime = seqp->curTime + - sound->envelope->attackTime; + vstate->envEndTime = seqp->curTime + sound->envelope->attackTime; /* * setup tremelo and vibrato if active @@ -516,17 +490,12 @@ void __handleMIDIMsg(ALSeqPlayer *seqp, ALEvent *event) oscValue = (f32)AL_VOL_FULL; /* set this as a default */ - if(inst->tremType) - { - if(seqp->initOsc) - { - deltaTime = (*seqp->initOsc)(&oscState,&oscValue, - inst->tremType, - inst->tremRate, - inst->tremDepth, - inst->tremDelay); + if (inst->tremType) { + if (seqp->initOsc) { + deltaTime = (*seqp->initOsc)(&oscState, &oscValue, inst->tremType, inst->tremRate, + inst->tremDepth, inst->tremDelay); - if(deltaTime) /* if deltaTime = zero, don't run osc */ + if (deltaTime) /* if deltaTime = zero, don't run osc */ { evt.type = AL_TREM_OSC_EVT; evt.msg.osc.vs = vstate; @@ -538,19 +507,14 @@ void __handleMIDIMsg(ALSeqPlayer *seqp, ALEvent *event) } /* will default if not changed by initOsc */ vstate->tremelo = (u8)oscValue; - + oscValue = 1.0f; /* set this as a default */ - if(inst->vibType) - { - if(seqp->initOsc) - { - deltaTime = (*seqp->initOsc)(&oscState,&oscValue, - inst->vibType, - inst->vibRate, - inst->vibDepth, + if (inst->vibType) { + if (seqp->initOsc) { + deltaTime = (*seqp->initOsc)(&oscState, &oscValue, inst->vibType, inst->vibRate, inst->vibDepth, inst->vibDelay); - if(deltaTime) /* if deltaTime = zero,don't run osc. */ + if (deltaTime) /* if deltaTime = zero,don't run osc. */ { evt.type = AL_VIB_OSC_EVT; evt.msg.osc.vs = vstate; @@ -567,24 +531,22 @@ void __handleMIDIMsg(ALSeqPlayer *seqp, ALEvent *event) /* * calculate the note on parameters */ - pitch = vstate->pitch * seqp->chanState[chan].pitchBend * - vstate->vibrato; + pitch = vstate->pitch * seqp->chanState[chan].pitchBend * vstate->vibrato; fxmix = seqp->chanState[chan].fxmix; - pan = __vsPan(vstate, seqp); - vol = __vsVol(vstate, seqp); - deltaTime = sound->envelope->attackTime; + pan = __vsPan(vstate, seqp); + vol = __vsVol(vstate, seqp); + deltaTime = sound->envelope->attackTime; - alSynStartVoiceParams(seqp->drvr, voice, sound->wavetable, - pitch, vol, pan, fxmix, deltaTime); + alSynStartVoiceParams(seqp->drvr, voice, sound->wavetable, pitch, vol, pan, fxmix, deltaTime); /* * set up callbacks for envelope */ - evt.type = AL_SEQP_ENV_EVT; + evt.type = AL_SEQP_ENV_EVT; evt.msg.vol.voice = voice; - evt.msg.vol.vol = sound->envelope->decayVolume; + evt.msg.vol.vol = sound->envelope->decayVolume; evt.msg.vol.delta = sound->envelope->decayTime; deltaTime = sound->envelope->attackTime; - + alEvtqPostEvent(&seqp->evtq, &evt, deltaTime); break; @@ -594,244 +556,223 @@ void __handleMIDIMsg(ALSeqPlayer *seqp, ALEvent *event) * NOTE: intentional fall-through for note on with zero * velocity */ - + case (AL_MIDI_NoteOff): vstate = __lookupVoice(seqp, key, chan); - ALFlagFailIf(!vstate, (seqp->debugFlags & NOTE_OFF_ERR_MASK), - ERR_ALSEQP_OFF_VOICE ); + ALFlagFailIf(!vstate, (seqp->debugFlags & NOTE_OFF_ERR_MASK), ERR_ALSEQP_OFF_VOICE); if (vstate->phase == AL_PHASE_SUSTAIN) vstate->phase = AL_PHASE_SUSTREL; else { vstate->phase = AL_PHASE_RELEASE; - __seqpReleaseVoice(seqp, &vstate->voice, - vstate->sound->envelope->releaseTime); + __seqpReleaseVoice(seqp, &vstate->voice, vstate->sound->envelope->releaseTime); } break; - - case (AL_MIDI_PolyKeyPressure): - /* - * Aftertouch per key (hardwired to volume). Note that - * aftertouch affects only notes that are already - * sounding. - */ - vstate = __lookupVoice(seqp, key, chan); - ALFailIf(!vstate, ERR_ALSEQP_POLY_VOICE ); - vstate->velocity = byte2; - alSynSetVol(seqp->drvr, &vstate->voice, __vsVol(vstate, seqp), - __vsDelta(vstate, seqp->curTime)); - break; + case (AL_MIDI_PolyKeyPressure): + /* + * Aftertouch per key (hardwired to volume). Note that + * aftertouch affects only notes that are already + * sounding. + */ + vstate = __lookupVoice(seqp, key, chan); + ALFailIf(!vstate, ERR_ALSEQP_POLY_VOICE); + + vstate->velocity = byte2; + alSynSetVol(seqp->drvr, &vstate->voice, __vsVol(vstate, seqp), __vsDelta(vstate, seqp->curTime)); + break; case (AL_MIDI_ChannelPressure): - /* + /* * Aftertouch per channel (hardwired to volume). Note that * aftertouch affects only notes that are already * sounding. */ - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { - if (vs->channel == chan) { - vs->velocity = byte1; - alSynSetVol(seqp->drvr, &vs->voice, __vsVol(vs, seqp), - __vsDelta(vs, seqp->curTime)); - } - } + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + if (vs->channel == chan) { + vs->velocity = byte1; + alSynSetVol(seqp->drvr, &vs->voice, __vsVol(vs, seqp), __vsDelta(vs, seqp->curTime)); + } + } break; - + case (AL_MIDI_ControlChange): - switch (byte1) { - - case (AL_MIDI_PAN_CTRL): - seqp->chanState[chan].pan = byte2; - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { - if (vs->channel == chan) { - pan = __vsPan(vs, seqp); - alSynSetPan(seqp->drvr, &vs->voice, pan); - } - } - break; + switch (byte1) { - case (AL_MIDI_VOLUME_CTRL): - seqp->chanState[chan].vol = byte2; - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { - if ((vs->channel == chan) && - (vs->envPhase != AL_PHASE_RELEASE)) - { - vol = __vsVol(vs, seqp); - alSynSetVol(seqp->drvr, &vs->voice, vol, - __vsDelta(vs, seqp->curTime)); - } - } - break; - case (AL_MIDI_PRIORITY_CTRL): - /* leave current voices where they are */ - seqp->chanState[chan].priority = byte2; - break; - case (AL_MIDI_SUSTAIN_CTRL): - seqp->chanState[chan].sustain = byte2; - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { - if ((vs->channel == chan) && - (vs->phase != AL_PHASE_RELEASE)) { - if ( byte2 > AL_SUSTAIN ) { - /* - * sustain pedal down - */ - if (vs->phase == AL_PHASE_NOTEON) - vs->phase = AL_PHASE_SUSTAIN; - } else { - /* - * sustain pedal up - */ - if (vs->phase == AL_PHASE_SUSTAIN) - vs->phase = AL_PHASE_NOTEON; - else if(vs->phase == AL_PHASE_SUSTREL) { - vs->phase = AL_PHASE_RELEASE; - __seqpReleaseVoice(seqp, &vs->voice, - vs->sound->envelope->releaseTime); - } - } - } - } - break; - - case (AL_MIDI_FX1_CTRL): - seqp->chanState[chan].fxmix = byte2; - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { - if (vs->channel == chan) { - alSynSetFXMix(seqp->drvr, &vs->voice, byte2); - } - } - break; + case (AL_MIDI_PAN_CTRL): + seqp->chanState[chan].pan = byte2; + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + if (vs->channel == chan) { + pan = __vsPan(vs, seqp); + alSynSetPan(seqp->drvr, &vs->voice, pan); + } + } + break; - case (AL_MIDI_FX_CTRL_0): - case (AL_MIDI_FX_CTRL_1): - case (AL_MIDI_FX_CTRL_2): - case (AL_MIDI_FX_CTRL_3): - case (AL_MIDI_FX_CTRL_4): - case (AL_MIDI_FX_CTRL_5): - case (AL_MIDI_FX_CTRL_6): - case (AL_MIDI_FX_CTRL_7): -#if 0 /* fx control not implemented */ + case (AL_MIDI_VOLUME_CTRL): + seqp->chanState[chan].vol = byte2; + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + if ((vs->channel == chan) && (vs->envPhase != AL_PHASE_RELEASE)) { + vol = __vsVol(vs, seqp); + alSynSetVol(seqp->drvr, &vs->voice, vol, __vsDelta(vs, seqp->curTime)); + } + } + break; + case (AL_MIDI_PRIORITY_CTRL): + /* leave current voices where they are */ + seqp->chanState[chan].priority = byte2; + break; + case (AL_MIDI_SUSTAIN_CTRL): + seqp->chanState[chan].sustain = byte2; + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + if ((vs->channel == chan) && (vs->phase != AL_PHASE_RELEASE)) { + if (byte2 > AL_SUSTAIN) { + /* + * sustain pedal down + */ + if (vs->phase == AL_PHASE_NOTEON) + vs->phase = AL_PHASE_SUSTAIN; + } else { + /* + * sustain pedal up + */ + if (vs->phase == AL_PHASE_SUSTAIN) + vs->phase = AL_PHASE_NOTEON; + else if (vs->phase == AL_PHASE_SUSTREL) { + vs->phase = AL_PHASE_RELEASE; + __seqpReleaseVoice(seqp, &vs->voice, vs->sound->envelope->releaseTime); + } + } + } + } + break; + + case (AL_MIDI_FX1_CTRL): + seqp->chanState[chan].fxmix = byte2; + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + if (vs->channel == chan) { + alSynSetFXMix(seqp->drvr, &vs->voice, byte2); + } + } + break; + + case (AL_MIDI_FX_CTRL_0): + case (AL_MIDI_FX_CTRL_1): + case (AL_MIDI_FX_CTRL_2): + case (AL_MIDI_FX_CTRL_3): + case (AL_MIDI_FX_CTRL_4): + case (AL_MIDI_FX_CTRL_5): + case (AL_MIDI_FX_CTRL_6): + case (AL_MIDI_FX_CTRL_7): +#if 0 /* fx control not implemented */ fxref = alSynGetFXRef(seqp->drvr, 0, 0); if (fxref) alSynSetFXParam(seqp->drvr, fxref, (s16)byte1, (void *)byte2); break; #endif - case (AL_MIDI_FX3_CTRL): - default: - break; - } + case (AL_MIDI_FX3_CTRL): + default: + break; + } break; case (AL_MIDI_ProgramChange): - /* sct 1/16/96 - We must have a valid bank in order to process the program change. */ + /* sct 1/16/96 - We must have a valid bank in order to process the program change. */ #if BUILD_VERSION < VERSION_J #line 713 #endif - assert(seqp->bank != NULL); - + assert(seqp->bank != NULL); if (key < seqp->bank->instCount) { - ALInstrument *inst = seqp->bank->instArray[key]; - __setInstChanState(seqp, inst, chan); /* sct 11/6/95 */ + ALInstrument* inst = seqp->bank->instArray[key]; + __setInstChanState(seqp, inst, chan); /* sct 11/6/95 */ } #ifdef _DEBUG - else - __osError(ERR_ALSEQPINVALIDPROG, 2, key, seqp->bank->instCount); -#endif + else + __osError(ERR_ALSEQPINVALIDPROG, 2, key, seqp->bank->instCount); +#endif break; - - case (AL_MIDI_PitchBendChange): - { - s32 bendVal; - f32 bendRatio; - s32 cents; - - /* - * get 14-bit unsigned midi value - */ - bendVal = ( (byte2 << 7) + byte1) - 8192; - /* - * calculate pitch bend in cents - */ - cents = (seqp->chanState[chan].bendRange * bendVal)/8192; + case (AL_MIDI_PitchBendChange): { + s32 bendVal; + f32 bendRatio; + s32 cents; - /* - * calculate the corresponding ratio - */ - bendRatio = alCents2Ratio(cents); - seqp->chanState[chan].pitchBend = bendRatio; - - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { - if (vs->channel == chan) { - alSynSetPitch(seqp->drvr, &vs->voice, - vs->pitch * bendRatio * vs->vibrato); - } + /* + * get 14-bit unsigned midi value + */ + bendVal = ((byte2 << 7) + byte1) - 8192; + + /* + * calculate pitch bend in cents + */ + cents = (seqp->chanState[chan].bendRange * bendVal) / 8192; + + /* + * calculate the corresponding ratio + */ + bendRatio = alCents2Ratio(cents); + seqp->chanState[chan].pitchBend = bendRatio; + + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { + if (vs->channel == chan) { + alSynSetPitch(seqp->drvr, &vs->voice, vs->pitch * bendRatio * vs->vibrato); } } - break; - + } break; + default: #ifdef _DEBUG - __osError(ERR_ALSEQPUNKNOWNMIDI, 1, status); + __osError(ERR_ALSEQPUNKNOWNMIDI, 1, status); #endif - break; - } + break; + } } -void __handleMetaMsg(ALSeqPlayer *seqp, ALEvent *event) -{ - ALTempoEvent *tevt = &event->msg.tempo; - ALEvent evt; - s32 tempo; +void __handleMetaMsg(ALSeqPlayer* seqp, ALEvent* event) { + ALTempoEvent* tevt = &event->msg.tempo; + ALEvent evt; + s32 tempo; - if (event->msg.tempo.status == AL_MIDI_Meta) - { - if (event->msg.tempo.type == AL_MIDI_META_TEMPO) - { - tempo = - (tevt->byte1 << 16) | - (tevt->byte2 << 8) | - (tevt->byte3 << 0); - __setUsptFromTempo (seqp, (f32)tempo); /* sct 1/8/96 */ + if (event->msg.tempo.status == AL_MIDI_Meta) { + if (event->msg.tempo.type == AL_MIDI_META_TEMPO) { + tempo = (tevt->byte1 << 16) | (tevt->byte2 << 8) | (tevt->byte3 << 0); + __setUsptFromTempo(seqp, (f32)tempo); /* sct 1/8/96 */ } } } -ALVoiceState *__mapVoice(ALSeqPlayer *seqp, u8 key, u8 vel, u8 channel) -{ - ALVoiceState *vs = seqp->vFreeList; +ALVoiceState* __mapVoice(ALSeqPlayer* seqp, u8 key, u8 vel, u8 channel) { + ALVoiceState* vs = seqp->vFreeList; if (vs) { seqp->vFreeList = vs->next; vs->next = 0; - + if (!seqp->vAllocHead) seqp->vAllocHead = vs; else seqp->vAllocTail->next = vs; - + seqp->vAllocTail = vs; - vs->channel = channel; - vs->key = key; - vs->velocity = vel; + vs->channel = channel; + vs->key = key; + vs->velocity = vel; vs->voice.clientPrivate = vs; } - + return vs; } -void __unmapVoice(ALSeqPlayer *seqp, ALVoice *voice) -{ - ALVoiceState *prev = 0; - ALVoiceState *vs; - +void __unmapVoice(ALSeqPlayer* seqp, ALVoice* voice) { + ALVoiceState* prev = 0; + ALVoiceState* vs; + /* * we could use doubly linked lists here and save some code and * execution time, but time spent here in negligible, so it won't @@ -844,7 +785,7 @@ void __unmapVoice(ALSeqPlayer *seqp, ALVoice *voice) prev->next = vs->next; else seqp->vAllocHead = vs->next; - + if (vs == seqp->vAllocTail) { seqp->vAllocTail = prev; } @@ -852,25 +793,23 @@ void __unmapVoice(ALSeqPlayer *seqp, ALVoice *voice) vs->next = seqp->vFreeList; seqp->vFreeList = vs; return; - } prev = vs; } #ifdef _DEBUG __osError(ERR_ALSEQPUNMAP, 1, voice); -#endif +#endif } -ALVoiceState *__lookupVoice(ALSeqPlayer *seqp, u8 key, u8 channel) -{ - ALVoiceState *vs; +ALVoiceState* __lookupVoice(ALSeqPlayer* seqp, u8 key, u8 channel) { + ALVoiceState* vs; for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { - if ((vs->key == key) && (vs->channel == channel) && - (vs->phase != AL_PHASE_RELEASE) && (vs->phase != AL_PHASE_SUSTREL)) + if ((vs->key == key) && (vs->channel == channel) && (vs->phase != AL_PHASE_RELEASE) + && (vs->phase != AL_PHASE_SUSTREL)) return vs; } - + return 0; } #if 0 @@ -879,11 +818,11 @@ ALSound *__lookupSound(ALSeqPlayer *seqp, u8 key, u8 vel, u8 chan) s32 i; ALInstrument *inst = seqp->chanState[chan].instrument; ALSound *snd = 0; - + for (i = 0; i < inst->soundCount; i++) { ALSound *sound = inst->soundArray[i]; ALKeyMap *keymap = sound->keyMap; - + if ((key >= keymap->keyMin) && (key <= keymap->keyMax) && (vel >= keymap->velocityMin) && (vel <= keymap->velocityMax)) { snd = sound; @@ -894,70 +833,62 @@ ALSound *__lookupSound(ALSeqPlayer *seqp, u8 key, u8 vel, u8 chan) } #endif -ALSound *__lookupSoundQuick(ALSeqPlayer *seqp, u8 key, u8 vel, u8 chan) -{ - ALInstrument *inst = seqp->chanState[chan].instrument; +ALSound* __lookupSoundQuick(ALSeqPlayer* seqp, u8 key, u8 vel, u8 chan) { + ALInstrument* inst = seqp->chanState[chan].instrument; s32 l = 1; s32 r = inst->soundCount; s32 i; - ALKeyMap *keymap; + ALKeyMap* keymap; #if BUILD_VERSION < VERSION_J #line 885 #endif - assert(inst != NULL); /* sct 10/31/95 - If inst is NULL, then the seqp probably wasn't setup correctly. */ + assert(inst != NULL); /* sct 10/31/95 - If inst is NULL, then the seqp probably wasn't setup correctly. */ - while (r >= l) { - i = (l+r)/2; + i = (l + r) / 2; - keymap = inst->soundArray[i-1]->keyMap; + keymap = inst->soundArray[i - 1]->keyMap; - if ((key >= keymap->keyMin) && (key <= keymap->keyMax) && - (vel >= keymap->velocityMin) && (vel <= keymap->velocityMax)) { - return inst->soundArray[i-1]; - } else if ((key < keymap->keyMin) || - ((vel < keymap->velocityMin) && (key <= keymap->keyMax))) { + if ((key >= keymap->keyMin) && (key <= keymap->keyMax) && (vel >= keymap->velocityMin) + && (vel <= keymap->velocityMax)) { + return inst->soundArray[i - 1]; + } else if ((key < keymap->keyMin) || ((vel < keymap->velocityMin) && (key <= keymap->keyMax))) { r = i - 1; } else { l = i + 1; } } - + return 0; } - /* * __vsVol calculates the target volume for the voice based on the * note on velocity, envelope, sampleVolume and controller. */ -s16 __vsVol(ALVoiceState *vs, ALSeqPlayer *seqp) -{ +s16 __vsVol(ALVoiceState* vs, ALSeqPlayer* seqp) { - u32 t1,t2; + u32 t1, t2; - t1 = (vs->tremelo*vs->velocity*vs->envGain) >> 6; - t2 = (vs->sound->sampleVolume*seqp->vol* - seqp->chanState[vs->channel].vol) >> 14; + t1 = (vs->tremelo * vs->velocity * vs->envGain) >> 6; + t2 = (vs->sound->sampleVolume * seqp->vol * seqp->chanState[vs->channel].vol) >> 14; t1 *= t2; t1 >>= 15; - - return( (s16)t1 ); - + + return ((s16)t1); } -ALMicroTime __vsDelta(ALVoiceState *vs, ALMicroTime t) -{ +ALMicroTime __vsDelta(ALVoiceState* vs, ALMicroTime t) { /* * If we are interrupting a previously set envelope segment, we * need to recalculate the segment end time given the current * time. Note: this routine assumes that the voice is currently * playing. */ - + s32 delta = vs->envEndTime - t; - + if (delta >= 0) { return delta; } else { @@ -965,34 +896,29 @@ ALMicroTime __vsDelta(ALVoiceState *vs, ALMicroTime t) } } - -ALPan __vsPan(ALVoiceState *vs, ALSeqPlayer *seqp) -{ +ALPan __vsPan(ALVoiceState* vs, ALSeqPlayer* seqp) { s32 tmp; - tmp = seqp->chanState[vs->channel].pan - AL_PAN_CENTER + - vs->sound->samplePan; + tmp = seqp->chanState[vs->channel].pan - AL_PAN_CENTER + vs->sound->samplePan; tmp = MAX(tmp, AL_PAN_LEFT); tmp = MIN(tmp, AL_PAN_RIGHT); - return (ALPan) tmp; + return (ALPan)tmp; } #ifdef IMPLEMENTED -s32 seqpGetVoices(SEQP *seqp); -s32 seqpSetVoices(SEQP *seqp, s32 numvoices); +s32 seqpGetVoices(SEQP* seqp); +s32 seqpSetVoices(SEQP* seqp, s32 numvoices); -u16 seqpGetChannelMask(SEQP *seqp); -s32 seqpSetChannelMask(SEQP *seqp, u16 bitmask); +u16 seqpGetChannelMask(SEQP* seqp); +s32 seqpSetChannelMask(SEQP* seqp, u16 bitmask); #endif -void __seqpReleaseVoice(ALSeqPlayer *seqp, ALVoice *voice, - ALMicroTime deltaTime) -{ - ALEvent evt; - ALVoiceState *vs = (ALVoiceState *)voice->clientPrivate; +void __seqpReleaseVoice(ALSeqPlayer* seqp, ALVoice* voice, ALMicroTime deltaTime) { + ALEvent evt; + ALVoiceState* vs = (ALVoiceState*)voice->clientPrivate; /* * if in attack phase, remove all pending volume @@ -1000,46 +926,44 @@ void __seqpReleaseVoice(ALSeqPlayer *seqp, ALVoice *voice, */ if (vs->envPhase == AL_PHASE_ATTACK) { - ALLink *thisNode; - ALLink *nextNode; - ALEventListItem *thisItem, *nextItem; + ALLink* thisNode; + ALLink* nextNode; + ALEventListItem *thisItem, *nextItem; - thisNode = seqp->evtq.allocList.next; - while( thisNode != 0 ) { - nextNode = thisNode->next; - thisItem = (ALEventListItem *)thisNode; - nextItem = (ALEventListItem *)nextNode; - if (thisItem->evt.type == AL_SEQP_ENV_EVT) { - if(thisItem->evt.msg.vol.voice == voice) { - if( nextItem ) - nextItem->delta += thisItem->delta; - alUnlink(thisNode); - alLink(thisNode, &seqp->evtq.freeList); - } - } - thisNode = nextNode; - } + thisNode = seqp->evtq.allocList.next; + while (thisNode != 0) { + nextNode = thisNode->next; + thisItem = (ALEventListItem*)thisNode; + nextItem = (ALEventListItem*)nextNode; + if (thisItem->evt.type == AL_SEQP_ENV_EVT) { + if (thisItem->evt.msg.vol.voice == voice) { + if (nextItem) + nextItem->delta += thisItem->delta; + alUnlink(thisNode); + alLink(thisNode, &seqp->evtq.freeList); + } + } + thisNode = nextNode; + } } - + vs->velocity = 0; vs->envPhase = AL_PHASE_RELEASE; - vs->envGain = 0; + vs->envGain = 0; vs->envEndTime = seqp->curTime + deltaTime; alSynSetPriority(seqp->drvr, voice, 0); /* make candidate for stealing */ alSynSetVol(seqp->drvr, voice, 0, deltaTime); - evt.type = AL_NOTE_END_EVT; + evt.type = AL_NOTE_END_EVT; evt.msg.note.voice = voice; - + alEvtqPostEvent(&seqp->evtq, &evt, deltaTime); } - - /* This special purpose routine is called only when processing a stopping event in order to properly kill all active voices. - + The routine searches through the seqp's event queue for an AL_NOTE_END_EVT for the given voice. If the event's execution time is greater than kill time, it removes the event from the @@ -1050,95 +974,83 @@ void __seqpReleaseVoice(ALSeqPlayer *seqp, ALVoice *voice, sct 1/3/96 */ -#define VOICENEEDSNOTEKILL_DEBUG _DEBUG_INTERNAL&&0 /* For debugging voiceNeedsNoteKill routine. */ +#define VOICENEEDSNOTEKILL_DEBUG _DEBUG_INTERNAL && 0 /* For debugging voiceNeedsNoteKill routine. */ -char __voiceNeedsNoteKill (ALSeqPlayer *seqp, ALVoice *voice, ALMicroTime killTime) -{ - ALLink *thisNode; - ALLink *nextNode; - ALEventListItem *thisItem; - ALMicroTime itemTime = 0; - char needsNoteKill = TRUE; +char __voiceNeedsNoteKill(ALSeqPlayer* seqp, ALVoice* voice, ALMicroTime killTime) { + ALLink* thisNode; + ALLink* nextNode; + ALEventListItem* thisItem; + ALMicroTime itemTime = 0; + char needsNoteKill = TRUE; #if VOICENEEDSNOTEKILL_DEBUG - alEvtqPrintAllocEvts (&seqp->evtq); + alEvtqPrintAllocEvts(&seqp->evtq); #endif thisNode = seqp->evtq.allocList.next; - while (thisNode != 0) - { - nextNode = thisNode->next; - thisItem = (ALEventListItem *)thisNode; - itemTime += thisItem->delta; + while (thisNode != 0) { + nextNode = thisNode->next; + thisItem = (ALEventListItem*)thisNode; + itemTime += thisItem->delta; - if (thisItem->evt.type == AL_NOTE_END_EVT) - { - if (thisItem->evt.msg.note.voice == voice) - { - if (itemTime > killTime) - { - if ((ALEventListItem *)nextNode) - ((ALEventListItem *)nextNode)->delta += thisItem->delta; - alUnlink(thisNode); - alLink(thisNode, &seqp->evtq.freeList); - } - else - needsNoteKill = FALSE; - break; - } - } - thisNode = nextNode; + if (thisItem->evt.type == AL_NOTE_END_EVT) { + if (thisItem->evt.msg.note.voice == voice) { + if (itemTime > killTime) { + if ((ALEventListItem*)nextNode) + ((ALEventListItem*)nextNode)->delta += thisItem->delta; + alUnlink(thisNode); + alLink(thisNode, &seqp->evtq.freeList); + } else + needsNoteKill = FALSE; + break; + } + } + thisNode = nextNode; } -#if VOICENEEDSNOTEKILL_DEBUG +#if VOICENEEDSNOTEKILL_DEBUG if (thisNode) - osSyncPrintf("vox 0x%0x: end time %d kill time %d\n\n", voice, itemTime, killTime); + osSyncPrintf("vox 0x%0x: end time %d kill time %d\n\n", voice, itemTime, killTime); else - osSyncPrintf("vox 0x%0x: not found\n\n", voice); + osSyncPrintf("vox 0x%0x: not found\n\n", voice); - alEvtqPrintAllocEvts (&seqp->evtq); + alEvtqPrintAllocEvts(&seqp->evtq); #endif - return needsNoteKill; + return needsNoteKill; } - - - -void __initFromBank(ALSeqPlayer *seqp, ALBank *b) -{ +void __initFromBank(ALSeqPlayer* seqp, ALBank* b) { /* * init the chanState with the default instrument */ - s32 i; - ALInstrument *inst = 0; - + s32 i; + ALInstrument* inst = 0; + /* set to the first available instrument. */ - for(i = 0; !inst ; i++) - inst = b->instArray[i]; - + for (i = 0; !inst; i++) + inst = b->instArray[i]; + /* sct 11/6/95 - Setup the channel state for the given instrument. */ /* There is some wasted effort here since both calls the same state vars */ /* but it's safer. */ for (i = 0; i < seqp->maxChannels; i++) { - __resetPerfChanState(seqp, i); - __setInstChanState(seqp, inst, i); + __resetPerfChanState(seqp, i); + __setInstChanState(seqp, inst, i); } if (b->percussion) { - __resetPerfChanState(seqp, i); - __setInstChanState(seqp, b->percussion, 9); + __resetPerfChanState(seqp, i); + __setInstChanState(seqp, b->percussion, 9); } } - /* sct 11/6/95 - Call this whenever a new instrument gets assigned to a channel such as when changing banks or in response to a MIDI program change event. Currently also gets called when changing sequences. */ -void __setInstChanState(ALSeqPlayer *seqp, ALInstrument *inst, s32 chan) -{ +void __setInstChanState(ALSeqPlayer* seqp, ALInstrument* inst, s32 chan) { seqp->chanState[chan].instrument = inst; seqp->chanState[chan].pan = inst->pan; seqp->chanState[chan].vol = inst->volume; @@ -1146,83 +1058,70 @@ void __setInstChanState(ALSeqPlayer *seqp, ALInstrument *inst, s32 chan) seqp->chanState[chan].bendRange = inst->bendRange; } - /* sct 11/6/95 -- Call this whenever a new sequence is to be played or when initializing a sequence player. */ -void __resetPerfChanState(ALSeqPlayer *seqp, s32 chan) -{ - seqp->chanState[chan].fxId = AL_FX_NONE; - seqp->chanState[chan].fxmix = AL_DEFAULT_FXMIX; - seqp->chanState[chan].pan = AL_PAN_CENTER; - seqp->chanState[chan].vol = AL_VOL_FULL; - seqp->chanState[chan].priority = AL_DEFAULT_PRIORITY; - seqp->chanState[chan].sustain = 0; - seqp->chanState[chan].bendRange = 200; - seqp->chanState[chan].pitchBend = 1.0f; +void __resetPerfChanState(ALSeqPlayer* seqp, s32 chan) { + seqp->chanState[chan].fxId = AL_FX_NONE; + seqp->chanState[chan].fxmix = AL_DEFAULT_FXMIX; + seqp->chanState[chan].pan = AL_PAN_CENTER; + seqp->chanState[chan].vol = AL_VOL_FULL; + seqp->chanState[chan].priority = AL_DEFAULT_PRIORITY; + seqp->chanState[chan].sustain = 0; + seqp->chanState[chan].bendRange = 200; + seqp->chanState[chan].pitchBend = 1.0f; } - /* sct 11/6/95 - Called only when creating a new sequence player. */ -void __initChanState(ALSeqPlayer *seqp) -{ +void __initChanState(ALSeqPlayer* seqp) { int i; - - for (i = 0; i < seqp->maxChannels; i++) - { + + for (i = 0; i < seqp->maxChannels; i++) { seqp->chanState[i].instrument = 0; - __resetPerfChanState (seqp, i); + __resetPerfChanState(seqp, i); } } +void __seqpStopOsc(ALSeqPlayer* seqp, ALVoiceState* vs) { + ALEventListItem *thisNode, *nextNode; + s16 evtType; -void __seqpStopOsc(ALSeqPlayer *seqp, ALVoiceState *vs) -{ - ALEventListItem *thisNode,*nextNode; - s16 evtType; - thisNode = (ALEventListItem*)seqp->evtq.allocList.next; - while(thisNode) - { + while (thisNode) { nextNode = (ALEventListItem*)thisNode->node.next; evtType = thisNode->evt.type; - if(evtType == AL_TREM_OSC_EVT || evtType == AL_VIB_OSC_EVT) - { - if(thisNode->evt.msg.osc.vs == vs) - { + if (evtType == AL_TREM_OSC_EVT || evtType == AL_VIB_OSC_EVT) { + if (thisNode->evt.msg.osc.vs == vs) { (*seqp->stopOsc)(thisNode->evt.msg.osc.oscState); alUnlink((ALLink*)thisNode); - if(nextNode) + if (nextNode) nextNode->delta += thisNode->delta; alLink((ALLink*)thisNode, &seqp->evtq.freeList); - if(evtType == AL_TREM_OSC_EVT) + if (evtType == AL_TREM_OSC_EVT) vs->flags = vs->flags & 0xFE; else /* must be a AL_VIB_OSC_EVT */ vs->flags = vs->flags & 0xFD; - if(!vs->flags) - return; /* there should be no more events */ + if (!vs->flags) + return; /* there should be no more events */ } } - + thisNode = nextNode; } } - - /* This routine safely calculates the sequence player's uspt value based on the given tempo. It does this safely by making sure that the player has a target sequence and therefore a qnpt value which is needed for the calculation. */ -static void __setUsptFromTempo (ALSeqPlayer *seqp, f32 tempo) -{ +static void __setUsptFromTempo(ALSeqPlayer* seqp, f32 tempo) { if (seqp->target) - seqp->uspt = (s32)((f32)tempo * seqp->target->qnpt); + seqp->uspt = (s32)((f32)tempo * seqp->target->qnpt); else - seqp->uspt = 488; /* This is the initial value set by alSeqpNew. */ + seqp->uspt = 488; /* This is the initial value set by alSeqpNew. */ } diff --git a/src/audio/seqploop.c b/src/audio/seqploop.c index 9bbaf5f..8375630 100644 --- a/src/audio/seqploop.c +++ b/src/audio/seqploop.c @@ -20,16 +20,13 @@ #include -void alSeqpLoop(ALSeqPlayer *seqp, ALSeqMarker *start, ALSeqMarker *end, - s32 count) -{ - ALEvent evt; +void alSeqpLoop(ALSeqPlayer* seqp, ALSeqMarker* start, ALSeqMarker* end, s32 count) { + ALEvent evt; + + evt.type = AL_SEQP_LOOP_EVT; + evt.msg.loop.start = start; + evt.msg.loop.end = end; + evt.msg.loop.count = count; - evt.type = AL_SEQP_LOOP_EVT; - evt.msg.loop.start = start; - evt.msg.loop.end = end; - evt.msg.loop.count = count; - alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/seqpplay.c b/src/audio/seqpplay.c index 8e65504..23e1a75 100644 --- a/src/audio/seqpplay.c +++ b/src/audio/seqpplay.c @@ -23,26 +23,10 @@ #include #include "seqp.h" -void alSeqpPlay(ALSeqPlayer *seqp) -{ +void alSeqpPlay(ALSeqPlayer* seqp) { ALEvent evt; evt.type = AL_SEQP_PLAY_EVT; - + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - - - - - - - - - - - - - - - diff --git a/src/audio/seqpsendmidi.c b/src/audio/seqpsendmidi.c index 56a9510..d67edd6 100644 --- a/src/audio/seqpsendmidi.c +++ b/src/audio/seqpsendmidi.c @@ -20,21 +20,18 @@ #include -void alSeqpSendMidi(ALSeqPlayer *seqp, s32 ticks, u8 status, u8 byte1, - u8 byte2) -{ - ALEvent evt; +void alSeqpSendMidi(ALSeqPlayer* seqp, s32 ticks, u8 status, u8 byte1, u8 byte2) { + ALEvent evt; ALMicroTime deltaTime; - evt.type = AL_SEQP_MIDI_EVT; - evt.msg.midi.ticks = 0; + evt.type = AL_SEQP_MIDI_EVT; + evt.msg.midi.ticks = 0; evt.msg.midi.status = status; - evt.msg.midi.byte1 = byte1; - evt.msg.midi.byte2 = byte2; + evt.msg.midi.byte1 = byte1; + evt.msg.midi.byte2 = byte2; evt.msg.midi.duration = 0; - - deltaTime = ticks*seqp->uspt; - + + deltaTime = ticks * seqp->uspt; + alEvtqPostEvent(&seqp->evtq, &evt, deltaTime); } - diff --git a/src/audio/seqpsetbank.c b/src/audio/seqpsetbank.c index 1c00e8b..069ac88 100644 --- a/src/audio/seqpsetbank.c +++ b/src/audio/seqpsetbank.c @@ -20,8 +20,7 @@ #include -void alSeqpSetBank(ALSeqPlayer *seqp, ALBank *b) -{ +void alSeqpSetBank(ALSeqPlayer* seqp, ALBank* b) { ALEvent evt; evt.type = AL_SEQP_BANK_EVT; @@ -29,4 +28,3 @@ void alSeqpSetBank(ALSeqPlayer *seqp, ALBank *b) alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/seqpsetchlvol.c b/src/audio/seqpsetchlvol.c index 9b48803..32d1596 100644 --- a/src/audio/seqpsetchlvol.c +++ b/src/audio/seqpsetchlvol.c @@ -20,16 +20,14 @@ #include -void alSeqpSetChlVol(ALSeqPlayer *seqp, u8 chan, u8 vol) -{ - ALEvent evt; +void alSeqpSetChlVol(ALSeqPlayer* seqp, u8 chan, u8 vol) { + ALEvent evt; - evt.type = AL_SEQP_MIDI_EVT; - evt.msg.midi.ticks = 0; + evt.type = AL_SEQP_MIDI_EVT; + evt.msg.midi.ticks = 0; evt.msg.midi.status = AL_MIDI_ControlChange | chan; - evt.msg.midi.byte1 = AL_MIDI_VOLUME_CTRL; - evt.msg.midi.byte2 = vol; - + evt.msg.midi.byte1 = AL_MIDI_VOLUME_CTRL; + evt.msg.midi.byte2 = vol; + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/seqpsetfxmix.c b/src/audio/seqpsetfxmix.c index 9397963..37c2baa 100644 --- a/src/audio/seqpsetfxmix.c +++ b/src/audio/seqpsetfxmix.c @@ -20,16 +20,14 @@ #include -void alSeqpSetChlFXMix(ALSeqPlayer *seqp, u8 chan, u8 fxmix) -{ - ALEvent evt; +void alSeqpSetChlFXMix(ALSeqPlayer* seqp, u8 chan, u8 fxmix) { + ALEvent evt; - evt.type = AL_SEQP_MIDI_EVT; - evt.msg.midi.ticks = 0; + evt.type = AL_SEQP_MIDI_EVT; + evt.msg.midi.ticks = 0; evt.msg.midi.status = AL_MIDI_ControlChange | chan; - evt.msg.midi.byte1 = AL_MIDI_FX1_CTRL; - evt.msg.midi.byte2 = fxmix; - + evt.msg.midi.byte1 = AL_MIDI_FX1_CTRL; + evt.msg.midi.byte2 = fxmix; + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/seqpsetpan.c b/src/audio/seqpsetpan.c index 85d07d9..5703e3d 100644 --- a/src/audio/seqpsetpan.c +++ b/src/audio/seqpsetpan.c @@ -20,16 +20,14 @@ #include -void alSeqpSetChlPan(ALSeqPlayer *seqp, u8 chan, ALPan pan) -{ - ALEvent evt; +void alSeqpSetChlPan(ALSeqPlayer* seqp, u8 chan, ALPan pan) { + ALEvent evt; - evt.type = AL_SEQP_MIDI_EVT; - evt.msg.midi.ticks = 0; + evt.type = AL_SEQP_MIDI_EVT; + evt.msg.midi.ticks = 0; evt.msg.midi.status = AL_MIDI_ControlChange | chan; - evt.msg.midi.byte1 = AL_MIDI_PAN_CTRL; - evt.msg.midi.byte2 = pan; - + evt.msg.midi.byte1 = AL_MIDI_PAN_CTRL; + evt.msg.midi.byte2 = pan; + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/seqpsetpriority.c b/src/audio/seqpsetpriority.c index 0910726..0a4d6a4 100644 --- a/src/audio/seqpsetpriority.c +++ b/src/audio/seqpsetpriority.c @@ -20,8 +20,7 @@ #include -void alSeqpSetChlPriority(ALSeqPlayer *seqp, u8 chan, u8 priority) -{ +void alSeqpSetChlPriority(ALSeqPlayer* seqp, u8 chan, u8 priority) { ALEvent evt; evt.type = AL_SEQP_PRIORITY_EVT; diff --git a/src/audio/seqpsetprogram.c b/src/audio/seqpsetprogram.c index dfd6d94..27a8b66 100644 --- a/src/audio/seqpsetprogram.c +++ b/src/audio/seqpsetprogram.c @@ -20,17 +20,16 @@ #include -void alSeqpSetChlProgram(ALSeqPlayer *seqp, u8 chan, u8 prog) +void alSeqpSetChlProgram(ALSeqPlayer* seqp, u8 chan, u8 prog) { - ALEvent evt; + ALEvent evt; - evt.type = AL_SEQP_MIDI_EVT; - evt.msg.midi.ticks = 0; + evt.type = AL_SEQP_MIDI_EVT; + evt.msg.midi.ticks = 0; evt.msg.midi.status = AL_MIDI_ProgramChange | chan; - evt.msg.midi.byte1 = prog; - evt.msg.midi.byte2 = 0; - + evt.msg.midi.byte1 = prog; + evt.msg.midi.byte2 = 0; + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/seqpsetseq.c b/src/audio/seqpsetseq.c index 3fe8175..1af1c96 100644 --- a/src/audio/seqpsetseq.c +++ b/src/audio/seqpsetseq.c @@ -22,8 +22,7 @@ #include -void alSeqpSetSeq(ALSeqPlayer *seqp, ALSeq *seq) -{ +void alSeqpSetSeq(ALSeqPlayer* seqp, ALSeq* seq) { ALEvent evt; evt.type = AL_SEQP_SEQ_EVT; @@ -31,4 +30,3 @@ void alSeqpSetSeq(ALSeqPlayer *seqp, ALSeq *seq) alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/seqpsettempo.c b/src/audio/seqpsettempo.c index 592320a..0c2d2fe 100644 --- a/src/audio/seqpsettempo.c +++ b/src/audio/seqpsettempo.c @@ -20,17 +20,15 @@ #include -void alSeqpSetTempo(ALSeqPlayer *seqp, s32 tempo) -{ - ALEvent evt; - - evt.type = AL_SEQP_META_EVT; +void alSeqpSetTempo(ALSeqPlayer* seqp, s32 tempo) { + ALEvent evt; + + evt.type = AL_SEQP_META_EVT; evt.msg.tempo.status = AL_MIDI_Meta; - evt.msg.tempo.type = AL_MIDI_META_TEMPO; - evt.msg.tempo.byte1 = (tempo & 0xff0000)>>16; - evt.msg.tempo.byte2 = (tempo & 0xff00)>>8; - evt.msg.tempo.byte3 = tempo & 0xff; - + evt.msg.tempo.type = AL_MIDI_META_TEMPO; + evt.msg.tempo.byte1 = (tempo & 0xff0000) >> 16; + evt.msg.tempo.byte2 = (tempo & 0xff00) >> 8; + evt.msg.tempo.byte3 = tempo & 0xff; + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/seqpsetvol.c b/src/audio/seqpsetvol.c index b698a40..17e64c2 100644 --- a/src/audio/seqpsetvol.c +++ b/src/audio/seqpsetvol.c @@ -20,13 +20,11 @@ #include -void alSeqpSetVol(ALSeqPlayer *seqp, s16 vol) -{ - ALEvent evt; +void alSeqpSetVol(ALSeqPlayer* seqp, s16 vol) { + ALEvent evt; + + evt.type = AL_SEQP_VOL_EVT; + evt.msg.spvol.vol = vol; - evt.type = AL_SEQP_VOL_EVT; - evt.msg.spvol.vol = vol; - alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/src/audio/seqpstop.c b/src/audio/seqpstop.c index abec781..738a9d9 100644 --- a/src/audio/seqpstop.c +++ b/src/audio/seqpstop.c @@ -22,12 +22,9 @@ #include -void alSeqpStop(ALSeqPlayer *seqp) -{ - ALEvent evt; +void alSeqpStop(ALSeqPlayer* seqp) { + ALEvent evt; - evt.type = AL_SEQP_STOPPING_EVT; + evt.type = AL_SEQP_STOPPING_EVT; alEvtqPostEvent(&seqp->evtq, &evt, 0); - } - diff --git a/src/audio/sl.c b/src/audio/sl.c index d184972..de08bb6 100644 --- a/src/audio/sl.c +++ b/src/audio/sl.c @@ -23,18 +23,16 @@ #include -ALGlobals *alGlobals=0; +ALGlobals* alGlobals = 0; -void alInit(ALGlobals *g, ALSynConfig *c) -{ +void alInit(ALGlobals* g, ALSynConfig* c) { if (!alGlobals) { /* already initialized? */ alGlobals = g; alSynNew(&alGlobals->drvr, c); } } -void alClose(ALGlobals *glob) -{ +void alClose(ALGlobals* glob) { if (alGlobals) { alSynDelete(&glob->drvr); alGlobals = 0; @@ -42,24 +40,17 @@ void alClose(ALGlobals *glob) } /* might want to make these macros */ -void alLink(ALLink *ln, ALLink *to) -{ - ln->next = to->next; - ln->prev = to; - if (to->next) - to->next->prev = ln; - to->next = ln; +void alLink(ALLink* ln, ALLink* to) { + ln->next = to->next; + ln->prev = to; + if (to->next) + to->next->prev = ln; + to->next = ln; } -void alUnlink(ALLink *ln) -{ - if (ln->next) - ln->next->prev = ln->prev; - if (ln->prev) - ln->prev->next = ln->next; +void alUnlink(ALLink* ln) { + if (ln->next) + ln->next->prev = ln->prev; + if (ln->prev) + ln->prev->next = ln->next; } - - - - - diff --git a/src/audio/sndp.h b/src/audio/sndp.h index 17d7015..17a89ad 100644 --- a/src/audio/sndp.h +++ b/src/audio/sndp.h @@ -20,21 +20,20 @@ * Copyright Laws of the United States. *====================================================================*/ - #ifndef __SNDP__ #define __SNDP__ #include #ifndef MIN -#define MIN(a,b) (((a)<(b))?(a):(b)) +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif #ifndef MAX -#define MAX(a,b) (((a)>(b))?(a):(b)) +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) #endif -#define MIN_RATIO 0.0001 +#define MIN_RATIO 0.0001 typedef enum { AL_SNDP_PLAY_EVT, @@ -49,54 +48,54 @@ typedef enum { } ALSndpMsgType; 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 */ + 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 union { - ALEvent msg; + ALEvent msg; struct { - s16 type; - ALSoundState *state; + s16 type; + ALSoundState* state; } common; - + struct { - s16 type; - ALSoundState *state; - s16 vol; + s16 type; + ALSoundState* state; + s16 vol; } vol; - + struct { - s16 type; - ALSoundState *state; - f32 pitch; + s16 type; + ALSoundState* state; + f32 pitch; } pitch; - + struct { - s16 type; - ALSoundState *state; - ALPan pan; + s16 type; + ALSoundState* state; + ALPan pan; } pan; - + struct { - s16 type; - ALSoundState *state; - u8 mix; + s16 type; + ALSoundState* state; + u8 mix; } fx; - + } ALSndpEvent; -static ALMicroTime _sndpVoiceHandler(void *node); -static void _handleEvent(ALSndPlayer *sndp, ALSndpEvent *event); -static void _removeEvents(ALEventQueue *evtq, ALSoundState *state); -static s32 _DivS32ByF32 (s32 i, f32 f); +static ALMicroTime _sndpVoiceHandler(void* node); +static void _handleEvent(ALSndPlayer* sndp, ALSndpEvent* event); +static void _removeEvents(ALEventQueue* evtq, ALSoundState* state); +static s32 _DivS32ByF32(s32 i, f32 f); #endif diff --git a/src/audio/sndpallocate.c b/src/audio/sndpallocate.c index 0629ac7..5e73c51 100644 --- a/src/audio/sndpallocate.c +++ b/src/audio/sndpallocate.c @@ -20,11 +20,10 @@ #include "sndp.h" -ALSndId alSndpAllocate(ALSndPlayer *sndp, ALSound *sound) -{ +ALSndId alSndpAllocate(ALSndPlayer* sndp, ALSound* sound) { ALSndId i; - ALSoundState *sState = sndp->sndState; - + ALSoundState* sState = sndp->sndState; + for (i = 0; i < sndp->maxSounds; i++) { if (!sState[i].sound) { sState[i].sound = sound; @@ -33,11 +32,10 @@ ALSndId alSndpAllocate(ALSndPlayer *sndp, ALSound *sound) sState[i].pitch = 1.0; sState[i].pan = AL_PAN_CENTER; sState[i].fxMix = AL_DEFAULT_FXMIX; - sState[i].vol = 32767*sound->sampleVolume/AL_VOL_FULL; - return i; + sState[i].vol = 32767 * sound->sampleVolume / AL_VOL_FULL; + return i; } } return -1; } - diff --git a/src/audio/sndpdeallocate.c b/src/audio/sndpdeallocate.c index 7c18b56..36a1400 100644 --- a/src/audio/sndpdeallocate.c +++ b/src/audio/sndpdeallocate.c @@ -22,14 +22,12 @@ #include #include -void alSndpDeallocate(ALSndPlayer *sndp, ALSndId id) -{ - ALSoundState *sState = sndp->sndState; +void alSndpDeallocate(ALSndPlayer* sndp, ALSndId id) { + ALSoundState* sState = sndp->sndState; ALFailIf((sState + id)->state != AL_STOPPED, ERR_ALSNDPDEALLOCATE); sState[id].sound = 0; if (sndp->target == id) /* if we are deleting the target sound */ - sndp->target = -1; + sndp->target = -1; } - diff --git a/src/audio/sndpdelete.c b/src/audio/sndpdelete.c index 5cfb4f7..15666f4 100644 --- a/src/audio/sndpdelete.c +++ b/src/audio/sndpdelete.c @@ -22,8 +22,7 @@ #include #include -void alSndpDelete(ALSndPlayer *sndp) -{ +void alSndpDelete(ALSndPlayer* sndp) { /* * Remove client from synthesizer. Note application is responsible * for making sure all sounds have been stopped beforehand. @@ -31,14 +30,13 @@ void alSndpDelete(ALSndPlayer *sndp) #ifdef _DEBUG { int i, notStopped = 0; - ALSoundState *sState = sndp->sndState; + ALSoundState* sState = sndp->sndState; - for (i=0; imaxSounds; i++) + for (i = 0; i < sndp->maxSounds; i++) if ((sState + i)->state != AL_STOPPED) notStopped = 1; ALFailIf(notStopped, ERR_ALSNDPDELETE); } -#endif +#endif alSynRemovePlayer(&alGlobals->drvr, &sndp->node); } - diff --git a/src/audio/sndpgetsound.c b/src/audio/sndpgetsound.c index 9088982..dacb330 100644 --- a/src/audio/sndpgetsound.c +++ b/src/audio/sndpgetsound.c @@ -20,8 +20,6 @@ #include "sndp.h" -ALSndId alSndpGetSound(ALSndPlayer *sndp) -{ - return (ALSndId) sndp->target; +ALSndId alSndpGetSound(ALSndPlayer* sndp) { + return (ALSndId)sndp->target; } - diff --git a/src/audio/sndpgetstate.c b/src/audio/sndpgetstate.c index 882b4a3..ff0d89c 100644 --- a/src/audio/sndpgetstate.c +++ b/src/audio/sndpgetstate.c @@ -20,10 +20,8 @@ #include "sndp.h" -s32 alSndpGetState(ALSndPlayer *sndp) -{ - ALSoundState *sState = sndp->sndState; +s32 alSndpGetState(ALSndPlayer* sndp) { + ALSoundState* sState = sndp->sndState; return (sState + sndp->target)->state; } - diff --git a/src/audio/sndplayer.c b/src/audio/sndplayer.c index f2d7b56..30dd9e2 100644 --- a/src/audio/sndplayer.c +++ b/src/audio/sndplayer.c @@ -24,32 +24,30 @@ // TODO: this comes from a header #ident "$Revision: 1.17 $" -void alSndpNew(ALSndPlayer *sndp, ALSndpConfig *c) -{ - u8 *ptr; - ALEvent evt; - ALSoundState *sState; - u32 i; +void alSndpNew(ALSndPlayer* sndp, ALSndpConfig* c) { + u8* ptr; + ALEvent evt; + ALSoundState* sState; + u32 i; /* * Init member variables */ sndp->maxSounds = c->maxSounds; sndp->target = -1; - sndp->frameTime = AL_USEC_PER_FRAME; /* time between API events */ - sState = (ALSoundState*)alHeapAlloc(c->heap, 1, - c->maxSounds * sizeof(ALSoundState)); + sndp->frameTime = AL_USEC_PER_FRAME; /* time between API events */ + sState = (ALSoundState*)alHeapAlloc(c->heap, 1, c->maxSounds * sizeof(ALSoundState)); sndp->sndState = sState; - for(i = 0; i < c->maxSounds; i++) - sState[i].sound = 0; + for (i = 0; i < c->maxSounds; i++) + sState[i].sound = 0; /* * init the event queue */ ptr = alHeapAlloc(c->heap, 1, c->maxEvents * sizeof(ALEventListItem)); - alEvtqNew(&sndp->evtq, (ALEventListItem *)ptr, c->maxEvents); - + alEvtqNew(&sndp->evtq, (ALEventListItem*)ptr, c->maxEvents); + /* * add ourselves to the driver */ @@ -63,17 +61,15 @@ void alSndpNew(ALSndPlayer *sndp, ALSndpConfig *c) * Start responding to API events */ evt.type = AL_SNDP_API_EVT; - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, sndp->frameTime); + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, sndp->frameTime); sndp->nextDelta = alEvtqNextEvent(&sndp->evtq, &sndp->nextEvent); - } /************************************************************* * Sound Player private routines *************************************************************/ -ALMicroTime _sndpVoiceHandler(void *node) -{ - ALSndPlayer *sndp = (ALSndPlayer *) node; +ALMicroTime _sndpVoiceHandler(void* node) { + ALSndPlayer* sndp = (ALSndPlayer*)node; ALSndpEvent evt; do { @@ -81,85 +77,83 @@ ALMicroTime _sndpVoiceHandler(void *node) case (AL_SNDP_API_EVT): evt.common.type = AL_SNDP_API_EVT; #if BUILD_VERSION >= VERSION_K - evt.common.state = (ALSoundState*)-1; + evt.common.state = (ALSoundState*)-1; #endif - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, sndp->frameTime); + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, sndp->frameTime); break; default: - _handleEvent(sndp, (ALSndpEvent *)&sndp->nextEvent); + _handleEvent(sndp, (ALSndpEvent*)&sndp->nextEvent); break; } sndp->nextDelta = alEvtqNextEvent(&sndp->evtq, &sndp->nextEvent); - + } while (sndp->nextDelta == 0); sndp->curTime += sndp->nextDelta; return sndp->nextDelta; } -void _handleEvent(ALSndPlayer *sndp, ALSndpEvent *event) -{ - ALVoiceConfig vc; - ALSound *snd; - ALVoice *voice; - ALPan pan; - f32 pitch; - ALSndpEvent evt; - ALMicroTime delta; +void _handleEvent(ALSndPlayer* sndp, ALSndpEvent* event) { + ALVoiceConfig vc; + ALSound* snd; + ALVoice* voice; + ALPan pan; + f32 pitch; + ALSndpEvent evt; + ALMicroTime delta; - s16 vol; - s16 tmp; - s32 vtmp; - ALSoundState *state; + s16 vol; + s16 tmp; + s32 vtmp; + ALSoundState* state; state = event->common.state; - snd = state->sound; - + snd = state->sound; switch (event->msg.type) { case (AL_SNDP_PLAY_EVT): if (state->state != AL_STOPPED || !snd) return; - - vc.fxBus = 0; /* effect buss 0 */ - vc.priority = state->priority; - vc.unityPitch = 0; + + vc.fxBus = 0; /* effect buss 0 */ + vc.priority = state->priority; + vc.unityPitch = 0; voice = &state->voice; alSynAllocVoice(sndp->drvr, voice, &vc); - vol = (s16) ((s32) snd->envelope->attackVolume*state->vol/AL_VOL_FULL); - tmp = state->pan - AL_PAN_CENTER + snd->samplePan; - tmp = MAX(tmp, AL_PAN_LEFT); - pan = (ALPan) MIN(tmp, AL_PAN_RIGHT); + vol = (s16)((s32)snd->envelope->attackVolume * state->vol / AL_VOL_FULL); + tmp = state->pan - AL_PAN_CENTER + snd->samplePan; + tmp = MAX(tmp, AL_PAN_LEFT); + pan = (ALPan)MIN(tmp, AL_PAN_RIGHT); pitch = state->pitch; - delta = snd->envelope->attackTime; - + delta = snd->envelope->attackTime; + alSynStartVoice(sndp->drvr, voice, snd->wavetable); state->state = AL_PLAYING; - + alSynSetPan(sndp->drvr, voice, pan); alSynSetVol(sndp->drvr, voice, vol, delta); alSynSetPitch(sndp->drvr, voice, pitch); alSynSetFXMix(sndp->drvr, voice, state->fxMix); - - evt.common.type = AL_SNDP_DECAY_EVT; - evt.common.state = state; - delta = (ALMicroTime) _DivS32ByF32 (snd->envelope->attackTime, state->pitch); - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, delta); + + evt.common.type = AL_SNDP_DECAY_EVT; + evt.common.state = state; + delta = (ALMicroTime)_DivS32ByF32(snd->envelope->attackTime, state->pitch); + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, delta); break; - + case (AL_SNDP_STOP_EVT): if (state->state != AL_PLAYING || !snd) return; - delta = (ALMicroTime) _DivS32ByF32 (snd->envelope->releaseTime, state->pitch); + delta = (ALMicroTime)_DivS32ByF32(snd->envelope->releaseTime, state->pitch); alSynSetVol(sndp->drvr, &state->voice, 0, delta); if (delta) { - evt.common.type = AL_SNDP_END_EVT; + evt.common.type = AL_SNDP_END_EVT; evt.common.state = state; - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, delta); + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, delta); state->state = AL_STOPPING; } else { /* note: this code is repeated in AL_SNDP_END_EVT */ @@ -167,30 +161,30 @@ void _handleEvent(ALSndPlayer *sndp, ALSndpEvent *event) alSynFreeVoice(sndp->drvr, &state->voice); _removeEvents(&sndp->evtq, state); state->state = AL_STOPPED; - } + } break; case (AL_SNDP_PAN_EVT): state->pan = event->pan.pan; - if (state->state == AL_PLAYING && snd){ - tmp = state->pan - AL_PAN_CENTER + snd->samplePan; - tmp = MAX(tmp, AL_PAN_LEFT); - pan = (ALPan) MIN(tmp, AL_PAN_RIGHT); + if (state->state == AL_PLAYING && snd) { + tmp = state->pan - AL_PAN_CENTER + snd->samplePan; + tmp = MAX(tmp, AL_PAN_LEFT); + pan = (ALPan)MIN(tmp, AL_PAN_RIGHT); alSynSetPan(sndp->drvr, &state->voice, pan); } break; case (AL_SNDP_PITCH_EVT): - /* Limit the pitch to a practical value even though we only need */ - /* to limit it to a non-zero number to avoid divide by zero. */ + /* Limit the pitch to a practical value even though we only need */ + /* to limit it to a non-zero number to avoid divide by zero. */ if ((state->pitch = event->pitch.pitch) < MIN_RATIO) - state->pitch = MIN_RATIO; - - if (state->state == AL_PLAYING){ + state->pitch = MIN_RATIO; + + if (state->state == AL_PLAYING) { alSynSetPitch(sndp->drvr, &state->voice, state->pitch); } break; - + case (AL_SNDP_FX_EVT): state->fxMix = event->fx.mix; if (state->state == AL_PLAYING) @@ -199,9 +193,9 @@ void _handleEvent(ALSndPlayer *sndp, ALSndpEvent *event) case (AL_SNDP_VOL_EVT): state->vol = event->vol.vol; - if (state->state == AL_PLAYING && snd){ - vtmp = snd->envelope->decayVolume * state->vol/AL_VOL_FULL; - alSynSetVol(sndp->drvr, &state->voice, (s16) vtmp, 1000); + if (state->state == AL_PLAYING && snd) { + vtmp = snd->envelope->decayVolume * state->vol / AL_VOL_FULL; + alSynSetVol(sndp->drvr, &state->voice, (s16)vtmp, 1000); } break; @@ -210,13 +204,13 @@ void _handleEvent(ALSndPlayer *sndp, ALSndpEvent *event) * The voice has theoretically reached its attack velocity, * set up callback for release envelope - except for a looped sound */ - if (snd->envelope->decayTime != -1){ - vtmp = snd->envelope->decayVolume * state->vol/AL_VOL_FULL; - delta = (ALMicroTime) _DivS32ByF32 (snd->envelope->decayTime, state->pitch); - alSynSetVol(sndp->drvr, &state->voice, (s16) vtmp, delta); - evt.common.type = AL_SNDP_STOP_EVT; - evt.common.state = state; - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, delta); + if (snd->envelope->decayTime != -1) { + vtmp = snd->envelope->decayVolume * state->vol / AL_VOL_FULL; + delta = (ALMicroTime)_DivS32ByF32(snd->envelope->decayTime, state->pitch); + alSynSetVol(sndp->drvr, &state->voice, (s16)vtmp, delta); + evt.common.type = AL_SNDP_STOP_EVT; + evt.common.state = state; + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, delta); } break; @@ -232,32 +226,31 @@ void _handleEvent(ALSndPlayer *sndp, ALSndpEvent *event) break; } } -static void _removeEvents(ALEventQueue *evtq, ALSoundState *state) -{ - ALLink *thisNode; - ALLink *nextNode; - ALEventListItem *thisItem; - ALEventListItem *nextItem; - ALSndpEvent *thisEvent; - OSIntMask mask; +static void _removeEvents(ALEventQueue* evtq, ALSoundState* state) { + ALLink* thisNode; + ALLink* nextNode; + ALEventListItem* thisItem; + ALEventListItem* nextItem; + ALSndpEvent* thisEvent; + OSIntMask mask; mask = osSetIntMask(OS_IM_NONE); thisNode = evtq->allocList.next; - while( thisNode != 0 ) { - nextNode = thisNode->next; - thisItem = (ALEventListItem *)thisNode; - nextItem = (ALEventListItem *)nextNode; - thisEvent = (ALSndpEvent *) &thisItem->evt; - if (thisEvent->common.state == state){ - if( nextItem ) + while (thisNode != 0) { + nextNode = thisNode->next; + thisItem = (ALEventListItem*)thisNode; + nextItem = (ALEventListItem*)nextNode; + thisEvent = (ALSndpEvent*)&thisItem->evt; + if (thisEvent->common.state == state) { + if (nextItem) nextItem->delta += thisItem->delta; alUnlink(thisNode); alLink(thisNode, &evtq->freeList); } - thisNode = nextNode; + thisNode = nextNode; } - + osSetIntMask(mask); } /* @@ -278,20 +271,19 @@ static void _removeEvents(ALEventQueue *evtq, ALSoundState *state) #elif BUILD_VERSION < VERSION_J #line 278 #endif -static s32 _DivS32ByF32 (s32 i, f32 f) -{ - #define INT_MAX 2147483647 /* Should be in a limits.h file. */ - f64 rd; - int ri; +static s32 _DivS32ByF32(s32 i, f32 f) { +#define INT_MAX 2147483647 /* Should be in a limits.h file. */ + f64 rd; + int ri; - assert(f!=0); /* Caller must make sure we do not divide by zero! */ + assert(f != 0); /* Caller must make sure we do not divide by zero! */ - rd = i/f; /* Store result as a double to avoid overflow. */ - - if (rd > INT_MAX) /* Limit the value if necessary. */ - ri = INT_MAX; + rd = i / f; /* Store result as a double to avoid overflow. */ + + if (rd > INT_MAX) /* Limit the value if necessary. */ + ri = INT_MAX; else - ri = rd; + ri = rd; return ri; } diff --git a/src/audio/sndpplay.c b/src/audio/sndpplay.c index ff5d123..77d263f 100644 --- a/src/audio/sndpplay.c +++ b/src/audio/sndpplay.c @@ -22,15 +22,13 @@ #include #include -void alSndpPlay(ALSndPlayer *sndp) -{ +void alSndpPlay(ALSndPlayer* sndp) { ALSndpEvent evt; - ALSoundState *sState = sndp->sndState; + ALSoundState* sState = sndp->sndState; ALFailIf((sState + sndp->target)->state != AL_STOPPED, ERR_ALSNDPPLAY); - + evt.common.type = AL_SNDP_PLAY_EVT; evt.common.state = &sState[sndp->target]; - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, 0); + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, 0); } - diff --git a/src/audio/sndpplayat.c b/src/audio/sndpplayat.c index b37f796..57c6e06 100644 --- a/src/audio/sndpplayat.c +++ b/src/audio/sndpplayat.c @@ -20,13 +20,11 @@ #include "sndp.h" -void alSndpPlayAt(ALSndPlayer *sndp, ALMicroTime delta) -{ +void alSndpPlayAt(ALSndPlayer* sndp, ALMicroTime delta) { ALSndpEvent evt; - ALSoundState *sState = sndp->sndState; + ALSoundState* sState = sndp->sndState; evt.common.type = AL_SNDP_PLAY_EVT; evt.common.state = &sState[sndp->target]; - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, delta); + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, delta); } - diff --git a/src/audio/sndpsetfxmix.c b/src/audio/sndpsetfxmix.c index 147c956..4b44c91 100644 --- a/src/audio/sndpsetfxmix.c +++ b/src/audio/sndpsetfxmix.c @@ -22,21 +22,19 @@ #include #include -void alSndpSetFXMix(ALSndPlayer *sndp, u8 mix) -{ +void alSndpSetFXMix(ALSndPlayer* sndp, u8 mix) { ALSndpEvent evt; - ALSoundState *sState = sndp->sndState; + ALSoundState* sState = sndp->sndState; #ifdef _DEBUG - if ((sndp->target >= sndp->maxSounds) || (sndp->target < 0)){ - __osError(ERR_ALSNDPSETPAR, 2, sndp->target, sndp->maxSounds-1); - return; + if ((sndp->target >= sndp->maxSounds) || (sndp->target < 0)) { + __osError(ERR_ALSNDPSETPAR, 2, sndp->target, sndp->maxSounds - 1); + return; } #endif evt.fx.type = AL_SNDP_FX_EVT; evt.fx.state = &sState[sndp->target]; evt.fx.mix = mix; - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, 0); + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, 0); } - diff --git a/src/audio/sndpsetpan.c b/src/audio/sndpsetpan.c index 5f98648..512e983 100644 --- a/src/audio/sndpsetpan.c +++ b/src/audio/sndpsetpan.c @@ -22,21 +22,19 @@ #include #include -void alSndpSetPan(ALSndPlayer *sndp, ALPan pan) -{ +void alSndpSetPan(ALSndPlayer* sndp, ALPan pan) { ALSndpEvent evt; - ALSoundState *sState = sndp->sndState; + ALSoundState* sState = sndp->sndState; #ifdef _DEBUG - if ((sndp->target >= sndp->maxSounds) || (sndp->target < 0)){ - __osError(ERR_ALSNDPSETPAR, 2, sndp->target, sndp->maxSounds-1); - return; + if ((sndp->target >= sndp->maxSounds) || (sndp->target < 0)) { + __osError(ERR_ALSNDPSETPAR, 2, sndp->target, sndp->maxSounds - 1); + return; } #endif evt.pan.type = AL_SNDP_PAN_EVT; - evt.pan.pan = pan; + evt.pan.pan = pan; evt.pan.state = &sState[sndp->target]; - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, 0); + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, 0); } - diff --git a/src/audio/sndpsetpitch.c b/src/audio/sndpsetpitch.c index 0ee174c..4aba534 100644 --- a/src/audio/sndpsetpitch.c +++ b/src/audio/sndpsetpitch.c @@ -22,27 +22,25 @@ #include #include -void alSndpSetPitch(ALSndPlayer *sndp, f32 pitch) -{ +void alSndpSetPitch(ALSndPlayer* sndp, f32 pitch) { ALSndpEvent evt; - ALSoundState *sState = sndp->sndState; + ALSoundState* sState = sndp->sndState; /* * If this is set during playback there will be * a the envelope lengths won't be accurate - but you can still - * do it. + * do it. */ #ifdef _DEBUG - if ((sndp->target >= sndp->maxSounds) || (sndp->target < 0)){ - __osError(ERR_ALSNDPSETPAR, 2, sndp->target, sndp->maxSounds-1); - return; + if ((sndp->target >= sndp->maxSounds) || (sndp->target < 0)) { + __osError(ERR_ALSNDPSETPAR, 2, sndp->target, sndp->maxSounds - 1); + return; } #endif evt.pitch.type = AL_SNDP_PITCH_EVT; evt.pitch.state = &sState[sndp->target]; evt.pitch.pitch = pitch; - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, 0); + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, 0); } - diff --git a/src/audio/sndpsetpriority.c b/src/audio/sndpsetpriority.c index 0d0fbc0..d4247a3 100644 --- a/src/audio/sndpsetpriority.c +++ b/src/audio/sndpsetpriority.c @@ -22,17 +22,15 @@ #include #include -void alSndpSetPriority(ALSndPlayer *sndp, ALSndId id, u8 priority) -{ - ALSoundState *sState = sndp->sndState; +void alSndpSetPriority(ALSndPlayer* sndp, ALSndId id, u8 priority) { + ALSoundState* sState = sndp->sndState; #ifdef _DEBUG - if ((id >= sndp->maxSounds) || (id < 0)){ - __osError(ERR_ALSNDPSETPRIORITY, 2, id, sndp->maxSounds-1); - return; + if ((id >= sndp->maxSounds) || (id < 0)) { + __osError(ERR_ALSNDPSETPRIORITY, 2, id, sndp->maxSounds - 1); + return; } #endif sState[id].priority = priority; } - diff --git a/src/audio/sndpsetsound.c b/src/audio/sndpsetsound.c index 3d341ec..d2f42a0 100644 --- a/src/audio/sndpsetsound.c +++ b/src/audio/sndpsetsound.c @@ -22,15 +22,13 @@ #include #include -void alSndpSetSound(ALSndPlayer *sndp, ALSndId id) -{ +void alSndpSetSound(ALSndPlayer* sndp, ALSndId id) { #ifdef _DEBUG - if ((id >= sndp->maxSounds) || (id < 0)){ - __osError(ERR_ALSNDPSETSOUND, 2, id, sndp->maxSounds-1); - return; + if ((id >= sndp->maxSounds) || (id < 0)) { + __osError(ERR_ALSNDPSETSOUND, 2, id, sndp->maxSounds - 1); + return; } #endif sndp->target = id; } - diff --git a/src/audio/sndpsetvol.c b/src/audio/sndpsetvol.c index ad79f5f..5fd7e10 100644 --- a/src/audio/sndpsetvol.c +++ b/src/audio/sndpsetvol.c @@ -22,21 +22,19 @@ #include #include -void alSndpSetVol(ALSndPlayer *sndp, s16 vol) -{ +void alSndpSetVol(ALSndPlayer* sndp, s16 vol) { ALSndpEvent evt; - ALSoundState *sState = sndp->sndState; + ALSoundState* sState = sndp->sndState; #ifdef _DEBUG - if ((sndp->target >= sndp->maxSounds) || (sndp->target < 0)){ - __osError(ERR_ALSNDPSETPAR, 2, sndp->target, sndp->maxSounds-1); - return; + if ((sndp->target >= sndp->maxSounds) || (sndp->target < 0)) { + __osError(ERR_ALSNDPSETPAR, 2, sndp->target, sndp->maxSounds - 1); + return; } #endif evt.vol.type = AL_SNDP_VOL_EVT; evt.vol.state = &sState[sndp->target]; evt.vol.vol = vol; - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, 0); + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, 0); } - diff --git a/src/audio/sndpstop.c b/src/audio/sndpstop.c index 69aead6..00c0c8e 100644 --- a/src/audio/sndpstop.c +++ b/src/audio/sndpstop.c @@ -20,16 +20,14 @@ #include "sndp.h" -void alSndpStop(ALSndPlayer *sndp) -{ +void alSndpStop(ALSndPlayer* sndp) { ALSndpEvent evt; - ALSoundState *sState = sndp->sndState; + ALSoundState* sState = sndp->sndState; /* * Go immediately into the release phase */ evt.common.type = AL_SNDP_STOP_EVT; evt.common.state = &sState[sndp->target]; - alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, 0); + alEvtqPostEvent(&sndp->evtq, (ALEvent*)&evt, 0); } - diff --git a/src/audio/synaddplayer.c b/src/audio/synaddplayer.c index 77efb29..ed77ac6 100644 --- a/src/audio/synaddplayer.c +++ b/src/audio/synaddplayer.c @@ -21,14 +21,12 @@ #include "synthInternals.h" #include -void alSynAddPlayer(ALSynth *drvr, ALPlayer *client) -{ +void alSynAddPlayer(ALSynth* drvr, ALPlayer* client) { OSIntMask mask = osSetIntMask(OS_IM_NONE); client->samplesLeft = drvr->curSamples; client->next = drvr->head; - drvr->head = client; + drvr->head = client; osSetIntMask(mask); } - diff --git a/src/audio/synallocfx.c b/src/audio/synallocfx.c index e0e7f26..67b7c0b 100644 --- a/src/audio/synallocfx.c +++ b/src/audio/synallocfx.c @@ -20,13 +20,10 @@ #include "synthInternals.h" -ALFxRef *alSynAllocFX(ALSynth *s, s16 bus, ALSynConfig *c, ALHeap *hp) -{ +ALFxRef* alSynAllocFX(ALSynth* s, s16 bus, ALSynConfig* c, ALHeap* hp) { alFxNew(&s->auxBus[bus].fx[0], c, hp); - alFxParam(&s->auxBus[bus].fx[0], AL_FILTER_SET_SOURCE, - &s->auxBus[bus]); - alMainBusParam(s->mainBus, AL_FILTER_ADD_SOURCE,&s->auxBus[bus].fx[0]); + alFxParam(&s->auxBus[bus].fx[0], AL_FILTER_SET_SOURCE, &s->auxBus[bus]); + alMainBusParam(s->mainBus, AL_FILTER_ADD_SOURCE, &s->auxBus[bus].fx[0]); return (ALFxRef)(&s->auxBus[bus].fx[0]); } - diff --git a/src/audio/synallocvoice.c b/src/audio/synallocvoice.c index 73d608d..b2d6c13 100644 --- a/src/audio/synallocvoice.c +++ b/src/audio/synallocvoice.c @@ -22,15 +22,14 @@ #include #include "synthInternals.h" -s32 _allocatePVoice(ALSynth *drvr, PVoice **pvoice, s16 priority); +s32 _allocatePVoice(ALSynth* drvr, PVoice** pvoice, s16 priority); -s32 alSynAllocVoice(ALSynth *drvr, ALVoice *voice, ALVoiceConfig *vc) -{ - PVoice *pvoice = 0; - ALFilter *f; - ALParam *update; +s32 alSynAllocVoice(ALSynth* drvr, ALVoice* voice, ALVoiceConfig* vc) { + PVoice* pvoice = 0; + ALFilter* f; + ALParam* update; s32 stolen; - + #ifdef _DEBUG /* need two updates if voice is stolen */ if (drvr->paramList == 0) { @@ -40,33 +39,33 @@ s32 alSynAllocVoice(ALSynth *drvr, ALVoice *voice, ALVoiceConfig *vc) __osError(ERR_ALSYN_NO_UPDATE, 0); return 0; } -#endif +#endif - voice->priority = vc->priority; - voice->unityPitch = vc->unityPitch; - voice->table = 0; - voice->fxBus = vc->fxBus; - voice->state = AL_STOPPED; - voice->pvoice = 0; + voice->priority = vc->priority; + voice->unityPitch = vc->unityPitch; + voice->table = 0; + voice->fxBus = vc->fxBus; + voice->state = AL_STOPPED; + voice->pvoice = 0; stolen = _allocatePVoice(drvr, &pvoice, vc->priority); - - if (pvoice) { /* if we were able to allocate a voice */ - f = pvoice->channelKnob; - + if (pvoice) { /* if we were able to allocate a voice */ + + f = pvoice->channelKnob; + if (stolen) { - + pvoice->offset = 512; pvoice->vvoice->pvoice = 0; /* zero stolen voice */ - + /* * ramp down stolen voice */ update = __allocParam(); - update->delta = drvr->paramSamples; - update->type = AL_FILTER_SET_VOLUME; - update->data.i = 0; + update->delta = drvr->paramSamples; + update->type = AL_FILTER_SET_VOLUME; + update->data.i = 0; update->moredata.i = pvoice->offset - 64; (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); @@ -75,12 +74,12 @@ s32 alSynAllocVoice(ALSynth *drvr, ALVoice *voice, ALVoiceConfig *vc) */ update = __allocParam(); if (update) { - update->delta = drvr->paramSamples + pvoice->offset; - update->type = AL_FILTER_STOP_VOICE; - update->next = 0; + update->delta = drvr->paramSamples + pvoice->offset; + update->type = AL_FILTER_STOP_VOICE; + update->next = 0; (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); } else { -#ifdef _DEBUG +#ifdef _DEBUG __osError(ERR_ALSYN_NO_UPDATE, 0); #endif } @@ -88,32 +87,30 @@ s32 alSynAllocVoice(ALSynth *drvr, ALVoice *voice, ALVoiceConfig *vc) } else { pvoice->offset = 0; } - - pvoice->vvoice = voice; /* assign new voice */ - voice->pvoice = pvoice; + pvoice->vvoice = voice; /* assign new voice */ + voice->pvoice = pvoice; } - - return (pvoice != 0); + + return (pvoice != 0); } -s32 _allocatePVoice(ALSynth *drvr, PVoice **pvoice, s16 priority) -{ - ALLink *dl; - PVoice *pv; - s32 stolen = 0; - +s32 _allocatePVoice(ALSynth* drvr, PVoice** pvoice, s16 priority) { + ALLink* dl; + PVoice* pv; + s32 stolen = 0; + if ((dl = drvr->pLameList.next) != 0) { /* check the lame list first */ - *pvoice = (PVoice *) dl; + *pvoice = (PVoice*)dl; alUnlink(dl); - alLink(dl, &drvr->pAllocList); + alLink(dl, &drvr->pAllocList); } else if ((dl = drvr->pFreeList.next) != 0) { /* from the free list */ - *pvoice = (PVoice *) dl; + *pvoice = (PVoice*)dl; alUnlink(dl); - alLink(dl, &drvr->pAllocList); + alLink(dl, &drvr->pAllocList); } else { /* steal one */ for (dl = drvr->pAllocList.next; dl != 0; dl = dl->next) { - pv = (PVoice *)dl; + pv = (PVoice*)dl; /* * if it is lower priority and not already stolen, keep it @@ -126,7 +123,6 @@ s32 _allocatePVoice(ALSynth *drvr, PVoice **pvoice, s16 priority) } } } - + return stolen; } - diff --git a/src/audio/syndelete.c b/src/audio/syndelete.c index 900fe76..6c92a5b 100644 --- a/src/audio/syndelete.c +++ b/src/audio/syndelete.c @@ -20,8 +20,6 @@ #include "synthInternals.h" -void alSynDelete(ALSynth *drvr) -{ +void alSynDelete(ALSynth* drvr) { drvr->head = 0; } - diff --git a/src/audio/synfreefx.c b/src/audio/synfreefx.c index be436ea..3e6e9fc 100644 --- a/src/audio/synfreefx.c +++ b/src/audio/synfreefx.c @@ -20,7 +20,5 @@ #include "synthInternals.h" -void alSynFreeFX(ALSynth *s, ALFxRef *fx) -{ +void alSynFreeFX(ALSynth* s, ALFxRef* fx) { } - diff --git a/src/audio/synfreevoice.c b/src/audio/synfreevoice.c index eaa71ac..fc175cd 100644 --- a/src/audio/synfreevoice.c +++ b/src/audio/synfreevoice.c @@ -24,22 +24,21 @@ #include -void alSynFreeVoice(ALSynth *drvr, ALVoice *voice) -{ - ALFilter *f; - ALFreeParam *update; +void alSynFreeVoice(ALSynth* drvr, ALVoice* voice) { + ALFilter* f; + ALFreeParam* update; if (voice->pvoice) { if (voice->pvoice->offset) { /* if voice was stolen */ - update = (ALFreeParam *)__allocParam(); + update = (ALFreeParam*)__allocParam(); ALFailIf(update == 0, ERR_ALSYN_NO_UPDATE); /* * set voice data */ - update->delta = drvr->paramSamples + voice->pvoice->offset; - update->type = AL_FILTER_FREE_VOICE; + update->delta = drvr->paramSamples + voice->pvoice->offset; + update->type = AL_FILTER_FREE_VOICE; update->pvoice = voice->pvoice; f = voice->pvoice->channelKnob; @@ -49,6 +48,5 @@ void alSynFreeVoice(ALSynth *drvr, ALVoice *voice) } voice->pvoice = 0; - } } diff --git a/src/audio/syngetfxref.c b/src/audio/syngetfxref.c index b0fa577..0f2e97e 100644 --- a/src/audio/syngetfxref.c +++ b/src/audio/syngetfxref.c @@ -20,14 +20,12 @@ #include "synthInternals.h" -ALFxRef alSynGetFXRef(ALSynth *s, s16 bus, s16 index) -{ - ALMainBus *m = (ALMainBus *) s->mainBus; - ALFilter **sources = m->sources; +ALFxRef alSynGetFXRef(ALSynth* s, s16 bus, s16 index) { + ALMainBus* m = (ALMainBus*)s->mainBus; + ALFilter** sources = m->sources; if (sources[0]->type == AL_FX) - return (ALFxRef)(&s->auxBus[bus].fx[index]); + return (ALFxRef)(&s->auxBus[bus].fx[index]); else - return 0; + return 0; } - diff --git a/src/audio/syngetpriority.c b/src/audio/syngetpriority.c index 68de365..d1f302e 100644 --- a/src/audio/syngetpriority.c +++ b/src/audio/syngetpriority.c @@ -20,8 +20,6 @@ #include "synthInternals.h" -s16 alSynGetPriority(ALSynth *s, ALVoice *voice) -{ +s16 alSynGetPriority(ALSynth* s, ALVoice* voice) { return voice->priority; } - diff --git a/src/audio/synremoveplayer.c b/src/audio/synremoveplayer.c index 0248a7e..74545eb 100644 --- a/src/audio/synremoveplayer.c +++ b/src/audio/synremoveplayer.c @@ -21,29 +21,26 @@ #include "synthInternals.h" #include -void alSynRemovePlayer(ALSynth *drvr, ALPlayer *client) -{ - ALPlayer *thing; - ALPlayer *prev = 0; +void alSynRemovePlayer(ALSynth* drvr, ALPlayer* client) { + ALPlayer* thing; + ALPlayer* prev = 0; - if (drvr->head != 0) - { - OSIntMask mask = osSetIntMask(OS_IM_NONE); + if (drvr->head != 0) { + OSIntMask mask = osSetIntMask(OS_IM_NONE); for (thing = drvr->head; thing != 0; thing = thing->next) { if (thing == client) { - if(prev) - prev->next = thing->next; - else - drvr->head = thing->next; + if (prev) + prev->next = thing->next; + else + drvr->head = thing->next; client->next = 0; - break; + break; } - prev = thing; + prev = thing; } - osSetIntMask(mask); + osSetIntMask(mask); } } - diff --git a/src/audio/synsetfxmix.c b/src/audio/synsetfxmix.c index c787103..21138cd 100644 --- a/src/audio/synsetfxmix.c +++ b/src/audio/synsetfxmix.c @@ -22,10 +22,9 @@ #include #include -void alSynSetFXMix(ALSynth *synth, ALVoice *v, u8 fxmix) -{ - ALParam *update; - ALFilter *f; +void alSynSetFXMix(ALSynth* synth, ALVoice* v, u8 fxmix) { + ALParam* update; + ALFilter* f; if (v->pvoice) { /* @@ -37,13 +36,13 @@ void alSynSetFXMix(ALSynth *synth, ALVoice *v, u8 fxmix) /* * set offset and fxmix data */ - update->delta = synth->paramSamples + v->pvoice->offset; - update->type = AL_FILTER_SET_FXAMT; + update->delta = synth->paramSamples + v->pvoice->offset; + update->type = AL_FILTER_SET_FXAMT; #if BUILD_VERSION >= VERSION_J if (fxmix > 127) { fxmix = 127; } - update->data.i = fxmix; + update->data.i = fxmix; #else if (fxmix < 0) { // Not possible update->data.i = -fxmix; @@ -51,10 +50,9 @@ void alSynSetFXMix(ALSynth *synth, ALVoice *v, u8 fxmix) update->data.i = fxmix; } #endif - update->next = 0; + update->next = 0; f = v->pvoice->channelKnob; - (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); + (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); } } - diff --git a/src/audio/synsetfxparam.c b/src/audio/synsetfxparam.c index b3991f6..73e54ae 100644 --- a/src/audio/synsetfxparam.c +++ b/src/audio/synsetfxparam.c @@ -20,10 +20,8 @@ #include "synthInternals.h" -void alSynSetFXParam(ALSynth *synth, ALFxRef fx, s16 paramID, void *param) -{ - ALFx *f = (ALFx *)fx; - +void alSynSetFXParam(ALSynth* synth, ALFxRef fx, s16 paramID, void* param) { + ALFx* f = (ALFx*)fx; + (*f->paramHdl)(f, (s32)paramID, param); } - diff --git a/src/audio/synsetpan.c b/src/audio/synsetpan.c index 0d68538..1688e07 100644 --- a/src/audio/synsetpan.c +++ b/src/audio/synsetpan.c @@ -22,10 +22,9 @@ #include #include -void alSynSetPan(ALSynth *synth, ALVoice *v, u8 pan) -{ - ALParam *update; - ALFilter *f; +void alSynSetPan(ALSynth* synth, ALVoice* v, u8 pan) { + ALParam* update; + ALFilter* f; if (v->pvoice) { @@ -38,13 +37,12 @@ void alSynSetPan(ALSynth *synth, ALVoice *v, u8 pan) /* * set offset and pan data */ - update->delta = synth->paramSamples + v->pvoice->offset; - update->type = AL_FILTER_SET_PAN; + update->delta = synth->paramSamples + v->pvoice->offset; + update->type = AL_FILTER_SET_PAN; update->data.i = pan; - update->next = 0; + update->next = 0; f = v->pvoice->channelKnob; - (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); + (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); } } - diff --git a/src/audio/synsetpitch.c b/src/audio/synsetpitch.c index 0bfb7ba..6eb4125 100644 --- a/src/audio/synsetpitch.c +++ b/src/audio/synsetpitch.c @@ -22,29 +22,27 @@ #include #include -void alSynSetPitch(ALSynth *synth, ALVoice *v, f32 pitch) -{ - ALParam *update; - ALFilter *f; +void alSynSetPitch(ALSynth* synth, ALVoice* v, f32 pitch) { + ALParam* update; + ALFilter* f; - if (v->pvoice) { + if (v->pvoice) { /* * get new update struct from the free list */ - + update = __allocParam(); ALFailIf(update == 0, ERR_ALSYN_NO_UPDATE); /* * set offset and pitch data */ - update->delta = synth->paramSamples + v->pvoice->offset; - update->type = AL_FILTER_SET_PITCH; + update->delta = synth->paramSamples + v->pvoice->offset; + update->type = AL_FILTER_SET_PITCH; update->data.f = pitch; - update->next = 0; + update->next = 0; f = v->pvoice->channelKnob; - (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); + (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); } } - diff --git a/src/audio/synsetpriority.c b/src/audio/synsetpriority.c index c680bcc..334c1c3 100644 --- a/src/audio/synsetpriority.c +++ b/src/audio/synsetpriority.c @@ -20,8 +20,6 @@ #include -void alSynSetPriority(ALSynth *s, ALVoice *voice, s16 priority) -{ +void alSynSetPriority(ALSynth* s, ALVoice* voice, s16 priority) { voice->priority = priority; } - diff --git a/src/audio/synsetvol.c b/src/audio/synsetvol.c index 181c96f..ac95147 100644 --- a/src/audio/synsetvol.c +++ b/src/audio/synsetvol.c @@ -22,10 +22,9 @@ #include #include -void alSynSetVol(ALSynth *synth, ALVoice *v, s16 volume, ALMicroTime t) -{ - ALParam *update; - ALFilter *f; +void alSynSetVol(ALSynth* synth, ALVoice* v, s16 volume, ALMicroTime t) { + ALParam* update; + ALFilter* f; if (v->pvoice) { /* @@ -37,14 +36,13 @@ void alSynSetVol(ALSynth *synth, ALVoice *v, s16 volume, ALMicroTime t) /* * set offset and volume data */ - update->delta = synth->paramSamples + v->pvoice->offset; - update->type = AL_FILTER_SET_VOLUME; - update->data.i = volume; - update->moredata.i = _timeToSamples(synth, t); - update->next = 0; + update->delta = synth->paramSamples + v->pvoice->offset; + update->type = AL_FILTER_SET_VOLUME; + update->data.i = volume; + update->moredata.i = _timeToSamples(synth, t); + update->next = 0; f = v->pvoice->channelKnob; - (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); + (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); } } - diff --git a/src/audio/synstartvoice.c b/src/audio/synstartvoice.c index 9ad1d89..8e67299 100644 --- a/src/audio/synstartvoice.c +++ b/src/audio/synstartvoice.c @@ -22,27 +22,25 @@ #include #include -void alSynStartVoice(ALSynth *synth, ALVoice *v, ALWaveTable *table) -{ - ALStartParam *update; - ALFilter *f; - +void alSynStartVoice(ALSynth* synth, ALVoice* v, ALWaveTable* table) { + ALStartParam* update; + ALFilter* f; + if (v->pvoice) { - - update = (ALStartParam *)__allocParam(); + + update = (ALStartParam*)__allocParam(); ALFailIf(update == 0, ERR_ALSYN_NO_UPDATE); /* * send the start message to the motion control filter */ - update->delta = synth->paramSamples + v->pvoice->offset; - update->type = AL_FILTER_START_VOICE; - update->wave = table; - update->next = 0; - update->unity = v->unityPitch; + update->delta = synth->paramSamples + v->pvoice->offset; + update->type = AL_FILTER_START_VOICE; + update->wave = table; + update->next = 0; + update->unity = v->unityPitch; f = v->pvoice->channelKnob; (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); } } - diff --git a/src/audio/synstartvoiceparam.c b/src/audio/synstartvoiceparam.c index 8d1a54b..198741a 100644 --- a/src/audio/synstartvoiceparam.c +++ b/src/audio/synstartvoiceparam.c @@ -27,18 +27,16 @@ #ident "$Revision: 1.17 $" #endif -void alSynStartVoiceParams(ALSynth *s, ALVoice *v, ALWaveTable *w, - f32 pitch, s16 vol, ALPan pan, u8 fxmix, - ALMicroTime t) -{ - ALStartParamAlt *update; - ALFilter *f; +void alSynStartVoiceParams(ALSynth* s, ALVoice* v, ALWaveTable* w, f32 pitch, s16 vol, ALPan pan, u8 fxmix, + ALMicroTime t) { + ALStartParamAlt* update; + ALFilter* f; if (v->pvoice) { /* * get new update struct from the free list */ - update = (ALStartParamAlt *)__allocParam(); + update = (ALStartParamAlt*)__allocParam(); ALFailIf(update == 0, ERR_ALSYN_NO_UPDATE); #if BUILD_VERSION >= VERSION_J @@ -50,26 +48,23 @@ void alSynStartVoiceParams(ALSynth *s, ALVoice *v, ALWaveTable *w, fxmix = -fxmix; } #endif - + /* * set offset and fxmix data */ - update->delta = s->paramSamples + v->pvoice->offset; - update->next = 0; - update->type = AL_FILTER_START_VOICE_ALT; + update->delta = s->paramSamples + v->pvoice->offset; + update->next = 0; + update->type = AL_FILTER_START_VOICE_ALT; - update->unity = v->unityPitch; - update->pan = pan; + update->unity = v->unityPitch; + update->pan = pan; update->volume = vol; - update->fxMix = fxmix; - update->pitch = pitch; + update->fxMix = fxmix; + update->pitch = pitch; update->samples = _timeToSamples(s, t); - update->wave = w; - + update->wave = w; + f = v->pvoice->channelKnob; - (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); + (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); } - } - - diff --git a/src/audio/synstopvoice.c b/src/audio/synstopvoice.c index 69c09d8..4e8a292 100644 --- a/src/audio/synstopvoice.c +++ b/src/audio/synstopvoice.c @@ -22,23 +22,20 @@ #include #include +void alSynStopVoice(ALSynth* synth, ALVoice* v) { + ALParam* update; + ALFilter* f; -void alSynStopVoice(ALSynth *synth, ALVoice *v) -{ - ALParam *update; - ALFilter *f; - if (v->pvoice) { - + update = __allocParam(); ALFailIf(update == 0, ERR_ALSYN_NO_UPDATE); - update->delta = synth->paramSamples + v->pvoice->offset; - update->type = AL_FILTER_STOP_VOICE; - update->next = 0; + update->delta = synth->paramSamples + v->pvoice->offset; + update->type = AL_FILTER_STOP_VOICE; + update->next = 0; f = v->pvoice->channelKnob; - (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); + (*f->setParam)(f, AL_FILTER_ADD_UPDATE, update); } } - diff --git a/src/audio/synthInternals.h b/src/audio/synthInternals.h index c6c476c..4796109 100644 --- a/src/audio/synthInternals.h +++ b/src/audio/synthInternals.h @@ -36,14 +36,14 @@ enum { AL_FILTER_ADD_UPDATE, AL_FILTER_RESET, AL_FILTER_SET_WAVETABLE, -/* AL_FILTER_SET_DMA_PROC,*/ -/* AL_FILTER_SKIP_LOOP,*/ + /* AL_FILTER_SET_DMA_PROC,*/ + /* AL_FILTER_SKIP_LOOP,*/ AL_FILTER_SET_DRAM, AL_FILTER_SET_PITCH, AL_FILTER_SET_UNITY_PITCH, AL_FILTER_START, -/* AL_FILTER_SET_DECAY,*/ -/* AL_FILTER_SET_FC,*/ + /* AL_FILTER_SET_DECAY,*/ + /* AL_FILTER_SET_FC,*/ AL_FILTER_SET_STATE, AL_FILTER_SET_VOLUME, AL_FILTER_SET_PAN, @@ -53,292 +53,282 @@ enum { AL_FILTER_SET_FXAMT }; -#define AL_MAX_RSP_SAMPLES 160 - +#define AL_MAX_RSP_SAMPLES 160 + /* * buffer locations based on AL_MAX_RSP_SAMPLES */ -#define AL_DECODER_IN 0 -#define AL_RESAMPLER_OUT 0 -#define AL_TEMP_0 0 -#define AL_DECODER_OUT 320 -#define AL_TEMP_1 320 -#define AL_TEMP_2 640 -#define AL_MAIN_L_OUT 1088 -#define AL_MAIN_R_OUT 1408 -#define AL_AUX_L_OUT 1728 -#define AL_AUX_R_OUT 2048 +#define AL_DECODER_IN 0 +#define AL_RESAMPLER_OUT 0 +#define AL_TEMP_0 0 +#define AL_DECODER_OUT 320 +#define AL_TEMP_1 320 +#define AL_TEMP_2 640 +#define AL_MAIN_L_OUT 1088 +#define AL_MAIN_R_OUT 1408 +#define AL_AUX_L_OUT 1728 +#define AL_AUX_R_OUT 2048 /* * filter types */ -enum { - AL_ADPCM, - AL_RESAMPLE, - AL_BUFFER, - AL_SAVE, - AL_ENVMIX, - AL_FX, - AL_AUXBUS, - AL_MAINBUS -}; +enum { AL_ADPCM, AL_RESAMPLE, AL_BUFFER, AL_SAVE, AL_ENVMIX, AL_FX, AL_AUXBUS, AL_MAINBUS }; typedef struct ALParam_s { - struct ALParam_s *next; - s32 delta; - s16 type; + struct ALParam_s* next; + s32 delta; + s16 type; union { - f32 f; - s32 i; + f32 f; + s32 i; } data; union { - f32 f; - s32 i; + f32 f; + s32 i; } moredata; union { - f32 f; - s32 i; + f32 f; + s32 i; } stillmoredata; union { - f32 f; - s32 i; + f32 f; + s32 i; } yetstillmoredata; } ALParam; typedef struct { - struct ALParam_s *next; - s32 delta; - s16 type; - s16 unity; /* disable resampler */ - f32 pitch; - s16 volume; - ALPan pan; - u8 fxMix; - s32 samples; - struct ALWaveTable_s *wave; + struct ALParam_s* next; + s32 delta; + s16 type; + s16 unity; /* disable resampler */ + f32 pitch; + s16 volume; + ALPan pan; + u8 fxMix; + s32 samples; + struct ALWaveTable_s* wave; } ALStartParamAlt; typedef struct { - struct ALParam_s *next; - s32 delta; - s16 type; - s16 unity; /* disable resampler */ - struct ALWaveTable_s *wave; + struct ALParam_s* next; + s32 delta; + s16 type; + s16 unity; /* disable resampler */ + struct ALWaveTable_s* wave; } ALStartParam; typedef struct { - struct ALParam_s *next; - s32 delta; - s16 type; - struct PVoice_s *pvoice; + struct ALParam_s* next; + s32 delta; + s16 type; + struct PVoice_s* pvoice; } ALFreeParam; -typedef Acmd *(*ALCmdHandler)(void *, s16 *, s32, s32, Acmd *); -typedef s32 (*ALSetParam)(void *, s32, void *); +typedef Acmd* (*ALCmdHandler)(void*, s16*, s32, s32, Acmd*); +typedef s32 (*ALSetParam)(void*, s32, void*); typedef struct ALFilter_s { - struct ALFilter_s *source; - ALCmdHandler handler; - ALSetParam setParam; - s16 inp; - s16 outp; - s32 type; + struct ALFilter_s* source; + ALCmdHandler handler; + ALSetParam setParam; + s16 inp; + s16 outp; + s32 type; } ALFilter; -void alFilterNew(ALFilter *f, ALCmdHandler h, ALSetParam s, s32 type); +void alFilterNew(ALFilter* f, ALCmdHandler h, ALSetParam s, s32 type); -#define AL_MAX_ADPCM_STATES 3 /* Depends on number of subframes - * per frame and loop length - */ +#define AL_MAX_ADPCM_STATES \ + 3 /* Depends on number of subframes \ + * per frame and loop length \ + */ typedef struct { - ALFilter filter; - ADPCM_STATE *state; - ADPCM_STATE *lstate; - ALRawLoop loop; - struct ALWaveTable_s *table; - s32 bookSize; - ALDMAproc dma; - void *dmaState; - s32 sample; - s32 lastsam; - s32 first; - s32 memin; + ALFilter filter; + ADPCM_STATE* state; + ADPCM_STATE* lstate; + ALRawLoop loop; + struct ALWaveTable_s* table; + s32 bookSize; + ALDMAproc dma; + void* dmaState; + s32 sample; + s32 lastsam; + s32 first; + s32 memin; } ALLoadFilter; -void alLoadNew(ALLoadFilter *f, ALDMANew dma, ALHeap *hp); -Acmd *alAdpcmPull(void *f, s16 *outp, s32 byteCount, s32 sampleOffset, Acmd *p); -Acmd *alRaw16Pull(void *f, s16 *outp, s32 byteCount, s32 sampleOffset, Acmd *p); -s32 alLoadParam(void *filter, s32 paramID, void *param); +void alLoadNew(ALLoadFilter* f, ALDMANew dma, ALHeap* hp); +Acmd* alAdpcmPull(void* f, s16* outp, s32 byteCount, s32 sampleOffset, Acmd* p); +Acmd* alRaw16Pull(void* f, s16* outp, s32 byteCount, s32 sampleOffset, Acmd* p); +s32 alLoadParam(void* filter, s32 paramID, void* param); typedef struct ALResampler_s { - ALFilter filter; - RESAMPLE_STATE *state; - f32 ratio; - s32 upitch; - f32 delta; - s32 first; - ALParam *ctrlList; - ALParam *ctrlTail; - s32 motion; + ALFilter filter; + RESAMPLE_STATE* state; + f32 ratio; + s32 upitch; + f32 delta; + s32 first; + ALParam* ctrlList; + ALParam* ctrlTail; + s32 motion; } ALResampler; typedef struct { - s16 fc; - s16 fgain; + s16 fc; + s16 fgain; union { - s16 fccoef[16]; - s64 force_aligned; + s16 fccoef[16]; + s64 force_aligned; } fcvec; - POLEF_STATE *fstate; - s32 first; + POLEF_STATE* fstate; + s32 first; } ALLowPass; typedef struct { - u32 input; - u32 output; - s16 ffcoef; - s16 fbcoef; - s16 gain; - f32 rsinc; - f32 rsval; - s32 rsdelta; - f32 rsgain; - ALLowPass *lp; - ALResampler *rs; + u32 input; + u32 output; + s16 ffcoef; + s16 fbcoef; + s16 gain; + f32 rsinc; + f32 rsval; + s32 rsdelta; + f32 rsgain; + ALLowPass* lp; + ALResampler* rs; } ALDelay; -typedef s32 (*ALSetFXParam)(void *, s32, void *); +typedef s32 (*ALSetFXParam)(void*, s32, void*); typedef struct { - struct ALFilter_s filter; - s16 *base; - s16 *input; - u32 length; - ALDelay *delay; - u8 section_count; - ALSetFXParam paramHdl; + struct ALFilter_s filter; + s16* base; + s16* input; + u32 length; + ALDelay* delay; + u8 section_count; + ALSetFXParam paramHdl; } ALFx; -void alFxNew(ALFx *r, ALSynConfig *c, ALHeap *hp); -Acmd *alFxPull(void *f, s16 *outp, s32 out, s32 sampleOffset, Acmd *p); -s32 alFxParam(void *filter, s32 paramID, void *param); -s32 alFxParamHdl(void *filter, s32 paramID, void *param); +void alFxNew(ALFx* r, ALSynConfig* c, ALHeap* hp); +Acmd* alFxPull(void* f, s16* outp, s32 out, s32 sampleOffset, Acmd* p); +s32 alFxParam(void* filter, s32 paramID, void* param); +s32 alFxParamHdl(void* filter, s32 paramID, void* param); -#define AL_MAX_MAIN_BUS_SOURCES 1 +#define AL_MAX_MAIN_BUS_SOURCES 1 typedef struct ALMainBus_s { - ALFilter filter; - s32 sourceCount; - s32 maxSources; - ALFilter **sources; + ALFilter filter; + s32 sourceCount; + s32 maxSources; + ALFilter** sources; } ALMainBus; -void alMainBusNew(ALMainBus *m, void *ptr, s32 len); -Acmd *alMainBusPull(void *f, s16 *outp, s32 outCount, s32 sampleOffset, Acmd *p); -s32 alMainBusParam(void *filter, s32 paramID, void *param); +void alMainBusNew(ALMainBus* m, void* ptr, s32 len); +Acmd* alMainBusPull(void* f, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +s32 alMainBusParam(void* filter, s32 paramID, void* param); -#define AL_MAX_AUX_BUS_SOURCES 8 -#define AL_MAX_AUX_BUS_FX 1 +#define AL_MAX_AUX_BUS_SOURCES 8 +#define AL_MAX_AUX_BUS_FX 1 typedef struct ALAuxBus_s { - ALFilter filter; - s32 sourceCount; - s32 maxSources; - ALFilter **sources; - ALFx fx[AL_MAX_AUX_BUS_FX]; + ALFilter filter; + s32 sourceCount; + s32 maxSources; + ALFilter** sources; + ALFx fx[AL_MAX_AUX_BUS_FX]; } ALAuxBus; -void alAuxBusNew(ALAuxBus *m, void *ptr, s32 len); -Acmd *alAuxBusPull(void *f, s16 *outp, s32 outCount, s32 sampleOffset, Acmd *p); -s32 alAuxBusParam(void *filter, s32 paramID, void *param); +void alAuxBusNew(ALAuxBus* m, void* ptr, s32 len); +Acmd* alAuxBusPull(void* f, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +s32 alAuxBusParam(void* filter, s32 paramID, void* param); -void alResampleNew(ALResampler *r, ALHeap *hp); -Acmd *alResamplePull(void *f, s16 *outp, s32 out, s32 sampleOffset, Acmd *p); -s32 alResampleParam(void *f, s32 paramID, void *param); +void alResampleNew(ALResampler* r, ALHeap* hp); +Acmd* alResamplePull(void* f, s16* outp, s32 out, s32 sampleOffset, Acmd* p); +s32 alResampleParam(void* f, s32 paramID, void* param); typedef struct ALSave_s { - ALFilter filter; - s32 dramout; - s32 first; + ALFilter filter; + s32 dramout; + s32 first; } ALSave; -void alSaveNew(ALSave *r); -Acmd *alSavePull(void *f, s16 *outp, s32 outCount, s32 sampleOffset, Acmd *p); -s32 alSaveParam(void *f, s32 paramID, void *param); +void alSaveNew(ALSave* r); +Acmd* alSavePull(void* f, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +s32 alSaveParam(void* f, s32 paramID, void* param); typedef struct ALEnvMixer_s { - ALFilter filter; - ENVMIX_STATE *state; - s16 pan; - s16 volume; - s16 cvolL; - s16 cvolR; - s16 dryamt; - s16 wetamt; - u16 lratl; - s16 lratm; - s16 ltgt; - u16 rratl; - s16 rratm; - s16 rtgt; - s32 delta; - s32 segEnd; - s32 first; - ALParam *ctrlList; - ALParam *ctrlTail; - ALFilter **sources; - s32 motion; + ALFilter filter; + ENVMIX_STATE* state; + s16 pan; + s16 volume; + s16 cvolL; + s16 cvolR; + s16 dryamt; + s16 wetamt; + u16 lratl; + s16 lratm; + s16 ltgt; + u16 rratl; + s16 rratm; + s16 rtgt; + s32 delta; + s32 segEnd; + s32 first; + ALParam* ctrlList; + ALParam* ctrlTail; + ALFilter** sources; + s32 motion; } ALEnvMixer; -void alEnvmixerNew(ALEnvMixer *e, ALHeap *hp); -Acmd *alEnvmixerPull(void *f, s16 *outp, s32 out, s32 sampleOffset, Acmd *p); -s32 alEnvmixerParam(void *filter, s32 paramID, void *param); - +void alEnvmixerNew(ALEnvMixer* e, ALHeap* hp); +Acmd* alEnvmixerPull(void* f, s16* outp, s32 out, s32 sampleOffset, Acmd* p); +s32 alEnvmixerParam(void* filter, s32 paramID, void* param); /* * heap stuff */ typedef struct { - s32 magic; /* check structure integrety */ - s32 size; /* size of this allocated block */ - u8 *file; /* file that this alloc was called from */ - s32 line; /* line that it was called from */ - s32 count; /* heap call number */ - s32 pad0; - s32 pad1; - s32 pad2; /* Make it 32 bytes */ + s32 magic; /* check structure integrety */ + s32 size; /* size of this allocated block */ + u8* file; /* file that this alloc was called from */ + s32 line; /* line that it was called from */ + s32 count; /* heap call number */ + s32 pad0; + s32 pad1; + s32 pad2; /* Make it 32 bytes */ } HeapInfo; -#define AL_CACHE_ALIGN 15 +#define AL_CACHE_ALIGN 15 /* * synth stuff */ typedef struct PVoice_s { - ALLink node; - struct ALVoice_s *vvoice; - ALFilter *channelKnob; - ALLoadFilter decoder; - ALResampler resampler; - ALEnvMixer envmixer; - s32 offset; + ALLink node; + struct ALVoice_s* vvoice; + ALFilter* channelKnob; + ALLoadFilter decoder; + ALResampler resampler; + ALEnvMixer envmixer; + s32 offset; } PVoice; /* * prototypes for private driver functions */ -ALParam *__allocParam(void); -void __freeParam(ALParam *param); -void _freePVoice(ALSynth *drvr, PVoice *pvoice); -void _collectPVoices(ALSynth *drvr); +ALParam* __allocParam(void); +void __freeParam(ALParam* param); +void _freePVoice(ALSynth* drvr, PVoice* pvoice); +void _collectPVoices(ALSynth* drvr); -s32 _timeToSamples(ALSynth *ALSynth, s32 micros); -ALMicroTime _samplesToTime(ALSynth *synth, s32 samples); +s32 _timeToSamples(ALSynth* ALSynth, s32 micros); +ALMicroTime _samplesToTime(ALSynth* synth, s32 samples); // This was renamed to have a leading underscore in 2.0J #if BUILD_VERSION < VERSION_J #define _init_lpfilter init_lpfilter #endif -void _init_lpfilter(ALLowPass *lp); +void _init_lpfilter(ALLowPass* lp); #endif - diff --git a/src/audio/synthesizer.c b/src/audio/synthesizer.c index 9123874..8e18313 100644 --- a/src/audio/synthesizer.c +++ b/src/audio/synthesizer.c @@ -28,39 +28,38 @@ extern u32 client_num, client_cnt, client_max, client_min; #endif #ifndef MIN -# define MIN(a,b) (((a)<(b))?(a):(b)) +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif -static s32 __nextSampleTime(ALSynth *drvr, ALPlayer **client); -static s32 _timeToSamplesNoRound(ALSynth *ALSynth, s32 micros); +static s32 __nextSampleTime(ALSynth* drvr, ALPlayer** client); +static s32 _timeToSamplesNoRound(ALSynth* ALSynth, s32 micros); /*********************************************************************** * Synthesis driver public interfaces ***********************************************************************/ -void alSynNew(ALSynth *drvr, ALSynConfig *c) -{ - s32 i; - ALVoice *vv; - PVoice *pv; - ALVoice *vvoices; - PVoice *pvoices; - ALHeap *hp = c->heap; - ALSave *save; - ALFilter *sources; - ALParam *params; - ALParam *paramPtr; - - drvr->head = NULL; - drvr->numPVoices = c->maxPVoices; - drvr->curSamples = 0; - drvr->paramSamples = 0; - drvr->outputRate = c->outputRate; - drvr->maxOutSamples = AL_MAX_RSP_SAMPLES; - drvr->dma = (ALDMANew) c->dmaproc; +void alSynNew(ALSynth* drvr, ALSynConfig* c) { + s32 i; + ALVoice* vv; + PVoice* pv; + ALVoice* vvoices; + PVoice* pvoices; + ALHeap* hp = c->heap; + ALSave* save; + ALFilter* sources; + ALParam* params; + ALParam* paramPtr; + + drvr->head = NULL; + drvr->numPVoices = c->maxPVoices; + drvr->curSamples = 0; + drvr->paramSamples = 0; + drvr->outputRate = c->outputRate; + drvr->maxOutSamples = AL_MAX_RSP_SAMPLES; + drvr->dma = (ALDMANew)c->dmaproc; save = alHeapAlloc(hp, 1, sizeof(ALSave)); alSaveNew(save); - drvr->outputFilter = (ALFilter *)save; + drvr->outputFilter = (ALFilter*)save; /* * allocate and initialize the auxilliary effects bus. at present @@ -68,17 +67,17 @@ void alSynNew(ALSynth *drvr, ALSynConfig *c) */ drvr->auxBus = alHeapAlloc(hp, 1, sizeof(ALAuxBus)); drvr->maxAuxBusses = 1; - sources = alHeapAlloc(hp, c->maxPVoices, sizeof(ALFilter *)); + sources = alHeapAlloc(hp, c->maxPVoices, sizeof(ALFilter*)); alAuxBusNew(drvr->auxBus, sources, c->maxPVoices); /* * allocate and initialize the main bus. */ drvr->mainBus = alHeapAlloc(hp, 1, sizeof(ALMainBus)); - sources = alHeapAlloc(hp, c->maxPVoices, sizeof(ALFilter *)); + sources = alHeapAlloc(hp, c->maxPVoices, sizeof(ALFilter*)); alMainBusNew(drvr->mainBus, sources, c->maxPVoices); - if (c->fxType != AL_FX_NONE){ + if (c->fxType != AL_FX_NONE) { /* * Allocate an effect and set parameters */ @@ -87,8 +86,8 @@ void alSynNew(ALSynth *drvr, ALSynConfig *c) /* * Connect the aux bus to the main bus */ - alMainBusParam(drvr->mainBus, AL_FILTER_ADD_SOURCE, &drvr->auxBus[0]); - + alMainBusParam(drvr->mainBus, AL_FILTER_ADD_SOURCE, &drvr->auxBus[0]); + /* * Build the physical voice lists */ @@ -102,12 +101,12 @@ void alSynNew(ALSynth *drvr, ALSynConfig *c) pvoices = alHeapAlloc(hp, c->maxPVoices, sizeof(PVoice)); for (i = 0; i < c->maxPVoices; i++) { pv = &pvoices[i]; - alLink((ALLink *)pv, &drvr->pFreeList); + alLink((ALLink*)pv, &drvr->pFreeList); pv->vvoice = 0; alLoadNew(&pv->decoder, drvr->dma, hp); alLoadParam(&pv->decoder, AL_FILTER_SET_SOURCE, 0); - + alResampleNew(&pv->resampler, hp); alResampleParam(&pv->resampler, AL_FILTER_SET_SOURCE, &pv->decoder); @@ -115,10 +114,10 @@ void alSynNew(ALSynth *drvr, ALSynConfig *c) alEnvmixerParam(&pv->envmixer, AL_FILTER_SET_SOURCE, &pv->resampler); alAuxBusParam(drvr->auxBus, AL_FILTER_ADD_SOURCE, &pv->envmixer); - - pv->channelKnob = (ALFilter *)&pv->envmixer; + + pv->channelKnob = (ALFilter*)&pv->envmixer; } - + alSaveParam(save, AL_FILTER_SET_SOURCE, drvr->mainBus); /* @@ -127,11 +126,11 @@ void alSynNew(ALSynth *drvr, ALSynConfig *c) params = alHeapAlloc(hp, c->maxUpdates, sizeof(ALParam)); drvr->paramList = 0; for (i = 0; i < c->maxUpdates; i++) { - paramPtr= ¶ms[i]; + paramPtr = ¶ms[i]; paramPtr->next = drvr->paramList; drvr->paramList = paramPtr; } - + drvr->heap = hp; } @@ -140,25 +139,24 @@ void alSynNew(ALSynth *drvr, ALSynConfig *c) * frame interrupt. It is assumed to be an accurate time source for the * clients. */ -Acmd *alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen) -{ - ALPlayer *client; - ALFilter *output; - ALSynth *drvr = &alGlobals->drvr; - s16 tmp = 0; /* Starting buffer in DMEM */ - Acmd *cmdlEnd = cmdList; - Acmd *cmdPtr; - s32 nOut; - s16 *lOutBuf = outBuf; +Acmd* alAudioFrame(Acmd* cmdList, s32* cmdLen, s16* outBuf, s32 outLen) { + ALPlayer* client; + ALFilter* output; + ALSynth* drvr = &alGlobals->drvr; + s16 tmp = 0; /* Starting buffer in DMEM */ + Acmd* cmdlEnd = cmdList; + Acmd* cmdPtr; + s32 nOut; + s16* lOutBuf = outBuf; #ifdef AUD_PROFILE lastCnt[++cnt_index] = osGetCount(); #endif - + if (drvr->head == 0) { - *cmdLen = 0; - return cmdList; /* nothing to do */ - } + *cmdLen = 0; + return cmdList; /* nothing to do */ + } /* * run down list of clients and execute callback if needed this @@ -181,12 +179,10 @@ Acmd *alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen) * during the client handler. */ - for (drvr->paramSamples = __nextSampleTime(drvr, &client); - drvr->paramSamples - drvr->curSamples < outLen; - drvr->paramSamples = __nextSampleTime(drvr, &client)) - { - drvr->paramSamples &= ~0xf; - client->samplesLeft += _timeToSamplesNoRound(drvr, (*client->handler)(client)); + for (drvr->paramSamples = __nextSampleTime(drvr, &client); drvr->paramSamples - drvr->curSamples < outLen; + drvr->paramSamples = __nextSampleTime(drvr, &client)) { + drvr->paramSamples &= ~0xf; + client->samplesLeft += _timeToSamplesNoRound(drvr, (*client->handler)(client)); } /* for safety's sake, always store paramSamples aligned to 16 sample boundary. @@ -196,7 +192,6 @@ Acmd *alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen) */ drvr->paramSamples &= ~0xf; - #ifdef AUD_PROFILE PROFILE_AUD(client_num, client_cnt, client_max, client_min); #endif @@ -204,7 +199,7 @@ Acmd *alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen) /* * Now build the command list in small chunks */ - while (outLen > 0){ + while (outLen > 0) { nOut = MIN(drvr->maxOutSamples, outLen); /* @@ -215,18 +210,16 @@ Acmd *alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen) aSegment(cmdPtr++, 0, 0); output = drvr->outputFilter; (*output->setParam)(output, AL_FILTER_SET_DRAM, lOutBuf); - cmdlEnd = (*output->handler)(output, &tmp, nOut, drvr->curSamples, - cmdPtr); - + cmdlEnd = (*output->handler)(output, &tmp, nOut, drvr->curSamples, cmdPtr); + outLen -= nOut; - lOutBuf += nOut<<1; /* For Stereo */ + lOutBuf += nOut << 1; /* For Stereo */ drvr->curSamples += nOut; - } - *cmdLen = (s32) (cmdlEnd - cmdList); + *cmdLen = (s32)(cmdlEnd - cmdList); _collectPVoices(drvr); /* collect free physical voices */ - + #ifdef AUD_PROFILE PROFILE_AUD(drvr_num, drvr_cnt, drvr_max, drvr_min); #endif @@ -237,48 +230,44 @@ Acmd *alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen) * Synthesis driver private interfaces ***********************************************************************/ -ALParam *__allocParam() -{ - ALParam *update = 0; - ALSynth *drvr = &alGlobals->drvr; +ALParam* __allocParam() { + ALParam* update = 0; + ALSynth* drvr = &alGlobals->drvr; - if (drvr->paramList) { + if (drvr->paramList) { update = drvr->paramList; drvr->paramList = drvr->paramList->next; update->next = 0; } return update; } - -void __freeParam(ALParam *param) -{ - ALSynth *drvr = &alGlobals->drvr; + +void __freeParam(ALParam* param) { + ALSynth* drvr = &alGlobals->drvr; param->next = drvr->paramList; drvr->paramList = param; } -void _collectPVoices(ALSynth *drvr) -{ - ALLink *dl; - PVoice *pv; +void _collectPVoices(ALSynth* drvr) { + ALLink* dl; + PVoice* pv; while ((dl = drvr->pLameList.next) != 0) { - pv = (PVoice *)dl; + pv = (PVoice*)dl; /* ### remove from mixer */ alUnlink(dl); - alLink(dl, &drvr->pFreeList); + alLink(dl, &drvr->pFreeList); } } -void _freePVoice(ALSynth *drvr, PVoice *pvoice) -{ +void _freePVoice(ALSynth* drvr, PVoice* pvoice) { /* * move the voice from the allocated list to the lame list */ - alUnlink((ALLink *)pvoice); - alLink((ALLink *)pvoice, &drvr->pLameList); + alUnlink((ALLink*)pvoice); + alLink((ALLink*)pvoice, &drvr->pLameList); } /* @@ -286,29 +275,26 @@ void _freePVoice(ALSynth *drvr, PVoice *pvoice) the truncation error produced by casting a float to an int. */ -s32 _timeToSamplesNoRound(ALSynth *synth, s32 micros) -{ +s32 _timeToSamplesNoRound(ALSynth* synth, s32 micros) { f32 tmp = ((f32)micros) * synth->outputRate / 1000000.0 + 0.5; return (s32)tmp; } -s32 _timeToSamples(ALSynth *synth, s32 micros) -{ +s32 _timeToSamples(ALSynth* synth, s32 micros) { return _timeToSamplesNoRound(synth, micros) & ~0xf; } -static s32 __nextSampleTime(ALSynth *drvr, ALPlayer **client) -{ - ALMicroTime delta = 0x7fffffff; /* max delta for s32 */ - ALPlayer *cl; +static s32 __nextSampleTime(ALSynth* drvr, ALPlayer** client) { + ALMicroTime delta = 0x7fffffff; /* max delta for s32 */ + ALPlayer* cl; #if BUILD_VERSION < VERSION_J // Adjust line numbers to match assert #line 306 #endif assert(drvr->head); *client = 0; - + for (cl = drvr->head; cl != 0; cl = cl->next) { if ((cl->samplesLeft - drvr->curSamples) < delta) { *client = cl; @@ -318,6 +304,3 @@ static s32 __nextSampleTime(ALSynth *drvr, ALPlayer **client) return (*client)->samplesLeft; } - - - diff --git a/src/debug/kdebugserver.c b/src/debug/kdebugserver.c index 948a460..7df4360 100644 --- a/src/debug/kdebugserver.c +++ b/src/debug/kdebugserver.c @@ -5,7 +5,7 @@ // not included in final rom, but __osThreadSave is here for some reason OSThread __osThreadSave; -extern OSThread *__osRunningThread; +extern OSThread* __osRunningThread; extern u32 __osRdb_IP6_Empty; #ifndef _FINALROM diff --git a/src/error/commonerror.c b/src/error/commonerror.c index c44a774..3ed2de9 100644 --- a/src/error/commonerror.c +++ b/src/error/commonerror.c @@ -12,11 +12,11 @@ void __osSyncVPrintf(const char* fmt, va_list args); static u32 errorLogData[19] ALIGNED(0x8); static OSLog errorLog = { - OS_ERROR_MAGIC, // magic + OS_ERROR_MAGIC, // magic sizeof(errorLogData), // len - errorLogData, // base - 0, //startCount - 0, //writeOffset + errorLogData, // base + 0, // startCount + 0, // writeOffset }; static void __commonErrorHandler(s16 code, s16 numArgs, ...); diff --git a/src/error/error.c b/src/error/error.c index ae75840..f4b5e8d 100644 --- a/src/error/error.c +++ b/src/error/error.c @@ -10,11 +10,11 @@ static void __osDefaultHandler(s16 code, s16 numArgs, ...); static u32 errorLogData[19] ALIGNED(0x8); static OSLog errorLog ALIGNED(0x8) = { - OS_ERROR_MAGIC, // magic + OS_ERROR_MAGIC, // magic sizeof(errorLogData), // len - errorLogData, // base - 0, //startCount - 0, //writeOffset + errorLogData, // base + 0, // startCount + 0, // writeOffset }; OSErrorHandler __osErrorHandler = __osDefaultHandler; diff --git a/src/error/kmcprintf.c b/src/error/kmcprintf.c index 2f4f08e..3d9f536 100644 --- a/src/error/kmcprintf.c +++ b/src/error/kmcprintf.c @@ -27,7 +27,7 @@ static void rmonPutchar(char c) { while (!(*stat & 4)) { } - + *wport = c; } diff --git a/src/flash/flashallerase.c b/src/flash/flashallerase.c index 0e982a5..7fb8889 100644 --- a/src/flash/flashallerase.c +++ b/src/flash/flashallerase.c @@ -1,7 +1,6 @@ #include "ultra64.h" #include "PR/os_internal_flash.h" - s32 osFlashAllErase(void) { u32 status; OSTimer mytimer; diff --git a/src/flash/flashgetaddr.c b/src/flash/flashgetaddr.c index a530947..190f106 100644 --- a/src/flash/flashgetaddr.c +++ b/src/flash/flashgetaddr.c @@ -5,7 +5,8 @@ u32 __osFlashGetAddr(u32 page_num) { u32 devAddr; if (__osFlashVersion == OLD_FLASH) { - // Account for hardware bug in old flash where the address bits are shifted 1-off where they should be + // Account for hardware bug in old flash where the address bits are shifted 1-off where they + // should be devAddr = page_num * (FLASH_BLOCK_SIZE >> 1); } else { devAddr = page_num * FLASH_BLOCK_SIZE; diff --git a/src/flash/flashinit.c b/src/flash/flashinit.c index 5be7cdd..3fe5bf2 100644 --- a/src/flash/flashinit.c +++ b/src/flash/flashinit.c @@ -33,8 +33,8 @@ OSPiHandle* osFlashInit(void) { osEPiLinkHandle(&__osFlashHandler); osFlashReadId(&flash_type, &flash_maker); - if (flash_maker == FLASH_VERSION_MX_C || flash_maker == FLASH_VERSION_MX_A || - flash_maker == FLASH_VERSION_MX_PROTO_A) { + if (flash_maker == FLASH_VERSION_MX_C || flash_maker == FLASH_VERSION_MX_A + || flash_maker == FLASH_VERSION_MX_PROTO_A) { __osFlashVersion = OLD_FLASH; } else { __osFlashVersion = NEW_FLASH; diff --git a/src/flash/flashreadarray.c b/src/flash/flashreadarray.c index 543f236..e101143 100644 --- a/src/flash/flashreadarray.c +++ b/src/flash/flashreadarray.c @@ -1,7 +1,6 @@ #include "ultra64.h" #include "PR/os_internal_flash.h" - s32 osFlashReadArray(OSIoMesg* mb, s32 priority, u32 page_num, void* dramAddr, u32 n_pages, OSMesgQueue* mq) { u32 ret; u32 tmp; diff --git a/src/gt/dumpturbo.c b/src/gt/dumpturbo.c index 91da2b7..53c292d 100644 --- a/src/gt/dumpturbo.c +++ b/src/gt/dumpturbo.c @@ -24,237 +24,203 @@ #ident "$Revision: 1.4 $" #endif -#undef PRINTF -#define PRINTF rmonPrintf +#undef PRINTF +#define PRINTF rmonPrintf +#define TX_MAX 100 +static u32 textures[TX_MAX] ALIGNED(0x8); +static u32 numtextures; -#define TX_MAX 100 -static u32 textures[TX_MAX] ALIGNED(0x8); -static u32 numtextures; +#define UNSEG_ADDR(sa) \ + ((u32*)(((globp) ? (((int)(sa) & 0x00ffffff) + globp->sp.segBases[(int)(sa) >> 24]) : (int)(sa)) | 0x80000000)) +#define PHYS(a) ((int)((int)(a) & 0x7fffffff)) +#define UNPHYS(a) ((u32*)((int)(a) | 0x80000000)) -#define UNSEG_ADDR(sa) ((u32 *) (((globp)? \ - (((int)(sa) & 0x00ffffff) + \ - globp->sp.segBases[(int)(sa)>>24]) \ - : (int)(sa)) | 0x80000000)) -#define PHYS(a) ((int) ((int)(a) & 0x7fffffff)) -#define UNPHYS(a) ((u32 *) ((int)(a) | 0x80000000)) +#define DOPRINT(a, r) \ + rmonPrintf("UNSEG: %x ->(seg%x = %06x)-> %08x\n", (int)(a), (int)(a) >> 24, \ + ((globp) ? (globp->sp.segBases[(int)(a) >> 24]) : 0), (int)(r)) -#define DOPRINT(a,r) \ -rmonPrintf("UNSEG: %x ->(seg%x = %06x)-> %08x\n",(int)(a),(int)(a)>>24,((globp)?(globp->sp.segBases[(int)(a)>>24]):0), (int)(r)) +#define UCODE_SIZE_MAX (4096 * 1) +void gtDumpTurbo(OSTask* tp, u8 flags) { + int i; + gtGfx* gtlistp; + gtGlobState* globp = 0; + gtState* statep; + u32 dat, *datp, *addr; + PRINTF("\nGBI_DUMP_START:\n"); + PRINTF("$ %08x\n", PHYS(tp)); - -#define UCODE_SIZE_MAX (4096*1) -void -gtDumpTurbo(OSTask *tp,u8 flags) -{ - int i; - gtGfx *gtlistp; - gtGlobState *globp=0; - gtState *statep; - u32 dat,*datp,*addr; - - - PRINTF("\nGBI_DUMP_START:\n"); - PRINTF("$ %08x\n",PHYS(tp)); - - for (i=(int)tp; i<(int)tp+sizeof(OSTask); i+=4) { - PRINTF("<%08x\n",(int) *((u32 *) i)); - } + for (i = (int)tp; i < (int)tp + sizeof(OSTask); i += 4) { + PRINTF("<%08x\n", (int)*((u32*)i)); + } #if 1 - PRINTF("? %08x\n",PHYS(tp->t.ucode_boot)); - for (i=(int)tp->t.ucode_boot; - i<(int)tp->t.ucode_boot+tp->t.ucode_boot_size; i+=4) { - PRINTF("|%08x\n",(int) *((u32 *) i)); - } - - PRINTF("? %08x\n",PHYS(tp->t.ucode)); - for (i=(int)tp->t.ucode; i<(int)tp->t.ucode+UCODE_SIZE_MAX; i+=4) { - PRINTF("|%08x\n",(int) *((u32 *) i)); - } - - PRINTF("? %08x\n",PHYS(tp->t.ucode_data)); - for (i=(int)tp->t.ucode_data; - i<(int)tp->t.ucode_data+tp->t.ucode_data_size; i+=4) { - PRINTF("|%08x\n",(int) *((u32 *) i)); - } - -#endif + PRINTF("? %08x\n", PHYS(tp->t.ucode_boot)); + for (i = (int)tp->t.ucode_boot; i < (int)tp->t.ucode_boot + tp->t.ucode_boot_size; i += 4) { + PRINTF("|%08x\n", (int)*((u32*)i)); + } + PRINTF("? %08x\n", PHYS(tp->t.ucode)); + for (i = (int)tp->t.ucode; i < (int)tp->t.ucode + UCODE_SIZE_MAX; i += 4) { + PRINTF("|%08x\n", (int)*((u32*)i)); + } + PRINTF("? %08x\n", PHYS(tp->t.ucode_data)); + for (i = (int)tp->t.ucode_data; i < (int)tp->t.ucode_data + tp->t.ucode_data_size; i += 4) { + PRINTF("|%08x\n", (int)*((u32*)i)); + } - gtlistp = (gtGfx *) tp->t.data_ptr; - PRINTF("@ %08x\n",PHYS(gtlistp)); +#endif -/* - * Dump turbo display list - */ - while (gtlistp->obj.statep) { - PRINTF(">%08x\n",(int) gtlistp->obj.gstatep); - PRINTF("-%08x\n",(int) gtlistp->obj.statep); - PRINTF("-%08x\n",(int) gtlistp->obj.vtxp); - PRINTF("-%08x\n",(int) gtlistp->obj.trip); - gtlistp++; - } - PRINTF(">%08x\n",(int) gtlistp->obj.gstatep); - PRINTF("-%08x\n",(int) gtlistp->obj.statep); - PRINTF("-%08x\n",(int) gtlistp->obj.vtxp); - PRINTF("-%08x\n",(int) gtlistp->obj.trip); + gtlistp = (gtGfx*)tp->t.data_ptr; + PRINTF("@ %08x\n", PHYS(gtlistp)); -/* - * Dump infor pointed to by DL - */ - gtlistp = (gtGfx *) tp->t.data_ptr; - while (gtlistp->obj.statep) { -/*rmonPrintf("=============== DUMP A DL ENTRY (%x)\n",(int)gtlistp);*/ + /* + * Dump turbo display list + */ + while (gtlistp->obj.statep) { + PRINTF(">%08x\n", (int)gtlistp->obj.gstatep); + PRINTF("-%08x\n", (int)gtlistp->obj.statep); + PRINTF("-%08x\n", (int)gtlistp->obj.vtxp); + PRINTF("-%08x\n", (int)gtlistp->obj.trip); + gtlistp++; + } + PRINTF(">%08x\n", (int)gtlistp->obj.gstatep); + PRINTF("-%08x\n", (int)gtlistp->obj.statep); + PRINTF("-%08x\n", (int)gtlistp->obj.vtxp); + PRINTF("-%08x\n", (int)gtlistp->obj.trip); -/* - * Dump global state - */ - if (gtlistp->obj.gstatep) { - addr = UNSEG_ADDR(gtlistp->obj.gstatep); - globp = (gtGlobState *) addr; -/*rmonPrintf("======= DUMP GlobalState (%x)\n",(int)addr);*/ - PRINTF("& %08x\n",PHYS(addr)); - for (datp = addr; - (u8 *) datp < (u8 *) addr + sizeof(gtGlobState); - datp++) { - PRINTF("+%08x\n",*datp); - } - if (globp->sp.rdpCmds) { - addr = UNSEG_ADDR(globp->sp.rdpCmds); -/*rmonPrintf("GlobalState RDP cmds (%x)\n",(int)addr);*/ - PRINTF("& %08x\n",PHYS(addr)); - for (datp = addr; - *datp || *(datp+1); - datp+=2) { - PRINTF("+%08x\n",*datp); - PRINTF("+%08x\n",*(datp+1)); - } - PRINTF("+%08x\n",*datp); - PRINTF("+%08x\n",*(datp+1)); - } - } + /* + * Dump infor pointed to by DL + */ + gtlistp = (gtGfx*)tp->t.data_ptr; + while (gtlistp->obj.statep) { + /*rmonPrintf("=============== DUMP A DL ENTRY (%x)\n",(int)gtlistp);*/ -/* - * Dump state - */ - addr = UNSEG_ADDR(gtlistp->obj.statep); - statep = (gtState *) addr; -/*rmonPrintf("======= DUMP State (%x)\n",(int)addr);*/ - PRINTF("& %08x\n",PHYS(addr)); - for (datp = addr; - (u8 *) datp < (u8 *) addr + sizeof(gtState); - datp++) { - PRINTF("+%08x\n",*datp); - } - if (statep->sp.rdpCmds) { - addr = UNSEG_ADDR(statep->sp.rdpCmds); -/*rmonPrintf("DUMP State RDP cmds (%x)\n",(int)addr);*/ - PRINTF("& %08x\n",PHYS(addr)); - for (datp = addr; - *datp || *(datp+1); - datp+=2) { - PRINTF("+%08x\n",*datp); - PRINTF("+%08x\n",*(datp+1)); - } - PRINTF("+%08x\n",*datp); - PRINTF("+%08x\n",*(datp+1)); - } + /* + * Dump global state + */ + if (gtlistp->obj.gstatep) { + addr = UNSEG_ADDR(gtlistp->obj.gstatep); + globp = (gtGlobState*)addr; + /*rmonPrintf("======= DUMP GlobalState (%x)\n",(int)addr);*/ + PRINTF("& %08x\n", PHYS(addr)); + for (datp = addr; (u8*)datp < (u8*)addr + sizeof(gtGlobState); datp++) { + PRINTF("+%08x\n", *datp); + } + if (globp->sp.rdpCmds) { + addr = UNSEG_ADDR(globp->sp.rdpCmds); + /*rmonPrintf("GlobalState RDP cmds (%x)\n",(int)addr);*/ + PRINTF("& %08x\n", PHYS(addr)); + for (datp = addr; *datp || *(datp + 1); datp += 2) { + PRINTF("+%08x\n", *datp); + PRINTF("+%08x\n", *(datp + 1)); + } + PRINTF("+%08x\n", *datp); + PRINTF("+%08x\n", *(datp + 1)); + } + } -/* - * Dump vertices - */ - if (gtlistp->obj.vtxp) { - addr = UNSEG_ADDR(gtlistp->obj.vtxp); -/*rmonPrintf("======= DUMP VTX (%x)\n",(int)addr);*/ - PRINTF("& %08x\n",PHYS(addr)); - for (datp = (u32 *) addr; - (u8 *) datp < (u8 *) addr + - (statep->sp.vtxCount * sizeof(Vtx)); - datp++) { - PRINTF("+%08x\n",*datp); - } - } + /* + * Dump state + */ + addr = UNSEG_ADDR(gtlistp->obj.statep); + statep = (gtState*)addr; + /*rmonPrintf("======= DUMP State (%x)\n",(int)addr);*/ + PRINTF("& %08x\n", PHYS(addr)); + for (datp = addr; (u8*)datp < (u8*)addr + sizeof(gtState); datp++) { + PRINTF("+%08x\n", *datp); + } + if (statep->sp.rdpCmds) { + addr = UNSEG_ADDR(statep->sp.rdpCmds); + /*rmonPrintf("DUMP State RDP cmds (%x)\n",(int)addr);*/ + PRINTF("& %08x\n", PHYS(addr)); + for (datp = addr; *datp || *(datp + 1); datp += 2) { + PRINTF("+%08x\n", *datp); + PRINTF("+%08x\n", *(datp + 1)); + } + PRINTF("+%08x\n", *datp); + PRINTF("+%08x\n", *(datp + 1)); + } -/* - * Dump triangles - */ - if (gtlistp->obj.trip) { - addr = UNSEG_ADDR(gtlistp->obj.trip); -/*rmonPrintf("======= DUMP TRI (%x)\n",(int)addr);*/ - PRINTF("& %08x\n",PHYS(addr)); - for (datp = (u32 *) addr; - (u8 *) datp < (u8 *) addr + - (statep->sp.triCount * sizeof(gtTriN)); - datp++) { - PRINTF("+%08x\n",*datp); - } - } + /* + * Dump vertices + */ + if (gtlistp->obj.vtxp) { + addr = UNSEG_ADDR(gtlistp->obj.vtxp); + /*rmonPrintf("======= DUMP VTX (%x)\n",(int)addr);*/ + PRINTF("& %08x\n", PHYS(addr)); + for (datp = (u32*)addr; (u8*)datp < (u8*)addr + (statep->sp.vtxCount * sizeof(Vtx)); datp++) { + PRINTF("+%08x\n", *datp); + } + } + /* + * Dump triangles + */ + if (gtlistp->obj.trip) { + addr = UNSEG_ADDR(gtlistp->obj.trip); + /*rmonPrintf("======= DUMP TRI (%x)\n",(int)addr);*/ + PRINTF("& %08x\n", PHYS(addr)); + for (datp = (u32*)addr; (u8*)datp < (u8*)addr + (statep->sp.triCount * sizeof(gtTriN)); datp++) { + PRINTF("+%08x\n", *datp); + } + } - - gtlistp++; - } + gtlistp++; + } + /* + * Dump Last global state + */ + if (gtlistp->obj.gstatep) { + addr = UNSEG_ADDR(gtlistp->obj.gstatep); + globp = (gtGlobState*)addr; + /*rmonPrintf("======= DUMP GlobalState (%x)\n",(int)addr);*/ + PRINTF("& %08x\n", PHYS(addr)); + for (datp = addr; (u8*)datp < (u8*)addr + sizeof(gtGlobState); datp++) { + PRINTF("+%08x\n", *datp); + } + if (globp->sp.rdpCmds) { + addr = UNSEG_ADDR(globp->sp.rdpCmds); + /*rmonPrintf("GlobalState RDP cmds (%x)\n",(int)addr);*/ + PRINTF("& %08x\n", PHYS(addr)); + for (datp = addr; *datp || *(datp + 1); datp += 2) { + PRINTF("+%08x\n", *datp); + PRINTF("+%08x\n", *(datp + 1)); + } + PRINTF("+%08x\n", *datp); + PRINTF("+%08x\n", *(datp + 1)); + } + } -/* - * Dump Last global state - */ - if (gtlistp->obj.gstatep) { - addr = UNSEG_ADDR(gtlistp->obj.gstatep); - globp = (gtGlobState *) addr; -/*rmonPrintf("======= DUMP GlobalState (%x)\n",(int)addr);*/ - PRINTF("& %08x\n",PHYS(addr)); - for (datp = addr; - (u8 *) datp < (u8 *) addr + sizeof(gtGlobState); - datp++) { - PRINTF("+%08x\n",*datp); - } - if (globp->sp.rdpCmds) { - addr = UNSEG_ADDR(globp->sp.rdpCmds); -/*rmonPrintf("GlobalState RDP cmds (%x)\n",(int)addr);*/ - PRINTF("& %08x\n",PHYS(addr)); - for (datp = addr; - *datp || *(datp+1); - datp+=2) { - PRINTF("+%08x\n",*datp); - PRINTF("+%08x\n",*(datp+1)); - } - PRINTF("+%08x\n",*datp); - PRINTF("+%08x\n",*(datp+1)); - } - } + PRINTF("^\nGBI_DUMP_END:\n"); - PRINTF("^\nGBI_DUMP_END:\n"); - - - if (flags & GT_DUMPTURBO_HANGAFTER) { - for (i=0; i<1000;i++) - rmonPrintf("=======================================\n"); - while(1); - } - + if (flags & GT_DUMPTURBO_HANGAFTER) { + for (i = 0; i < 1000; i++) + rmonPrintf("=======================================\n"); + while (1) + ; + } -/* - * Dumps stuff - * each line is either an address for data to follow or data itself - * 1st char on line indicates what it is: - * - * $ task header address - * @ display list address - * & dma data address - * % texture address - * ? code/code data address - * - * < task header data - * > 1st half of display list command - * - 2nd half of display list command - * + dma data - * * texture data - * | code/code data - * - */ - + /* + * Dumps stuff + * each line is either an address for data to follow or data itself + * 1st char on line indicates what it is: + * + * $ task header address + * @ display list address + * & dma data address + * % texture address + * ? code/code data address + * + * < task header data + * > 1st half of display list command + * - 2nd half of display list command + * + dma data + * * texture data + * | code/code data + * + */ } diff --git a/src/gt/gt.c b/src/gt/gt.c index bf99e85..fc32ae6 100644 --- a/src/gt/gt.c +++ b/src/gt/gt.c @@ -30,126 +30,121 @@ * */ - #include "gtint.h" - /* * Set the cached RDP othermode word in the gt state structure. */ -void -gtStateSetOthermode(Gfx *om, gtStateOthermode_t mode, int data) -{ - int shift, length; - u32 mask; +void gtStateSetOthermode(Gfx* om, gtStateOthermode_t mode, int data) { + int shift, length; + u32 mask; - if (mode == GT_CLEAR) { /* special case */ - om->words.w0 = (G_RDPSETOTHERMODE << 24); - om->words.w1 = 0x0; + if (mode == GT_CLEAR) { /* special case */ + om->words.w0 = (G_RDPSETOTHERMODE << 24); + om->words.w1 = 0x0; } if (mode <= GT_RENDERMODE) { - /* these are OTHERMODE_L */ - switch (mode) { + /* these are OTHERMODE_L */ + switch (mode) { - case GT_ALPHACOMPARE: - shift = G_MDSFT_ALPHACOMPARE; - length = 2; - break; + case GT_ALPHACOMPARE: + shift = G_MDSFT_ALPHACOMPARE; + length = 2; + break; - case GT_ZSRCSEL: - shift = G_MDSFT_ZSRCSEL; - length = 1; - break; + case GT_ZSRCSEL: + shift = G_MDSFT_ZSRCSEL; + length = 1; + break; - case GT_RENDERMODE: - shift = G_MDSFT_RENDERMODE; - length = 29; - break; + case GT_RENDERMODE: + shift = G_MDSFT_RENDERMODE; + length = 29; + break; - default: - break; - } + default: + break; + } - mask = (0x01 << length); - mask = mask - 1; - mask = (mask << shift); - mask = mask ^ 0xffffffff; - om->words.w1 &= mask; - om->words.w1 |= data; + mask = (0x01 << length); + mask = mask - 1; + mask = (mask << shift); + mask = mask ^ 0xffffffff; + om->words.w1 &= mask; + om->words.w1 |= data; } else { - /* these are OTHERMODE_H */ - switch (mode) { - case GT_ALPHADITHER: - shift = G_MDSFT_ALPHADITHER; - length = 2; - break; + /* these are OTHERMODE_H */ + switch (mode) { + case GT_ALPHADITHER: + shift = G_MDSFT_ALPHADITHER; + length = 2; + break; - case GT_RGBDITHER: - shift = G_MDSFT_RGBDITHER; - length = 2; - break; + case GT_RGBDITHER: + shift = G_MDSFT_RGBDITHER; + length = 2; + break; - case GT_COMBKEY: - shift = G_MDSFT_COMBKEY; - length = 1; - break; + case GT_COMBKEY: + shift = G_MDSFT_COMBKEY; + length = 1; + break; - case GT_TEXTCONV: - shift = G_MDSFT_TEXTCONV; - length = 3; - break; + case GT_TEXTCONV: + shift = G_MDSFT_TEXTCONV; + length = 3; + break; - case GT_TEXTFILT: - shift = G_MDSFT_TEXTFILT; - length = 2; - break; + case GT_TEXTFILT: + shift = G_MDSFT_TEXTFILT; + length = 2; + break; - case GT_TEXTLUT: - shift = G_MDSFT_TEXTLUT; - length = 2; - break; + case GT_TEXTLUT: + shift = G_MDSFT_TEXTLUT; + length = 2; + break; - case GT_TEXTLOD: - shift = G_MDSFT_TEXTLOD; - length = 1; - break; + case GT_TEXTLOD: + shift = G_MDSFT_TEXTLOD; + length = 1; + break; - case GT_TEXTDETAIL: - shift = G_MDSFT_TEXTDETAIL; - length = 2; - break; + case GT_TEXTDETAIL: + shift = G_MDSFT_TEXTDETAIL; + length = 2; + break; - case GT_TEXTPERSP: - shift = G_MDSFT_TEXTPERSP; - length = 1; - break; + case GT_TEXTPERSP: + shift = G_MDSFT_TEXTPERSP; + length = 1; + break; - case GT_CYCLETYPE: - shift = G_MDSFT_CYCLETYPE; - length = 2; - break; + case GT_CYCLETYPE: + shift = G_MDSFT_CYCLETYPE; + length = 2; + break; - case GT_PIPELINE: - shift = G_MDSFT_PIPELINE; - length = 1; - break; + case GT_PIPELINE: + shift = G_MDSFT_PIPELINE; + length = 1; + break; - default: - break; - } + default: + break; + } - mask = (0x01 << length); - mask = mask - 1; - mask = (mask << shift); - mask = mask ^ 0xffffffff; - om->words.w0 &= mask; - om->words.w0 |= data; + mask = (0x01 << length); + mask = mask - 1; + mask = (mask << shift); + mask = mask ^ 0xffffffff; + om->words.w0 &= mask; + om->words.w0 |= data; } /* force cached othermode word to have proper command id: */ om->words.w0 &= 0x00ffffff; om->words.w0 |= (G_RDPSETOTHERMODE << 24); } - diff --git a/src/gt/gtint.h b/src/gt/gtint.h index 31ddd7c..4434395 100644 --- a/src/gt/gtint.h +++ b/src/gt/gtint.h @@ -33,4 +33,3 @@ #include "mbi.h" #include "gu.h" #include "gt.h" - diff --git a/src/gu/align.c b/src/gu/align.c index 9be7b4a..29e369e 100644 --- a/src/gu/align.c +++ b/src/gu/align.c @@ -24,52 +24,50 @@ * */ -void guAlignF(float mf[4][4], float a, float x, float y, float z) -{ - static float dtor = 3.1415926 / 180.0; - float s, c, h, hinv; +void guAlignF(float mf[4][4], float a, float x, float y, float z) { + static float dtor = 3.1415926 / 180.0; + float s, c, h, hinv; - guNormalize(&x, &y, &z); + guNormalize(&x, &y, &z); - a *= dtor; - s = sinf (a); - c = cosf (a); - h = sqrtf (x*x + z*z); + a *= dtor; + s = sinf(a); + c = cosf(a); + h = sqrtf(x * x + z * z); - guMtxIdentF(mf); + guMtxIdentF(mf); - if (h != 0) { - hinv = 1 / h; + if (h != 0) { + hinv = 1 / h; - mf[0][0] = (-z*c - s*y*x) * hinv; - mf[1][0] = (z*s - c*y*x) * hinv; - mf[2][0] = -x; - mf[3][0] = 0; + mf[0][0] = (-z * c - s * y * x) * hinv; + mf[1][0] = (z * s - c * y * x) * hinv; + mf[2][0] = -x; + mf[3][0] = 0; - mf[0][1] = s*h; - mf[1][1] = c*h; - mf[2][1] = -y; - mf[3][1] = 0; + mf[0][1] = s * h; + mf[1][1] = c * h; + mf[2][1] = -y; + mf[3][1] = 0; - mf[0][2] = (c*x - s*y*z) * hinv; - mf[1][2] = (-s*x - c*y*z) * hinv; - mf[2][2] = -z; - mf[3][2] = 0; + mf[0][2] = (c * x - s * y * z) * hinv; + mf[1][2] = (-s * x - c * y * z) * hinv; + mf[2][2] = -z; + mf[3][2] = 0; - mf[0][3] = 0; - mf[1][3] = 0; - mf[2][3] = 0; - mf[3][3] = 1; - } else { - /* XXX: should do this right */ - } + mf[0][3] = 0; + mf[1][3] = 0; + mf[2][3] = 0; + mf[3][3] = 1; + } else { + /* XXX: should do this right */ + } } -void guAlign(Mtx *m, float a, float x, float y, float z) -{ - Matrix mf; +void guAlign(Mtx* m, float a, float x, float y, float z) { + Matrix mf; - guAlignF(mf, a, x, y, z); + guAlignF(mf, a, x, y, z); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } diff --git a/src/gu/cosf.c b/src/gu/cosf.c index 5a66c1b..2ee6ba4 100644 --- a/src/gu/cosf.c +++ b/src/gu/cosf.c @@ -32,31 +32,23 @@ #pragma weak fcos = __cosf #pragma weak cosf = __cosf -#define fcos __cosf +#define fcos __cosf /* coefficients for polynomial approximation of cos on +/- pi/2 */ -static const du P[] = -{ -{0x3ff00000, 0x00000000}, -{0xbfc55554, 0xbc83656d}, -{0x3f8110ed, 0x3804c2a0}, -{0xbf29f6ff, 0xeea56814}, -{0x3ec5dbdf, 0x0e314bfe}, +static const du P[] = { + { 0x3ff00000, 0x00000000 }, { 0xbfc55554, 0xbc83656d }, { 0x3f8110ed, 0x3804c2a0 }, + { 0xbf29f6ff, 0xeea56814 }, { 0x3ec5dbdf, 0x0e314bfe }, }; -static const du rpi = -{0x3fd45f30, 0x6dc9c883}; +static const du rpi = { 0x3fd45f30, 0x6dc9c883 }; -static const du pihi = -{0x400921fb, 0x50000000}; +static const du pihi = { 0x400921fb, 0x50000000 }; -static const du pilo = -{0x3e6110b4, 0x611a6263}; +static const du pilo = { 0x3e6110b4, 0x611a6263 }; -static const fu zero = {0x00000000}; +static const fu zero = { 0x00000000 }; - /* ==================================================================== * * FunctionName fcos @@ -66,72 +58,66 @@ static const fu zero = {0x00000000}; * ==================================================================== */ -float -fcos( float x ) -{ -float absx; -double dx, xsq, poly; -double dn; -int n; -double result; -int ix, xpt; +float fcos(float x) { + float absx; + double dx, xsq, poly; + double dn; + int n; + double result; + int ix, xpt; + ix = *(int*)&x; + xpt = (ix >> 22); + xpt &= 0x1ff; - ix = *(int *)&x; - xpt = (ix >> 22); - xpt &= 0x1ff; + /* xpt is exponent(x) + 1 bit of mantissa */ - /* xpt is exponent(x) + 1 bit of mantissa */ + if (xpt < 0x136) { + /* |x| < 2^28 */ + /* use the standard algorithm from Cody and Waite, doing + the computations in double precision + */ - if ( xpt < 0x136 ) - { - /* |x| < 2^28 */ + absx = ABS(x); - /* use the standard algorithm from Cody and Waite, doing - the computations in double precision - */ + dx = absx; - absx = ABS(x); + dn = dx * rpi.d + 0.5; + n = ROUND(dn); + dn = n; - dx = absx; + dn -= 0.5; - dn = dx*rpi.d + 0.5; - n = ROUND(dn); - dn = n; + dx = dx - dn * pihi.d; + dx = dx - dn * pilo.d; /* dx = x - (n - 0.5)*pi */ - dn -= 0.5; + xsq = dx * dx; - dx = dx - dn*pihi.d; - dx = dx - dn*pilo.d; /* dx = x - (n - 0.5)*pi */ + poly = ((P[4].d * xsq + P[3].d) * xsq + P[2].d) * xsq + P[1].d; - xsq = dx*dx; + result = dx + (dx * xsq) * poly; - poly = ((P[4].d*xsq + P[3].d)*xsq + P[2].d)*xsq + P[1].d; + /* negate result if n is odd */ - result = dx + (dx*xsq)*poly; + if ((n & 1) == 0) + return ((float)result); - /* negate result if n is odd */ + return (-(float)result); + } - if ( (n & 1) == 0 ) - return ( (float)result ); - - return ( -(float)result ); - } - - if ( x != x ) - { - /* x is a NaN; return a quiet NaN */ + if (x != x) { + /* x is a NaN; return a quiet NaN */ #ifdef _IP_NAN_SETS_ERRNO - *__errnoaddr = EDOM; + *__errnoaddr = EDOM; #endif - - return ( __libm_qnan_f ); - } - /* just give up and return 0.0 */ + return (__libm_qnan_f); + } - return ( zero.f ); + /* just give up and return 0.0 */ + + return (zero.f); } diff --git a/src/gu/coss.c b/src/gu/coss.c index 0d95530..5bf4054 100644 --- a/src/gu/coss.c +++ b/src/gu/coss.c @@ -36,10 +36,8 @@ * ==================================================================== */ -signed short -coss( unsigned short x ) -{ - /* 0 <= x < 0x10000 ==> 0 <= x < 2PI */ +signed short coss(unsigned short x) { + /* 0 <= x < 0x10000 ==> 0 <= x < 2PI */ - return sins ((unsigned short) (x + 0x4000)); + return sins((unsigned short)(x + 0x4000)); } diff --git a/src/gu/dump_gbi.c b/src/gu/dump_gbi.c index a5e5e12..0121e9e 100644 --- a/src/gu/dump_gbi.c +++ b/src/gu/dump_gbi.c @@ -15,29 +15,26 @@ * Interpret Task with GBI display list and dump it for debugging. */ - /************************************************** * - * guDumpGbiDL no longer supported - * applications should use guParseGbiDL with the - * GU_PARSEGBI_DUMPONLY flag set. + * guDumpGbiDL no longer supported + * applications should use guParseGbiDL with the + * GU_PARSEGBI_DUMPONLY flag set. * **************************************************/ - #if 0 - #include "ultra64.h" #include "bstring.h" -#undef PRINTF -#define PRINTF osSyncPrintf +#undef PRINTF +#define PRINTF osSyncPrintf -#define DL_STACKSIZE 11 +#define DL_STACKSIZE 11 static u32 *Gp[DL_STACKSIZE]; -#define TX_MAX 100 +#define TX_MAX 100 static u32 textures[TX_MAX]; static u32 numtextures; @@ -62,7 +59,7 @@ dump_dma(u32 *bufp) op = ((*bufp & 0xff000000) >> 24); /* - * DMA op addressing is all the same: + * DMA op addressing is all the same: */ seg_id = (u8) ((bufp[1] & 0x0f000000) >> 24); addr = segment_base[seg_id] + (bufp[1] & 0x00ffffff); @@ -205,7 +202,7 @@ guDumpGbi(u32 *gfxp) } } -#define UCODE_SIZE_MAX (4096*3) +#define UCODE_SIZE_MAX (4096 * 3) void guDumpGbiDL(OSTask *tp,u8 flags) { @@ -224,17 +221,17 @@ guDumpGbiDL(OSTask *tp,u8 flags) for (i=(int)tp->t.ucode_boot; i<(int)tp->t.ucode_boot+tp->t.ucode_boot_size; i+=4) { PRINTF("|%08x\n",(int) *((u32 *) i)); } - + PRINTF("? %08x\n",(int) tp->t.ucode& 0x7fffffff); for (i=(int)tp->t.ucode; i<(int)tp->t.ucode+UCODE_SIZE_MAX; i+=4) { PRINTF("|%08x\n",(int) *((u32 *) i)); } - + PRINTF("? %08x\n",(int) tp->t.ucode_data & 0x7fffffff); for (i=(int)tp->t.ucode_data; i<(int)tp->t.ucode_data+tp->t.ucode_data_size; i+=4) { PRINTF("|%08x\n",(int) *((u32 *) i)); } - + guDumpGbi((u32 *) tp->t.data_ptr); @@ -243,11 +240,11 @@ guDumpGbiDL(OSTask *tp,u8 flags) if (flags & GU_PARSEGBI_HANGAFTER) { int i; - for (i=0; i<1000;i++) + for (i=0; i<1000;i++) PRINTF("=============================================================\n"); while(1); } - + /* * Dumps stuff @@ -268,7 +265,7 @@ guDumpGbiDL(OSTask *tp,u8 flags) * | code/code data * */ - + } #endif diff --git a/src/gu/frustum.c b/src/gu/frustum.c index 4af9c5d..5a48523 100644 --- a/src/gu/frustum.c +++ b/src/gu/frustum.c @@ -12,31 +12,29 @@ #include "guint.h" -void guFrustumF(float mf[4][4], float l, float r, float b, float t, float n, float f, float scale) -{ - int i, j; +void guFrustumF(float mf[4][4], float l, float r, float b, float t, float n, float f, float scale) { + int i, j; - guMtxIdentF(mf); + guMtxIdentF(mf); - mf[0][0] = 2*n/(r-l); - mf[1][1] = 2*n/(t-b); - mf[2][0] = (r+l)/(r-l); - mf[2][1] = (t+b)/(t-b); - mf[2][2] = -(f+n)/(f-n); - mf[2][3] = -1; - mf[3][2] = -2*f*n/(f-n); - mf[3][3] = 0; + mf[0][0] = 2 * n / (r - l); + mf[1][1] = 2 * n / (t - b); + mf[2][0] = (r + l) / (r - l); + mf[2][1] = (t + b) / (t - b); + mf[2][2] = -(f + n) / (f - n); + mf[2][3] = -1; + mf[3][2] = -2 * f * n / (f - n); + mf[3][3] = 0; - for (i=0; i<4; i++) - for (j=0; j<4; j++) - mf[i][j] *= scale; + for (i = 0; i < 4; i++) + for (j = 0; j < 4; j++) + mf[i][j] *= scale; } -void guFrustum(Mtx *m, float l, float r, float b, float t, float n, float f, float scale) -{ - Matrix mf; +void guFrustum(Mtx* m, float l, float r, float b, float t, float n, float f, float scale) { + Matrix mf; - guFrustumF(mf, l, r, b, t, n, f, scale); + guFrustumF(mf, l, r, b, t, n, f, scale); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } diff --git a/src/gu/guint.h b/src/gu/guint.h index c3206dd..7cc8801 100644 --- a/src/gu/guint.h +++ b/src/gu/guint.h @@ -13,30 +13,27 @@ #include "mbi.h" #include "gu.h" -typedef union -{ - struct - { - unsigned int hi; - unsigned int lo; - } word; +typedef union { + struct { + unsigned int hi; + unsigned int lo; + } word; - double d; + double d; } du; -typedef union -{ - unsigned int i; - float f; +typedef union { + unsigned int i; + float f; } fu; #ifndef __GL_GL_H__ -typedef float Matrix[4][4]; +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) +#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; +extern float __libm_qnan_f; diff --git a/src/gu/guloadtile_bug.c b/src/gu/guloadtile_bug.c index e16e250..eb12375 100644 --- a/src/gu/guloadtile_bug.c +++ b/src/gu/guloadtile_bug.c @@ -16,10 +16,8 @@ * Inidicates how many words will be added to display list * by guDPLoadTextureTile function. */ -int -guGetDPLoadTextureTileSz(int ult, int lrt) -{ - return (((lrt - ult + 1) / 2) * 4 + 3); +int guGetDPLoadTextureTileSz(int ult, int lrt) { + return (((lrt - ult + 1) / 2) * 4 + 3); } /* @@ -27,126 +25,108 @@ guGetDPLoadTextureTileSz(int ult, int lrt) * load blocks for each line. ~25% more dma traffic + memory for * extra commands. */ -void -guDPLoadTextureTile(Gfx * temp, 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) -{ - int line; - int tile_width, - tile_height; /* +void guDPLoadTextureTile(Gfx* temp, 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) { + int line; + int tile_width, tile_height; /* - * in texels - */ - int dxt; - int sizeb; - int lineb; - int line_size; /* + * in texels + */ + int dxt; + int sizeb; + int lineb; + int line_size; /* - * in 64-bit words - */ - int texel_num_pad; /* + * in 64-bit words + */ + int texel_num_pad; /* - * in texels, pad to 64-bit word size - */ - int count; - int tmem; - int tile; - int s, - t; + * in texels, pad to 64-bit word size + */ + int count; + int tmem; + int tile; + int s, t; - tile_width = lrs - uls + 1; - tile_height = lrt - ult + 1; + tile_width = lrs - uls + 1; + tile_height = lrt - ult + 1; - switch (texl_size) { - case G_IM_SIZ_8b: - sizeb = G_IM_SIZ_8b_BYTES; - lineb = G_IM_SIZ_8b_LINE_BYTES; - break; - case G_IM_SIZ_16b: - sizeb = G_IM_SIZ_16b_BYTES; - lineb = G_IM_SIZ_16b_LINE_BYTES; - break; - case G_IM_SIZ_32b: - sizeb = G_IM_SIZ_32b_BYTES; - lineb = G_IM_SIZ_32b_LINE_BYTES; - break; - } + switch (texl_size) { + case G_IM_SIZ_8b: + sizeb = G_IM_SIZ_8b_BYTES; + lineb = G_IM_SIZ_8b_LINE_BYTES; + break; + case G_IM_SIZ_16b: + sizeb = G_IM_SIZ_16b_BYTES; + lineb = G_IM_SIZ_16b_LINE_BYTES; + break; + case G_IM_SIZ_32b: + sizeb = G_IM_SIZ_32b_BYTES; + lineb = G_IM_SIZ_32b_LINE_BYTES; + break; + } - dxt = CALC_DXT(tile_width, sizeb); - line_size = ((tile_width * lineb) + 7) >> 3; - /* - * pad line to word boundary - */ - texel_num_pad = ((((tile_width * sizeb) + 7) >> 3) * 8) / sizeb; + dxt = CALC_DXT(tile_width, sizeb); + line_size = ((tile_width * lineb) + 7) >> 3; + /* + * pad line to word boundary + */ + texel_num_pad = ((((tile_width * sizeb) + 7) >> 3) * 8) / sizeb; - gDPSetTextureImage(temp++, texl_fmt, texl_size, img_width, timg); + gDPSetTextureImage(temp++, texl_fmt, texl_size, img_width, timg); - for (line = 0; line < tile_height; line += 2) { - t = (ult + line) & ~1; /* - * load from even line - */ - tmem = line * line_size; + for (line = 0; line < tile_height; line += 2) { + t = (ult + line) & ~1; /* + * load from even line + */ + tmem = line * line_size; - /* - * set for both loads, avoid sync by alternating tiles - */ - tile = (line % 4) ? 1 : 0; + /* + * set for both loads, avoid sync by alternating tiles + */ + tile = (line % 4) ? 1 : 0; - gDPSetTile(temp++, texl_fmt, texl_size, 0, tmem, G_TX_LOADTILE - tile, 0, - cmt, maskt, shiftt, - cms, masks, shifts); + gDPSetTile(temp++, texl_fmt, texl_size, 0, tmem, G_TX_LOADTILE - tile, 0, cmt, maskt, shiftt, cms, masks, + shifts); - /* - * do odd line first - */ - s = uls + img_width - texel_num_pad; - count = (texel_num_pad * 2) - 1; + /* + * do odd line first + */ + s = uls + img_width - texel_num_pad; + count = (texel_num_pad * 2) - 1; - gDPLoadBlock(temp++, G_TX_LOADTILE - tile, s, t, s + count, dxt); + gDPLoadBlock(temp++, G_TX_LOADTILE - tile, s, t, s + count, dxt); - /* - * do even line - */ - s = uls; - count = tile_width - 1; + /* + * do even line + */ + s = uls; + count = tile_width - 1; - gDPLoadSync(temp++); - gDPLoadBlock(temp++, G_TX_LOADTILE - tile, s, t, s + count, dxt); + gDPLoadSync(temp++); + gDPLoadBlock(temp++, G_TX_LOADTILE - tile, s, t, s + count, dxt); + } - } + /* + * set final tile + */ + gDPSetTile(temp++, texl_fmt, texl_size, line_size, 0, G_TX_RENDERTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); - /* - * set final tile - */ - gDPSetTile(temp++, texl_fmt, texl_size, line_size, 0, G_TX_RENDERTILE, 0, - cmt, maskt, shiftt, - cms, masks, shifts); - - gDPSetTileSize(temp++, G_TX_RENDERTILE, - (uls) << G_TEXTURE_IMAGE_FRAC, - (ult) << G_TEXTURE_IMAGE_FRAC, - (lrs) << G_TEXTURE_IMAGE_FRAC, - (lrt) << G_TEXTURE_IMAGE_FRAC); + gDPSetTileSize(temp++, G_TX_RENDERTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC); } /* - * 4-BIT VERSION + * 4-BIT VERSION */ /* * Inidicates how many words will be added to display list * by guDPLoadTextureTile function. */ -int -guGetDPLoadTextureTile_4bSz(int ult, int lrt) -{ - return (((lrt - ult + 1) / 2) * 4 + 3); +int guGetDPLoadTextureTile_4bSz(int ult, int lrt) { + return (((lrt - ult + 1) / 2) * 4 + 3); } /* @@ -154,82 +134,66 @@ guGetDPLoadTextureTile_4bSz(int ult, int lrt) * load blocks for each line. ~25% more dma traffic + memory for * extra commands. */ -void -guDPLoadTextureTile_4b(Gfx * temp, void *timg, - int texl_fmt, - 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) -{ - int line; - int tile_width, - tile_height; - int dxt; - int sizeb; - int lineb; - int line_size; - int count; - int tmem; - int tile; - int s, - t; +void guDPLoadTextureTile_4b(Gfx* temp, void* timg, int texl_fmt, 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) { + int line; + int tile_width, tile_height; + int dxt; + int sizeb; + int lineb; + int line_size; + int count; + int tmem; + int tile; + int s, t; - tile_width = (lrs - uls + 1) >> 1; - tile_height = lrt - ult + 1; - sizeb = G_IM_SIZ_8b_BYTES; - lineb = G_IM_SIZ_8b_LINE_BYTES; - line_size = ((tile_width * lineb) + 7) >> 3; - dxt = CALC_DXT_4b(tile_width); + tile_width = (lrs - uls + 1) >> 1; + tile_height = lrt - ult + 1; + sizeb = G_IM_SIZ_8b_BYTES; + lineb = G_IM_SIZ_8b_LINE_BYTES; + line_size = ((tile_width * lineb) + 7) >> 3; + dxt = CALC_DXT_4b(tile_width); - gDPSetTextureImage(temp++, texl_fmt, G_IM_SIZ_8b, ((img_width) >> 1), timg); + gDPSetTextureImage(temp++, texl_fmt, G_IM_SIZ_8b, ((img_width) >> 1), timg); - for (line = 0; line < tile_height; line += 2) { - t = (ult + line) & ~1; /* - * load from even line - */ - tmem = line * line_size; + for (line = 0; line < tile_height; line += 2) { + t = (ult + line) & ~1; /* + * load from even line + */ + tmem = line * line_size; - /* - * set for both loads, avoid sync by alternating tiles - */ - tile = (line % 4) ? 1 : 0; + /* + * set for both loads, avoid sync by alternating tiles + */ + tile = (line % 4) ? 1 : 0; - gDPSetTile(temp++, texl_fmt, G_IM_SIZ_8b, 0, tmem, G_TX_LOADTILE - tile, 0, - cmt, maskt, shiftt, - cms, masks, shifts); + gDPSetTile(temp++, texl_fmt, G_IM_SIZ_8b, 0, tmem, G_TX_LOADTILE - tile, 0, cmt, maskt, shiftt, cms, masks, + shifts); - /* - * do odd line first - */ - s = uls + img_width - line_size * 8; - count = (line_size * 8 * 2) - 1; + /* + * do odd line first + */ + s = uls + img_width - line_size * 8; + count = (line_size * 8 * 2) - 1; - gDPLoadBlock(temp++, G_TX_LOADTILE - tile, s, t, s + count, dxt); + gDPLoadBlock(temp++, G_TX_LOADTILE - tile, s, t, s + count, dxt); - /* - * do even line - */ - s = uls; - count = tile_width - 1; + /* + * do even line + */ + s = uls; + count = tile_width - 1; - gDPLoadSync(temp++); - gDPLoadBlock(temp++, G_TX_LOADTILE - tile, s, t, s + count, dxt); + gDPLoadSync(temp++); + gDPLoadBlock(temp++, G_TX_LOADTILE - tile, s, t, s + count, dxt); + } - } + /* + * set final tile + */ + gDPSetTile(temp++, texl_fmt, G_IM_SIZ_4b, line_size, 0, G_TX_RENDERTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); - /* - * set final tile - */ - gDPSetTile(temp++, texl_fmt, G_IM_SIZ_4b, line_size, 0, G_TX_RENDERTILE, 0, - cmt, maskt, shiftt, - cms, masks, shifts); - - gDPSetTileSize(temp++, G_TX_RENDERTILE, - (uls) << G_TEXTURE_IMAGE_FRAC, - (ult) << G_TEXTURE_IMAGE_FRAC, - (lrs) << G_TEXTURE_IMAGE_FRAC, - (lrt) << G_TEXTURE_IMAGE_FRAC); + gDPSetTileSize(temp++, G_TX_RENDERTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC); } diff --git a/src/gu/loadtextureblockmipmap.c b/src/gu/loadtextureblockmipmap.c index 3381c72..c6215f3 100644 --- a/src/gu/loadtextureblockmipmap.c +++ b/src/gu/loadtextureblockmipmap.c @@ -12,7 +12,7 @@ /**************************************************************************** * NOTE: To view this file correctly, set tabstop=3 -*****************************************************************************/ + *****************************************************************************/ #include "guint.h" #include #include "ultra64.h" @@ -21,91 +21,69 @@ // TODO: this comes from a header #ident "$Revision: 1.49 $" -#define TRAM_SIZE 4096 /* in bytes */ -#define TRAM_WSIZE 8 /* TRAM word size in bytes */ -#define TRAM_LSIZE 8 /* TRAM load word size in bytes */ -#define MM_MAX_LEVEL 7 /* number of mipmap levels 0 to MM_MAX_LEVEL */ -#define MM_MIN_SIZE 1 /* smallest mipmap tile */ +#define TRAM_SIZE 4096 /* in bytes */ +#define TRAM_WSIZE 8 /* TRAM word size in bytes */ +#define TRAM_LSIZE 8 /* TRAM load word size in bytes */ +#define MM_MAX_LEVEL 7 /* number of mipmap levels 0 to MM_MAX_LEVEL */ +#define MM_MIN_SIZE 1 /* smallest mipmap tile */ -struct texelSizeParams -{ - unsigned char gran; - unsigned char shift; - unsigned char tsize; - unsigned char shiftr; -}; +struct texelSizeParams { + unsigned char gran; + unsigned char shift; + unsigned char tsize; + unsigned char shiftr; +}; /* texture ram tile */ -struct Tile -{ - int w; /* width of tile in texels, padded to tram line sz */ - int s, t; /* size of tile in texels */ - int addr; /* address in tram of tile */ +struct Tile { + int w; /* width of tile in texels, padded to tram line sz */ + int s, t; /* size of tile in texels */ + int addr; /* address in tram of tile */ }; /* tram mipmaps */ -static struct Tile mipmap[MM_MAX_LEVEL+1] ALIGNED(0x8); -static struct texelSizeParams sizeParams[4] = - { 16, 3, 1, 0, - 8, 2, 2, 1, - 4, 1, 4, 2, - 2, 0, 8, 3 - }; +static struct Tile mipmap[MM_MAX_LEVEL + 1] ALIGNED(0x8); +static struct texelSizeParams sizeParams[4] = { 16, 3, 1, 0, 8, 2, 2, 1, 4, 1, 4, 2, 2, 0, 8, 3 }; +static int max_mipmap; +static unsigned char* tram; +static int txlsize; +static int errNo = 0; +static int NA = 0; /* Not applicable */ +static unsigned int length; /* total texels in mipmap */ +static int level; /* total levels in mipmap */ -static int max_mipmap; -static unsigned char *tram; -static int txlsize; -static int errNo = 0; -static int NA = 0; /* Not applicable */ -static unsigned int length; /* total texels in mipmap */ -static int level; /* total levels in mipmap */ +static void get3x3(struct Tile* tile, int* s, int* t, int* texel, int shift, int size); +static void stuffDisplayList(Gfx** glistp, Image* im, char* tbuf, unsigned char startTile, unsigned char pal, + unsigned char cms, unsigned char cmt, unsigned char masks, unsigned char maskt, + unsigned char shifts, unsigned char shiftt); +static void kernel(int i, int r1, int g1, int b1, int a1, float* r2, float* g2, float* b2, float* a2); -static void get3x3(struct Tile *tile, int *s, int *t, int *texel, int shift, int size); -static void stuffDisplayList(Gfx **glistp, Image *im, char *tbuf, unsigned char startTile, - unsigned char pal, unsigned char cms, unsigned char cmt, - unsigned char masks, unsigned char maskt, unsigned char shifts, - unsigned char shiftt); -static void kernel(int i, int r1, int g1, int b1, int a1, float *r2, float *g2, - float *b2, float *a2); +#define unpack_ia16(c, i, a) i = (c & 0xff00) >> 8, a = (c & 0xff) +#define pack_ia16(i, a) (i << 8) | a -#define unpack_ia16(c,i,a) \ - i = (c & 0xff00) >> 8, a = (c & 0xff) -#define pack_ia16(i,a) \ - (i << 8) | a +#define unpack_ia8(c, i, a) i = ((c & 0xf0) >> 4), a = (c & 0xf) +#define pack_ia8(i, a) (a & 0xf) | ((i & 0xf) << 4) -#define unpack_ia8(c,i,a) \ - i = ((c & 0xf0) >> 4), a = (c & 0xf) -#define pack_ia8(i,a) \ - (a & 0xf) | ((i & 0xf) << 4) +#define unpack_ia4(c, i, a) i = ((c & 0xe) >> 1), a = (c & 0x1) +#define pack_ia4(i, a) ((i & 0x7) << 1) | ((a & 0x1)) -#define unpack_ia4(c,i,a) \ - i = ((c & 0xe) >> 1), a = (c & 0x1) -#define pack_ia4(i,a) \ - ((i & 0x7) << 1) | ((a & 0x1)) +#define unpack_i4(c, i) i = (c & 0xf) +#define pack_i4(i) (i) -#define unpack_i4(c,i) \ - i = (c & 0xf) -#define pack_i4(i) \ - (i) +#define unpack_i8(c, i) i = (c & 0xff) +#define pack_i8(i) (i) -#define unpack_i8(c,i) \ - i = (c & 0xff) -#define pack_i8(i) \ - (i) +#define unpack_ci8(c, ci) unpack_i8(c, ci) +#define pack_ci8(ci) pack_i8(ci) -#define unpack_ci8(c,ci) unpack_i8(c,ci) -#define pack_ci8(ci) pack_i8(ci) +#define unpack_ci4(c, ci) unpack_i4(c, ci) +#define pack_ci4(ci) pack_i4(ci) -#define unpack_ci4(c,ci) unpack_i4(c,ci) -#define pack_ci4(ci) pack_i4(ci) +#define unpack_rgba(c, r, g, b, a) \ + (r = (c & 0xf800) >> 11), g = ((c & 0x07c0) >> 6), b = ((c & 0x003e) >> 1), a = (c & 0x1) -#define unpack_rgba(c,r,g,b,a) \ - (r = (c & 0xf800) >> 11), g = ((c & 0x07c0) >> 6), b = ((c & 0x003e) >> 1), \ - a = (c & 0x1) - -#define pack_rgba( r, g, b, a) ((r&0x1f) << 11) | (g&0x1f) << 6 | \ - ((b&0x1f) << 1) | (a) +#define pack_rgba(r, g, b, a) ((r & 0x1f) << 11) | (g & 0x1f) << 6 | ((b & 0x1f) << 1) | (a) /************************************************************************* * Generates all levels of a power-of-two mipmap from an input array. * @@ -123,595 +101,530 @@ static void kernel(int i, int r1, int g1, int b1, int a1, float *r2, float *g2, * 2 Texel format not supported, Fatal error * ************************************************************************/ -int guLoadTextureBlockMipMap(Gfx **glistp, 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) -{ - - unsigned char *iaddr, *taddr; - int im_bytes, tr_bytes; - int h, b; - int flip; - char startUnAligned; - char endUnAligned; +int guLoadTextureBlockMipMap(Gfx** glistp, 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) { - txlsize = sizeParams[im->siz].tsize; /* texel size in nibbles */ - /* to next line size */ + unsigned char *iaddr, *taddr; + int im_bytes, tr_bytes; + int h, b; + int flip; + char startUnAligned; + char endUnAligned; - /* - * Do top level map, swizzle bytes on odd t's * - */ - /* base char address of tile to be loaded */ - iaddr = ((im->t * im->lsize)+((im->s * txlsize) >> 1) + im->base); + txlsize = sizeParams[im->siz].tsize; /* texel size in nibbles */ + /* to next line size */ - /*check tile line starting and ending alignments along 4bit bndries */ - startUnAligned = ((im->s & 0x1) && (im->siz == G_IM_SIZ_4b)); - endUnAligned = (((im->s + im->w) & 0x1) && (im->siz == G_IM_SIZ_4b)); + /* + * Do top level map, swizzle bytes on odd t's * + */ + /* base char address of tile to be loaded */ + iaddr = ((im->t * im->lsize) + ((im->s * txlsize) >> 1) + im->base); - im_bytes = ((im->w * txlsize + 1) >> 1); /* siz of 1 tile line in bytes */ - tr_bytes = im_bytes / TRAM_LSIZE; /* no of tram lines per tile line */ - tr_bytes = tr_bytes * TRAM_LSIZE; /* tile line size in bytes */ - if (im_bytes > tr_bytes) tr_bytes += TRAM_LSIZE; - - taddr = &tbuf[im->addr]; /* why ? make this zero?*/ + /*check tile line starting and ending alignments along 4bit bndries */ + startUnAligned = ((im->s & 0x1) && (im->siz == G_IM_SIZ_4b)); + endUnAligned = (((im->s + im->w) & 0x1) && (im->siz == G_IM_SIZ_4b)); - if (startUnAligned) - { - for (h=0; hh; h++) - { - flip = (h & 1) << 2; /*shift does not depend on txlsize*/ - for (b=0; b> 4); - } - /* add last aligned nibble */ - if (!endUnAligned) *(taddr+((b-1)^flip)) &= (0xf0); - /* pickup trailing bytes */ - for (b=im_bytes; blsize; - taddr += tr_bytes; - } - } - else /* if start aligned */ - { - for (h=0; hh; h++) - { - flip = (h & 1) << 2; /*shift does not depend on txlsize*/ - for (b=0; bw * txlsize + 1) >> 1); /* siz of 1 tile line in bytes */ + tr_bytes = im_bytes / TRAM_LSIZE; /* no of tram lines per tile line */ + tr_bytes = tr_bytes * TRAM_LSIZE; /* tile line size in bytes */ + if (im_bytes > tr_bytes) + tr_bytes += TRAM_LSIZE; - /* zero out last extra nibble */ - if (endUnAligned) *(taddr+((b-1)^flip)) &= (0xf0); - /* pad trailing bytes with zeroes */ - for (b=im_bytes; baddr]; /* why ? make this zero?*/ - iaddr += im->lsize; - taddr += tr_bytes; - } - } + if (startUnAligned) { + for (h = 0; h < im->h; h++) { + flip = (h & 1) << 2; /*shift does not depend on txlsize*/ + for (b = 0; b < im_bytes; b++) { + *(taddr + (b ^ flip)) = ((*(iaddr + b) & 0x0f) << 4) | ((*(iaddr + b + 1) & 0xf0) >> 4); + } + /* add last aligned nibble */ + if (!endUnAligned) + *(taddr + ((b - 1) ^ flip)) &= (0xf0); + /* pickup trailing bytes */ + for (b = im_bytes; b < tr_bytes; b++) + *(taddr + (b ^ flip)) = 0; + iaddr += im->lsize; + taddr += tr_bytes; + } + } else /* if start aligned */ + { + for (h = 0; h < im->h; h++) { + flip = (h & 1) << 2; /*shift does not depend on txlsize*/ + for (b = 0; b < im_bytes; b++) + *(taddr + (b ^ flip)) = *(iaddr + b); - tram = tbuf; + /* zero out last extra nibble */ + if (endUnAligned) + *(taddr + ((b - 1) ^ flip)) &= (0xf0); + /* pad trailing bytes with zeroes */ + for (b = im_bytes; b < tr_bytes; b++) + *(taddr + (b ^ flip)) = 0; - /* save tile attributes in top mipmap */ - mipmap[0].s = im->w; /* tile width */ - mipmap[0].t = im->h; /* tile height */ - /* guaranteed no remainder ? */ - mipmap[0].w = ((tr_bytes / txlsize) << 1); /* tile line width in texels*/ - mipmap[0].addr = im->addr; - max_mipmap = MM_MAX_LEVEL; - length = mipmap[0].w*mipmap[0].t; /* total texels in level 0 */ -/** - rmonPrintf("level0 w,t,l = %d %d %d\n",mipmap[0].w, mipmap[0].t,length); -***/ + iaddr += im->lsize; + taddr += tr_bytes; + } + } -/****************************************************************************** - Generate other levels of mipmap using a box filter -******************************************************************************/ + tram = tbuf; -{/* generate mip map for this tile */ - unsigned char *taddr, *saddr; - int shift = (int) sizeParams[im->siz].shift; - int s, t, si, ti, sii, tii; - int s4[9]; - int t4[9]; - int tex4[9]; - int r0, g0, b0, a0, r1, g1, b1, a1; - float r2 ,g2, b2, a2; - float dummy; - int i0, ci0, ia0, i1, ci1, ia1; - float i2, ci2, ia2; - int texel; - int i,trip; - unsigned int tempaddr; - int ntexels = ((TRAM_LSIZE/txlsize) << 1); /* texels per line */ - - level = 0; /* need to check for memory overflow */ - while ((mipmap[level].s > 1) || (mipmap[level].t > 1)) - { - level++; - /* - * set new mipmap level address in bytes - */ - mipmap[level].addr = mipmap[level-1].addr + - (mipmap[level-1].w * txlsize * mipmap[level-1].t >> 1); + /* save tile attributes in top mipmap */ + mipmap[0].s = im->w; /* tile width */ + mipmap[0].t = im->h; /* tile height */ + /* guaranteed no remainder ? */ + mipmap[0].w = ((tr_bytes / txlsize) << 1); /* tile line width in texels*/ + mipmap[0].addr = im->addr; + max_mipmap = MM_MAX_LEVEL; + length = mipmap[0].w * mipmap[0].t; /* total texels in level 0 */ + /** + rmonPrintf("level0 w,t,l = %d %d %d\n",mipmap[0].w, mipmap[0].t,length); + ***/ - /* - * grab location in tram pointing to the current level address - */ - taddr = &(tram[ mipmap[level].addr ]); + /****************************************************************************** + Generate other levels of mipmap using a box filter + ******************************************************************************/ - /* - * downfilter by 2X, bump odd size - * compute parameters for new mipmap level - */ - mipmap[level].s = (mipmap[0].s) >> level; - mipmap[level].t = (mipmap[0].t) >> level; + { /* generate mip map for this tile */ + unsigned char *taddr, *saddr; + int shift = (int)sizeParams[im->siz].shift; + int s, t, si, ti, sii, tii; + int s4[9]; + int t4[9]; + int tex4[9]; + int r0, g0, b0, a0, r1, g1, b1, a1; + float r2, g2, b2, a2; + float dummy; + int i0, ci0, ia0, i1, ci1, ia1; + float i2, ci2, ia2; + int texel; + int i, trip; + unsigned int tempaddr; + int ntexels = ((TRAM_LSIZE / txlsize) << 1); /* texels per line */ - if (mipmap[level].s == 0) mipmap[level].s = 1; - if (mipmap[level].t == 0) mipmap[level].t = 1; + level = 0; /* need to check for memory overflow */ + while ((mipmap[level].s > 1) || (mipmap[level].t > 1)) { + level++; + /* + * set new mipmap level address in bytes + */ + mipmap[level].addr = mipmap[level - 1].addr + (mipmap[level - 1].w * txlsize * mipmap[level - 1].t >> 1); - /* - * width must be a multiple of 8 bytes (padding for tram line size) - */ - mipmap[level].w = - ((mipmap[level].s + (ntexels -1)) >> (shift +1) << (shift +1)); + /* + * grab location in tram pointing to the current level address + */ + taddr = &(tram[mipmap[level].addr]); - /* - * compute total no of texels to be loaded - */ - length += mipmap[level].w*mipmap[level].t; -/** - rmonPrintf("level, w,t,l = %d %d %d %d\n", level, mipmap[level].w, mipmap[level].t,length); -**/ - if ((length*txlsize >> 1) >= TRAM_SIZE) - { - errNo = 1; - length -= mipmap[level].w*mipmap[level].t; - break; - } + /* + * downfilter by 2X, bump odd size + * compute parameters for new mipmap level + */ + mipmap[level].s = (mipmap[0].s) >> level; + mipmap[level].t = (mipmap[0].t) >> level; - /* - * for each scanline - */ - for (t=0; t= mipmap[level-1].t) ti = t; - if (tii < 0) tii = t; - } else { - if (ti >= mipmap[level-1].t) ti = 0; - if (tii < 0) tii = mipmap[level-1].t - 1; - } + /* + * width must be a multiple of 8 bytes (padding for tram line size) + */ + mipmap[level].w = ((mipmap[level].s + (ntexels - 1)) >> (shift + 1) << (shift + 1)); - tempaddr = 0; + /* + * compute total no of texels to be loaded + */ + length += mipmap[level].w * mipmap[level].t; + /** + rmonPrintf("level, w,t,l = %d %d %d %d\n", level, mipmap[level].w, + mipmap[level].t,length); + **/ + if ((length * txlsize >> 1) >= TRAM_SIZE) { + errNo = 1; + length -= mipmap[level].w * mipmap[level].t; + break; + } - for (s=0; s= mipmap[level-1].s) si = s; - if (sii < 0) sii = s; - } else { - if (si >= mipmap[level-1].s) si = 0; - if (sii < 0) sii = mipmap[level-1].s - 1; - } + /* + * for each scanline + */ + for (t = 0; t < mipmap[level - 1].t; t += 2) { + flip = 0; + trip = (t & 2) << 1; /* invert bit 4 on odd line */ + ti = t + 1; + tii = t - 1; -/*** - if (level == 6) - rmonPrintf("sts = %d %d %d %d %d %d\n", - s, si, sii, t, ti, tii); -***/ + /* + * check filtering clamp/wrap flag and do accordingly + */ + if (cft) { + if (ti >= mipmap[level - 1].t) + ti = t; + if (tii < 0) + tii = t; + } else { + if (ti >= mipmap[level - 1].t) + ti = 0; + if (tii < 0) + tii = mipmap[level - 1].t - 1; + } - /* - * grab the nine neighbours to apply kernel function - */ - s4[0] = s; t4[0] = tii; - s4[1] = si; t4[1] = tii; - s4[2] = si; t4[2] = t; - s4[3] = si; t4[3] = ti; - s4[4] = s; t4[4] = ti; - s4[5] = sii; t4[5] = ti; - s4[6] = sii; t4[6] = t; - s4[7] = sii; t4[7] = tii; - s4[8] = s; t4[8] = t; + tempaddr = 0; - get3x3( &mipmap[level-1], s4, t4, tex4, shift, im->siz); + for (s = 0; s < mipmap[level - 1].s; s += 2) { + si = s + 1; + sii = s - 1; + /* + * duplicate last texel for odd sizes for filtering + */ + if (cfs) { + if (si >= mipmap[level - 1].s) + si = s; + if (sii < 0) + sii = s; + } else { + if (si >= mipmap[level - 1].s) + si = 0; + if (sii < 0) + sii = mipmap[level - 1].s - 1; + } - saddr = taddr + ((tempaddr >> 1)^trip); - r1 = g1 = b1 = a1 = ci1 = i1 = 0; - r2 = g2 = b2 = a2 = ci2 = i2 = 0; - - /* - * Extract R,G and B components of the 9 texels and - * apply the filter kernel - */ - switch (im->fmt) - { - case (G_IM_FMT_RGBA): - if (im->siz == G_IM_SIZ_16b) - { - for (i=0; i< 9; i++) - { - unpack_rgba(tex4[i], r0, g0, b0, a0); - kernel(i, r0, g0, b0, a0, &r2, &g2, &b2, &a2); -/*** - if (level == 6) - rmonPrintf("r0, g0, b0, a0 = %d %d %d %d\n", - r0, g0, b0, a0); -**/ - } - r1 = (int)(r2/16.0 + 0.5); - g1 = (int)(g2/16.0 + 0.5); - b1 = (int)(b2/16.0 + 0.5); - a1 = (int)(a2/16.0 + 0.5); - } - else - { - /* - * RGBA32 is not supported - */ - errNo = 2; - return errNo; - } - break; + /*** + if (level == 6) + rmonPrintf("sts = %d %d %d %d %d %d\n", + s, si, sii, t, ti, tii); + ***/ - case (G_IM_FMT_YUV): - errNo = 2; - return errNo; - break; + /* + * grab the nine neighbours to apply kernel function + */ + s4[0] = s; + t4[0] = tii; + s4[1] = si; + t4[1] = tii; + s4[2] = si; + t4[2] = t; + s4[3] = si; + t4[3] = ti; + s4[4] = s; + t4[4] = ti; + s4[5] = sii; + t4[5] = ti; + s4[6] = sii; + t4[6] = t; + s4[7] = sii; + t4[7] = tii; + s4[8] = s; + t4[8] = t; - case (G_IM_FMT_CI): - if (im->siz == G_IM_SIZ_4b) - { - for (i=0; i<9; i++) - { - unpack_ci4(tex4[i],ci0); - kernel(i, ci0, 0, 0, 0, &ci2, &dummy, &dummy, - &dummy); - } - ci1 = (int)(ci2/16.0 + 0.5); - } - else - if (im->siz == G_IM_SIZ_8b) - { - for (i=0; i<9; i++) - { - unpack_ci8(tex4[i],ci0); - kernel(i, ci0, 0, 0, 0, &ci2, &dummy, - &dummy, &dummy); - } - ci1 = (int)(ci2/16.0 + 0.5); - } - else - { - errNo=2; - return errNo; - } - break; + get3x3(&mipmap[level - 1], s4, t4, tex4, shift, im->siz); - case (G_IM_FMT_IA): - if (im->siz == G_IM_SIZ_4b) - { - for (i=0; i<9; i++) - { - unpack_ia4(tex4[i],i0,a0); - kernel(i, i0, a0, 0, 0, &i2, &a2, &dummy, - &dummy); - } - i1 = (int)(i2/16.0 +0.5); - a1 = (int)(a2/16.0 +0.5); - } - else if (im->siz == G_IM_SIZ_8b) - { - for (i=0; i<9; i++) - { - unpack_ia8(tex4[i],i0,a0); - kernel(i, i0, a0, 0, 0, &i2, &a2, &dummy, - &dummy); - } - i1 = (int)(i2/16.0 +0.5); - a1 = (int)(a2/16.0 +0.5); - } - else - if (im->siz == G_IM_SIZ_16b) - { - for (i=0; i<9; i++) - { - unpack_ia16(tex4[i],i0,a0); - kernel(i, i0, a0, 0, 0, &i2, &a2, &dummy, - &dummy); - } - i1 = (int)(i2/16.0 +0.5); - a1 = (int)(a2/16.0 +0.5); - } - else - { - errNo = 2; - return errNo; - } - break; + saddr = taddr + ((tempaddr >> 1) ^ trip); + r1 = g1 = b1 = a1 = ci1 = i1 = 0; + r2 = g2 = b2 = a2 = ci2 = i2 = 0; - case (G_IM_FMT_I): - if (im->siz == G_IM_SIZ_4b) - { - for (i=0; i<9; i++) - { - unpack_i4(tex4[i],i0); - kernel(i, i0, 0, 0, 0, &i2, &dummy, &dummy, - &dummy); - } - i1 = (int)(i2/16.0 + 0.5); - } - else - if (im->siz == G_IM_SIZ_8b) - { - for (i=0; i<9; i++) - { - unpack_i8(tex4[i],i0); - kernel(i, i0, 0, 0, 0, &i2, &dummy, &dummy, - &dummy); - } - i1 = (int)(i2/16.0 +0.5); - } - else - { - errNo = 2; - return errNo; - } - - default: - break; - } + /* + * Extract R,G and B components of the 9 texels and + * apply the filter kernel + */ + switch (im->fmt) { + case (G_IM_FMT_RGBA): + if (im->siz == G_IM_SIZ_16b) { + for (i = 0; i < 9; i++) { + unpack_rgba(tex4[i], r0, g0, b0, a0); + kernel(i, r0, g0, b0, a0, &r2, &g2, &b2, &a2); + /*** + if (level == 6) + rmonPrintf("r0, g0, b0, a0 = + %d %d %d %d\n", r0, g0, b0, a0); + **/ + } + r1 = (int)(r2 / 16.0 + 0.5); + g1 = (int)(g2 / 16.0 + 0.5); + b1 = (int)(b2 / 16.0 + 0.5); + a1 = (int)(a2 / 16.0 + 0.5); + } else { + /* + * RGBA32 is not supported + */ + errNo = 2; + return errNo; + } + break; - /* - * Pack fields into destination texel - */ - switch (im->fmt) - { + case (G_IM_FMT_YUV): + errNo = 2; + return errNo; + break; - case (G_IM_FMT_RGBA): - texel = pack_rgba(r1,g1,b1,a1); - *(short *)((int)saddr^flip) = texel; - break; + case (G_IM_FMT_CI): + if (im->siz == G_IM_SIZ_4b) { + for (i = 0; i < 9; i++) { + unpack_ci4(tex4[i], ci0); + kernel(i, ci0, 0, 0, 0, &ci2, &dummy, &dummy, &dummy); + } + ci1 = (int)(ci2 / 16.0 + 0.5); + } else if (im->siz == G_IM_SIZ_8b) { + for (i = 0; i < 9; i++) { + unpack_ci8(tex4[i], ci0); + kernel(i, ci0, 0, 0, 0, &ci2, &dummy, &dummy, &dummy); + } + ci1 = (int)(ci2 / 16.0 + 0.5); + } else { + errNo = 2; + return errNo; + } + break; - case (G_IM_FMT_YUV): - break; + case (G_IM_FMT_IA): + if (im->siz == G_IM_SIZ_4b) { + for (i = 0; i < 9; i++) { + unpack_ia4(tex4[i], i0, a0); + kernel(i, i0, a0, 0, 0, &i2, &a2, &dummy, &dummy); + } + i1 = (int)(i2 / 16.0 + 0.5); + a1 = (int)(a2 / 16.0 + 0.5); + } else if (im->siz == G_IM_SIZ_8b) { + for (i = 0; i < 9; i++) { + unpack_ia8(tex4[i], i0, a0); + kernel(i, i0, a0, 0, 0, &i2, &a2, &dummy, &dummy); + } + i1 = (int)(i2 / 16.0 + 0.5); + a1 = (int)(a2 / 16.0 + 0.5); + } else if (im->siz == G_IM_SIZ_16b) { + for (i = 0; i < 9; i++) { + unpack_ia16(tex4[i], i0, a0); + kernel(i, i0, a0, 0, 0, &i2, &a2, &dummy, &dummy); + } + i1 = (int)(i2 / 16.0 + 0.5); + a1 = (int)(a2 / 16.0 + 0.5); + } else { + errNo = 2; + return errNo; + } + break; - case (G_IM_FMT_CI): + case (G_IM_FMT_I): + if (im->siz == G_IM_SIZ_4b) { + for (i = 0; i < 9; i++) { + unpack_i4(tex4[i], i0); + kernel(i, i0, 0, 0, 0, &i2, &dummy, &dummy, &dummy); + } + i1 = (int)(i2 / 16.0 + 0.5); + } else if (im->siz == G_IM_SIZ_8b) { + for (i = 0; i < 9; i++) { + unpack_i8(tex4[i], i0); + kernel(i, i0, 0, 0, 0, &i2, &dummy, &dummy, &dummy); + } + i1 = (int)(i2 / 16.0 + 0.5); + } else { + errNo = 2; + return errNo; + } - if (im->siz == G_IM_SIZ_4b) - { - texel = pack_ci4(ci1); - *(char *)((int)saddr^flip) |= (s & 0x2)? - (texel): (texel << 4); - } - else - if (im->siz == G_IM_SIZ_8b) - { - texel = pack_ci8(ci1); - *(char *)((int)saddr^flip) = texel; - } - break; + default: + break; + } - case (G_IM_FMT_IA): - if (im->siz == G_IM_SIZ_4b) - { - texel = pack_ia4(i1,a1); - *(char *)((int)saddr^flip) |= (s & 0x2)? - (texel): (texel << 4); - } - else - if (im->siz == G_IM_SIZ_8b) - { - texel = pack_ia8(i1,a1); - *(char *)((int)saddr^flip) = texel; - } - else - if (im->siz == G_IM_SIZ_16b) - { - texel = pack_ia16(i1,a1); - *(short *)((int)saddr^flip) = texel; - } - break; + /* + * Pack fields into destination texel + */ + switch (im->fmt) { - case (G_IM_FMT_I): - if (im->siz == G_IM_SIZ_4b) - { - texel = pack_i4(i1); - *(char *)((int)saddr^flip) |= (s & 0x2)? - (texel): (texel << 4); - } - else - if (im->siz == G_IM_SIZ_8b) - { - texel = pack_i8(i1); - *(char *)((int)saddr^flip) = texel; - } - break; - } + case (G_IM_FMT_RGBA): + texel = pack_rgba(r1, g1, b1, a1); + *(short*)((int)saddr ^ flip) = texel; + break; - tempaddr += txlsize; + case (G_IM_FMT_YUV): + break; - } /* end s */ + case (G_IM_FMT_CI): - taddr += ((mipmap[level].w * txlsize) >> 1); + if (im->siz == G_IM_SIZ_4b) { + texel = pack_ci4(ci1); + *(char*)((int)saddr ^ flip) |= (s & 0x2) ? (texel) : (texel << 4); + } else if (im->siz == G_IM_SIZ_8b) { + texel = pack_ci8(ci1); + *(char*)((int)saddr ^ flip) = texel; + } + break; - } /* end t */ + case (G_IM_FMT_IA): + if (im->siz == G_IM_SIZ_4b) { + texel = pack_ia4(i1, a1); + *(char*)((int)saddr ^ flip) |= (s & 0x2) ? (texel) : (texel << 4); + } else if (im->siz == G_IM_SIZ_8b) { + texel = pack_ia8(i1, a1); + *(char*)((int)saddr ^ flip) = texel; + } else if (im->siz == G_IM_SIZ_16b) { + texel = pack_ia16(i1, a1); + *(short*)((int)saddr ^ flip) = texel; + } + break; - if (mipmap[level].s <= MM_MIN_SIZE && - mipmap[level].t <= MM_MIN_SIZE) - { - max_mipmap = level; - break; - } - } /* end level */ + case (G_IM_FMT_I): + if (im->siz == G_IM_SIZ_4b) { + texel = pack_i4(i1); + *(char*)((int)saddr ^ flip) |= (s & 0x2) ? (texel) : (texel << 4); + } else if (im->siz == G_IM_SIZ_8b) { + texel = pack_i8(i1); + *(char*)((int)saddr ^ flip) = texel; + } + break; + } -}/* end generate mipmap */ -/* - * Add entries for texture loading and rendering in DL - */ -stuffDisplayList(glistp, im, tbuf, startTile, pal, cms, cmt, masks, maskt, shifts, shiftt); + tempaddr += txlsize; -return errNo; + } /* end s */ + + taddr += ((mipmap[level].w * txlsize) >> 1); + + } /* end t */ + + if (mipmap[level].s <= MM_MIN_SIZE && mipmap[level].t <= MM_MIN_SIZE) { + max_mipmap = level; + break; + } + } /* end level */ + + } /* end generate mipmap */ + /* + * Add entries for texture loading and rendering in DL + */ + stuffDisplayList(glistp, im, tbuf, startTile, pal, cms, cmt, masks, maskt, shifts, shiftt); + + return errNo; } /* end guLoadTextureBlockMipMap */ /****************************************************************************** - * + * * Apply Kernel : * 1 2 1 * 2 4 1 * 1 2 1 ******************************************************************************/ -static void kernel(int i, int r0, int g0, int b0, int a0, float *r2, float *g2, float *b2, float *a2) -{ - if (i == 8) - { - *r2 += r0*4; *g2 += g0*4; *b2 += b0*4; *a2 += a0*4; - } else - if (i%2 == 0) - { - *r2 += r0*2; - *g2 += g0*2; - *b2 += b0*2; - *a2 += a0*2; - } else - { - *r2 += r0; - *g2 += g0; - *b2 += b0; - *a2 += a0; - } +static void kernel(int i, int r0, int g0, int b0, int a0, float* r2, float* g2, float* b2, float* a2) { + if (i == 8) { + *r2 += r0 * 4; + *g2 += g0 * 4; + *b2 += b0 * 4; + *a2 += a0 * 4; + } else if (i % 2 == 0) { + *r2 += r0 * 2; + *g2 += g0 * 2; + *b2 += b0 * 2; + *a2 += a0 * 2; + } else { + *r2 += r0; + *g2 += g0; + *b2 += b0; + *a2 += a0; + } } /******************************************************************** Add entries for loading and rendering textures into the display list *********************************************************************/ -static void stuffDisplayList(Gfx **glistp, Image *im, char *tbuf, unsigned char startTile, - unsigned char pal, unsigned char cms, unsigned char cmt, - unsigned char masks, unsigned char maskt, unsigned char shifts, - unsigned char shiftt) -{ - int tile; - int Smask, Tmask; - int Sshift, Tshift; +static void stuffDisplayList(Gfx** glistp, Image* im, char* tbuf, unsigned char startTile, unsigned char pal, + unsigned char cms, unsigned char cmt, unsigned char masks, unsigned char maskt, + unsigned char shifts, unsigned char shiftt) { + int tile; + int Smask, Tmask; + int Sshift, Tshift; - /* - * set LOADTILE for loading texture - * 4-bit textures are loaded in 8-bit chunks - */ - if (im->siz == G_IM_SIZ_4b) { - gDPSetTextureImage((*glistp)++, im->fmt, G_IM_SIZ_8b, 1, - osVirtualToPhysical((unsigned short *)tbuf)); - gDPSetTile((*glistp)++, im->fmt, G_IM_SIZ_8b, NA, 0, G_TX_LOADTILE, NA, - NA, NA, NA, NA, NA, NA); - /* Wait until all primitives are done */ - gDPLoadSync((*glistp)++); - gDPLoadBlock((*glistp)++, G_TX_LOADTILE, 0, 0, length/2, 0x0); - } else { - gDPSetTextureImage((*glistp)++, im->fmt, im->siz, 1, - osVirtualToPhysical((unsigned short *)tbuf)); - gDPSetTile((*glistp)++, im->fmt, im->siz, NA, 0, G_TX_LOADTILE, NA, - NA, NA, NA, NA, NA, NA); - /* Wait until all primitives are done */ - gDPLoadSync((*glistp)++); - gDPLoadBlock((*glistp)++, G_TX_LOADTILE, 0, 0, length, 0x0); - } - - for (tile = 0; tile <= level; tile ++) - { - Tmask = maskt-tile; - if (Tmask < 0){ - Tmask = 0; - } else { - Tshift = tile; - } - - Smask = masks-tile; - if (Smask < 0){ - Smask = 0; - } else { - Sshift = tile; - } + /* + * set LOADTILE for loading texture + * 4-bit textures are loaded in 8-bit chunks + */ + if (im->siz == G_IM_SIZ_4b) { + gDPSetTextureImage((*glistp)++, im->fmt, G_IM_SIZ_8b, 1, osVirtualToPhysical((unsigned short*)tbuf)); + gDPSetTile((*glistp)++, im->fmt, G_IM_SIZ_8b, NA, 0, G_TX_LOADTILE, NA, NA, NA, NA, NA, NA, NA); + /* Wait until all primitives are done */ + gDPLoadSync((*glistp)++); + gDPLoadBlock((*glistp)++, G_TX_LOADTILE, 0, 0, length / 2, 0x0); + } else { + gDPSetTextureImage((*glistp)++, im->fmt, im->siz, 1, osVirtualToPhysical((unsigned short*)tbuf)); + gDPSetTile((*glistp)++, im->fmt, im->siz, NA, 0, G_TX_LOADTILE, NA, NA, NA, NA, NA, NA, NA); + /* Wait until all primitives are done */ + gDPLoadSync((*glistp)++); + gDPLoadBlock((*glistp)++, G_TX_LOADTILE, 0, 0, length, 0x0); + } -/*** - rmonPrintf("tile, Tmask, Tshift, Smask, Sshift %d %d %d %d %d\n", - tile, Tmask, Tshift, Smask, Sshift); - rmonPrintf("%d\n",startTile); -***/ + for (tile = 0; tile <= level; tile++) { + Tmask = maskt - tile; + if (Tmask < 0) { + Tmask = 0; + } else { + Tshift = tile; + } - - gDPSetTile((*glistp)++,im->fmt, im->siz, (mipmap[tile].w*txlsize >> 4), - (mipmap[tile].addr >> 3), tile+startTile, pal, cmt, Tmask, Tshift, cms, - Smask, Sshift); + Smask = masks - tile; + if (Smask < 0) { + Smask = 0; + } else { + Sshift = tile; + } - gDPSetTileSize((*glistp)++,tile+startTile, (0 <fmt, im->siz, (mipmap[tile].w * txlsize >> 4), (mipmap[tile].addr >> 3), + tile + startTile, pal, cmt, Tmask, Tshift, cms, Smask, Sshift); + + gDPSetTileSize((*glistp)++, tile + startTile, (0 << G_TEXTURE_IMAGE_FRAC), (0 << G_TEXTURE_IMAGE_FRAC), + (mipmap[tile].s - 1) << G_TEXTURE_IMAGE_FRAC, (mipmap[tile].t - 1) << G_TEXTURE_IMAGE_FRAC); + } } /****************************************************************************** - Extract quad of texels for filtering. Compute bank and row addresses. + Extract quad of texels for filtering. Compute bank and row addresses. ******************************************************************************/ -static void get3x3(struct Tile *tile, int *s, int *t, int *texel, int shift, int size) -{ - int i; - int bank, row; - unsigned int addr; - int overlap; - unsigned char r, g, b, a; - unsigned long tex; - struct Image *im; - unsigned int ss,tt; +static void get3x3(struct Tile* tile, int* s, int* t, int* texel, int shift, int size) { + int i; + int bank, row; + unsigned int addr; + int overlap; + unsigned char r, g, b, a; + unsigned long tex; + struct Image* im; + unsigned int ss, tt; - for (i=0; i< 9; i++) - { - ss = s[i]; - tt = t[i]; - /* bank and row indexing */ - bank = (((ss & (0x3 << (shift-1))) >> (shift-1)) ^ ((tt & 0x1) << 1)) << 1; - row = (((tt * tile->w + ss) * txlsize) >> 1) / TRAM_LSIZE; - addr = tile->addr + row * TRAM_WSIZE + bank; + for (i = 0; i < 9; i++) { + ss = s[i]; + tt = t[i]; + /* bank and row indexing */ + bank = (((ss & (0x3 << (shift - 1))) >> (shift - 1)) ^ ((tt & 0x1) << 1)) << 1; + row = (((tt * tile->w + ss) * txlsize) >> 1) / TRAM_LSIZE; + addr = tile->addr + row * TRAM_WSIZE + bank; - overlap = (i == 0) ? bank : overlap ^ bank; + overlap = (i == 0) ? bank : overlap ^ bank; - switch (size) - { - case G_IM_SIZ_4b: - texel[i] = (tram[addr + ((ss & 0x2) >> 1)] - & (0xf0 >> ((ss & 0x1) << 2))); - if (!(ss & 0x1)) texel[i] = texel[i] >> 4; - break; + switch (size) { + case G_IM_SIZ_4b: + texel[i] = (tram[addr + ((ss & 0x2) >> 1)] & (0xf0 >> ((ss & 0x1) << 2))); + if (!(ss & 0x1)) + texel[i] = texel[i] >> 4; + break; - case G_IM_SIZ_8b: - texel[i] = tram[addr + (ss & 0x1)]; - break; + case G_IM_SIZ_8b: + texel[i] = tram[addr + (ss & 0x1)]; + break; - case G_IM_SIZ_16b: - texel[i] = (tram[addr] << 8) | tram[addr+1]; - break; + case G_IM_SIZ_16b: + texel[i] = (tram[addr] << 8) | tram[addr + 1]; + break; - case G_IM_SIZ_32b: - errNo = 2; /* Format not supported */ - break; + case G_IM_SIZ_32b: + errNo = 2; /* Format not supported */ + break; - default: - break; - } - - } + default: + break; + } + } } diff --git a/src/gu/lookat.c b/src/gu/lookat.c index 1fadc17..f6b3fbb 100644 --- a/src/gu/lookat.c +++ b/src/gu/lookat.c @@ -12,72 +12,68 @@ #include "guint.h" -void guLookAtF(float mf[4][4], float xEye, float yEye, float zEye, - float xAt, float yAt, float zAt, - float xUp, float yUp, float zUp) -{ - float len, xLook, yLook, zLook, xRight, yRight, zRight; +void guLookAtF(float mf[4][4], float xEye, float yEye, float zEye, float xAt, float yAt, float zAt, float xUp, + float yUp, float zUp) { + float len, xLook, yLook, zLook, xRight, yRight, zRight; - guMtxIdentF(mf); + guMtxIdentF(mf); - xLook = xAt - xEye; - yLook = yAt - yEye; - zLook = zAt - zEye; + xLook = xAt - xEye; + yLook = yAt - yEye; + zLook = zAt - zEye; - /* Negate because positive Z is behind us: */ - len = -1.0 / sqrtf (xLook*xLook + yLook*yLook + zLook*zLook); - xLook *= len; - yLook *= len; - zLook *= len; + /* Negate because positive Z is behind us: */ + len = -1.0 / sqrtf(xLook * xLook + yLook * yLook + zLook * zLook); + xLook *= len; + yLook *= len; + zLook *= len; - /* Right = Up x Look */ + /* Right = Up x Look */ - xRight = yUp * zLook - zUp * yLook; - yRight = zUp * xLook - xUp * zLook; - zRight = xUp * yLook - yUp * xLook; - len = 1.0 / sqrtf (xRight*xRight + yRight*yRight + zRight*zRight); - xRight *= len; - yRight *= len; - zRight *= len; + xRight = yUp * zLook - zUp * yLook; + yRight = zUp * xLook - xUp * zLook; + zRight = xUp * yLook - yUp * xLook; + len = 1.0 / sqrtf(xRight * xRight + yRight * yRight + zRight * zRight); + xRight *= len; + yRight *= len; + zRight *= len; - /* Up = Look x Right */ + /* Up = Look x Right */ - xUp = yLook * zRight - zLook * yRight; - yUp = zLook * xRight - xLook * zRight; - zUp = xLook * yRight - yLook * xRight; - len = 1.0 / sqrtf (xUp*xUp + yUp*yUp + zUp*zUp); - xUp *= len; - yUp *= len; - zUp *= len; + xUp = yLook * zRight - zLook * yRight; + yUp = zLook * xRight - xLook * zRight; + zUp = xLook * yRight - yLook * xRight; + len = 1.0 / sqrtf(xUp * xUp + yUp * yUp + zUp * zUp); + xUp *= len; + yUp *= len; + zUp *= len; - mf[0][0] = xRight; - mf[1][0] = yRight; - mf[2][0] = zRight; - mf[3][0] = -(xEye * xRight + yEye * yRight + zEye * zRight); + mf[0][0] = xRight; + mf[1][0] = yRight; + mf[2][0] = zRight; + mf[3][0] = -(xEye * xRight + yEye * yRight + zEye * zRight); - mf[0][1] = xUp; - mf[1][1] = yUp; - mf[2][1] = zUp; - mf[3][1] = -(xEye * xUp + yEye * yUp + zEye * zUp); + mf[0][1] = xUp; + mf[1][1] = yUp; + mf[2][1] = zUp; + mf[3][1] = -(xEye * xUp + yEye * yUp + zEye * zUp); - mf[0][2] = xLook; - mf[1][2] = yLook; - mf[2][2] = zLook; - mf[3][2] = -(xEye * xLook + yEye * yLook + zEye * zLook); + mf[0][2] = xLook; + mf[1][2] = yLook; + mf[2][2] = zLook; + mf[3][2] = -(xEye * xLook + yEye * yLook + zEye * zLook); - mf[0][3] = 0; - mf[1][3] = 0; - mf[2][3] = 0; - mf[3][3] = 1; + mf[0][3] = 0; + mf[1][3] = 0; + mf[2][3] = 0; + mf[3][3] = 1; } -void guLookAt (Mtx *m, float xEye, float yEye, float zEye, - float xAt, float yAt, float zAt, - float xUp, float yUp, float zUp) -{ - Matrix mf; +void guLookAt(Mtx* m, float xEye, float yEye, float zEye, float xAt, float yAt, float zAt, float xUp, float yUp, + float zUp) { + Matrix mf; - guLookAtF(mf, xEye, yEye, zEye, xAt, yAt, zAt, xUp, yUp, zUp); + guLookAtF(mf, xEye, yEye, zEye, xAt, yAt, zAt, xUp, yUp, zUp); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } diff --git a/src/gu/lookathil.c b/src/gu/lookathil.c index a848688..621d160 100644 --- a/src/gu/lookathil.c +++ b/src/gu/lookathil.c @@ -12,174 +12,153 @@ #include "guint.h" - -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, /* light 1 direction */ - float xl2, float yl2, float zl2, /* light 2 direction */ - int twidth, int theight) /* highlight txtr size*/ +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, /* light 1 direction */ + float xl2, float yl2, float zl2, /* light 2 direction */ + int twidth, int theight) /* highlight txtr size*/ { - float len, xLook, yLook, zLook, xRight, yRight, zRight; - float xHilite, yHilite, zHilite; + float len, xLook, yLook, zLook, xRight, yRight, zRight; + float xHilite, yHilite, zHilite; - guMtxIdentF(mf); + guMtxIdentF(mf); - xLook = xAt - xEye; - yLook = yAt - yEye; - zLook = zAt - zEye; + xLook = xAt - xEye; + yLook = yAt - yEye; + zLook = zAt - zEye; - /* Negate because positive Z is behind us: */ - len = -1.0 / sqrtf (xLook*xLook + yLook*yLook + zLook*zLook); - xLook *= len; - yLook *= len; - zLook *= len; + /* Negate because positive Z is behind us: */ + len = -1.0 / sqrtf(xLook * xLook + yLook * yLook + zLook * zLook); + xLook *= len; + yLook *= len; + zLook *= len; - /* Right = Up x Look */ + /* Right = Up x Look */ - xRight = yUp * zLook - zUp * yLook; - yRight = zUp * xLook - xUp * zLook; - zRight = xUp * yLook - yUp * xLook; - len = 1.0 / sqrtf (xRight*xRight + yRight*yRight + zRight*zRight); - xRight *= len; - yRight *= len; - zRight *= len; + xRight = yUp * zLook - zUp * yLook; + yRight = zUp * xLook - xUp * zLook; + zRight = xUp * yLook - yUp * xLook; + len = 1.0 / sqrtf(xRight * xRight + yRight * yRight + zRight * zRight); + xRight *= len; + yRight *= len; + zRight *= len; - /* Up = Look x Right */ + /* Up = Look x Right */ - xUp = yLook * zRight - zLook * yRight; - yUp = zLook * xRight - xLook * zRight; - zUp = xLook * yRight - yLook * xRight; - len = 1.0 / sqrtf (xUp*xUp + yUp*yUp + zUp*zUp); - xUp *= len; - yUp *= len; - zUp *= len; + xUp = yLook * zRight - zLook * yRight; + yUp = zLook * xRight - xLook * zRight; + zUp = xLook * yRight - yLook * xRight; + len = 1.0 / sqrtf(xUp * xUp + yUp * yUp + zUp * zUp); + xUp *= len; + yUp *= len; + zUp *= len; - /* hilite vectors */ + /* hilite vectors */ - len = 1.0 / sqrtf (xl1*xl1 + yl1*yl1 + zl1*zl1); - xl1 *= len; - yl1 *= len; - zl1 *= len; + len = 1.0 / sqrtf(xl1 * xl1 + yl1 * yl1 + zl1 * zl1); + xl1 *= len; + yl1 *= len; + zl1 *= len; #define THRESH2 0.1 - xHilite = xl1 + xLook; - yHilite = yl1 + yLook; - zHilite = zl1 + zLook; + xHilite = xl1 + xLook; + yHilite = yl1 + yLook; + zHilite = zl1 + zLook; - len = sqrtf (xHilite*xHilite + yHilite*yHilite + zHilite*zHilite); + len = sqrtf(xHilite * xHilite + yHilite * yHilite + zHilite * zHilite); - if (len>THRESH2) - { - len = 1.0 / len; - xHilite *= len; - yHilite *= len; - zHilite *= len; - - h->h.x1 = - twidth*4 + (xHilite*xRight + - yHilite*yRight + - zHilite*zRight)*twidth*2; - - h->h.y1 = - theight*4 + (xHilite*xUp + - yHilite*yUp + - zHilite*zUp)*theight*2; - } - else - { - h->h.x1 = twidth*2; - h->h.y1 = theight*2; - } + if (len > THRESH2) { + len = 1.0 / len; + xHilite *= len; + yHilite *= len; + zHilite *= len; - len = 1.0 / sqrtf (xl2*xl2 + yl2*yl2 + zl2*zl2); - xl2 *= len; - yl2 *= len; - zl2 *= len; + h->h.x1 = twidth * 4 + (xHilite * xRight + yHilite * yRight + zHilite * zRight) * twidth * 2; - xHilite = xl2 + xLook; - yHilite = yl2 + yLook; - zHilite = zl2 + zLook; - len = sqrtf (xHilite*xHilite + yHilite*yHilite + zHilite*zHilite); - if (len>THRESH2) - { - len = 1.0 / len; - xHilite *= len; - yHilite *= len; - zHilite *= len; + h->h.y1 = theight * 4 + (xHilite * xUp + yHilite * yUp + zHilite * zUp) * theight * 2; + } else { + h->h.x1 = twidth * 2; + h->h.y1 = theight * 2; + } - h->h.x2 = twidth*4 + - (xHilite*xRight + yHilite*yRight + zHilite*zRight)*twidth*2; + len = 1.0 / sqrtf(xl2 * xl2 + yl2 * yl2 + zl2 * zl2); + xl2 *= len; + yl2 *= len; + zl2 *= len; - h->h.y2 = theight*4 + - (xHilite*xUp + yHilite*yUp + zHilite*zUp)*theight*2; - } - else - { - h->h.x2 = twidth*2; - h->h.y2 = theight*2; - } + xHilite = xl2 + xLook; + yHilite = yl2 + yLook; + zHilite = zl2 + zLook; + len = sqrtf(xHilite * xHilite + yHilite * yHilite + zHilite * zHilite); + if (len > THRESH2) { + len = 1.0 / len; + xHilite *= len; + yHilite *= len; + zHilite *= len; - /* reflectance vectors = Up and Right */ + h->h.x2 = twidth * 4 + (xHilite * xRight + yHilite * yRight + zHilite * zRight) * twidth * 2; - l->l[0].l.dir[0] = FTOFRAC8(xRight); - l->l[0].l.dir[1] = FTOFRAC8(yRight); - l->l[0].l.dir[2] = FTOFRAC8(zRight); - l->l[1].l.dir[0] = FTOFRAC8(xUp); - l->l[1].l.dir[1] = FTOFRAC8(yUp); - l->l[1].l.dir[2] = FTOFRAC8(zUp); - l->l[0].l.col[0] = 0x00; - l->l[0].l.col[1] = 0x00; - l->l[0].l.col[2] = 0x00; - l->l[0].l.pad1 = 0x00; - l->l[0].l.colc[0] = 0x00; - l->l[0].l.colc[1] = 0x00; - l->l[0].l.colc[2] = 0x00; - l->l[0].l.pad2 = 0x00; - l->l[1].l.col[0] = 0x00; - l->l[1].l.col[1] = 0x80; - l->l[1].l.col[2] = 0x00; - l->l[1].l.pad1 = 0x00; - l->l[1].l.colc[0] = 0x00; - l->l[1].l.colc[1] = 0x80; - l->l[1].l.colc[2] = 0x00; - l->l[1].l.pad2 = 0x00; + h->h.y2 = theight * 4 + (xHilite * xUp + yHilite * yUp + zHilite * zUp) * theight * 2; + } else { + h->h.x2 = twidth * 2; + h->h.y2 = theight * 2; + } - mf[0][0] = xRight; - mf[1][0] = yRight; - mf[2][0] = zRight; - mf[3][0] = -(xEye * xRight + yEye * yRight + zEye * zRight); + /* reflectance vectors = Up and Right */ - mf[0][1] = xUp; - mf[1][1] = yUp; - mf[2][1] = zUp; - mf[3][1] = -(xEye * xUp + yEye * yUp + zEye * zUp); + l->l[0].l.dir[0] = FTOFRAC8(xRight); + l->l[0].l.dir[1] = FTOFRAC8(yRight); + l->l[0].l.dir[2] = FTOFRAC8(zRight); + l->l[1].l.dir[0] = FTOFRAC8(xUp); + l->l[1].l.dir[1] = FTOFRAC8(yUp); + l->l[1].l.dir[2] = FTOFRAC8(zUp); + l->l[0].l.col[0] = 0x00; + l->l[0].l.col[1] = 0x00; + l->l[0].l.col[2] = 0x00; + l->l[0].l.pad1 = 0x00; + l->l[0].l.colc[0] = 0x00; + l->l[0].l.colc[1] = 0x00; + l->l[0].l.colc[2] = 0x00; + l->l[0].l.pad2 = 0x00; + l->l[1].l.col[0] = 0x00; + l->l[1].l.col[1] = 0x80; + l->l[1].l.col[2] = 0x00; + l->l[1].l.pad1 = 0x00; + l->l[1].l.colc[0] = 0x00; + l->l[1].l.colc[1] = 0x80; + l->l[1].l.colc[2] = 0x00; + l->l[1].l.pad2 = 0x00; - mf[0][2] = xLook; - mf[1][2] = yLook; - mf[2][2] = zLook; - mf[3][2] = -(xEye * xLook + yEye * yLook + zEye * zLook); + mf[0][0] = xRight; + mf[1][0] = yRight; + mf[2][0] = zRight; + mf[3][0] = -(xEye * xRight + yEye * yRight + zEye * zRight); - mf[0][3] = 0; - mf[1][3] = 0; - mf[2][3] = 0; - mf[3][3] = 1; + mf[0][1] = xUp; + mf[1][1] = yUp; + mf[2][1] = zUp; + mf[3][1] = -(xEye * xUp + yEye * yUp + zEye * zUp); + + mf[0][2] = xLook; + mf[1][2] = yLook; + mf[2][2] = zLook; + mf[3][2] = -(xEye * xLook + yEye * yLook + zEye * zLook); + + mf[0][3] = 0; + mf[1][3] = 0; + mf[2][3] = 0; + mf[3][3] = 1; } -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, /* light 1 direction */ - float xl2, float yl2, float zl2, /* light 2 direction */ - int twidth, int theight) /* highlight txtr size*/ +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, /* light 1 direction */ + float xl2, float yl2, float zl2, /* light 2 direction */ + int twidth, int theight) /* highlight txtr size*/ { - Matrix mf; + Matrix mf; - guLookAtHiliteF(mf, l, h, xEye, yEye, zEye, xAt, yAt, zAt, - xUp, yUp, zUp, xl1, yl1, zl1, xl2, yl2, zl2, - twidth, theight); + guLookAtHiliteF(mf, l, h, xEye, yEye, zEye, xAt, yAt, zAt, xUp, yUp, zUp, xl1, yl1, zl1, xl2, yl2, zl2, twidth, + theight); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } diff --git a/src/gu/lookatref.c b/src/gu/lookatref.c index 3cd3b65..cec29cb 100644 --- a/src/gu/lookatref.c +++ b/src/gu/lookatref.c @@ -12,100 +12,93 @@ #include "guint.h" +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) { + float len, xLook, yLook, zLook, xRight, yRight, zRight; -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) -{ - float len, xLook, yLook, zLook, xRight, yRight, zRight; + guMtxIdentF(mf); - guMtxIdentF(mf); + xLook = xAt - xEye; + yLook = yAt - yEye; + zLook = zAt - zEye; - xLook = xAt - xEye; - yLook = yAt - yEye; - zLook = zAt - zEye; + /* Negate because positive Z is behind us: */ + len = -1.0 / sqrtf(xLook * xLook + yLook * yLook + zLook * zLook); + xLook *= len; + yLook *= len; + zLook *= len; - /* Negate because positive Z is behind us: */ - len = -1.0 / sqrtf (xLook*xLook + yLook*yLook + zLook*zLook); - xLook *= len; - yLook *= len; - zLook *= len; + /* Right = Up x Look */ - /* Right = Up x Look */ + xRight = yUp * zLook - zUp * yLook; + yRight = zUp * xLook - xUp * zLook; + zRight = xUp * yLook - yUp * xLook; + len = 1.0 / sqrtf(xRight * xRight + yRight * yRight + zRight * zRight); + xRight *= len; + yRight *= len; + zRight *= len; - xRight = yUp * zLook - zUp * yLook; - yRight = zUp * xLook - xUp * zLook; - zRight = xUp * yLook - yUp * xLook; - len = 1.0 / sqrtf (xRight*xRight + yRight*yRight + zRight*zRight); - xRight *= len; - yRight *= len; - zRight *= len; + /* Up = Look x Right */ - /* Up = Look x Right */ + xUp = yLook * zRight - zLook * yRight; + yUp = zLook * xRight - xLook * zRight; + zUp = xLook * yRight - yLook * xRight; + len = 1.0 / sqrtf(xUp * xUp + yUp * yUp + zUp * zUp); + xUp *= len; + yUp *= len; + zUp *= len; - xUp = yLook * zRight - zLook * yRight; - yUp = zLook * xRight - xLook * zRight; - zUp = xLook * yRight - yLook * xRight; - len = 1.0 / sqrtf (xUp*xUp + yUp*yUp + zUp*zUp); - xUp *= len; - yUp *= len; - zUp *= len; + /* reflectance vectors = Up and Right */ - /* reflectance vectors = Up and Right */ + l->l[0].l.dir[0] = FTOFRAC8(xRight); + l->l[0].l.dir[1] = FTOFRAC8(yRight); + l->l[0].l.dir[2] = FTOFRAC8(zRight); + l->l[1].l.dir[0] = FTOFRAC8(xUp); + l->l[1].l.dir[1] = FTOFRAC8(yUp); + l->l[1].l.dir[2] = FTOFRAC8(zUp); + l->l[0].l.col[0] = 0x00; + l->l[0].l.col[1] = 0x00; + l->l[0].l.col[2] = 0x00; + l->l[0].l.pad1 = 0x00; + l->l[0].l.colc[0] = 0x00; + l->l[0].l.colc[1] = 0x00; + l->l[0].l.colc[2] = 0x00; + l->l[0].l.pad2 = 0x00; + l->l[1].l.col[0] = 0x00; + l->l[1].l.col[1] = 0x80; + l->l[1].l.col[2] = 0x00; + l->l[1].l.pad1 = 0x00; + l->l[1].l.colc[0] = 0x00; + l->l[1].l.colc[1] = 0x80; + l->l[1].l.colc[2] = 0x00; + l->l[1].l.pad2 = 0x00; - l->l[0].l.dir[0] = FTOFRAC8(xRight); - l->l[0].l.dir[1] = FTOFRAC8(yRight); - l->l[0].l.dir[2] = FTOFRAC8(zRight); - l->l[1].l.dir[0] = FTOFRAC8(xUp); - l->l[1].l.dir[1] = FTOFRAC8(yUp); - l->l[1].l.dir[2] = FTOFRAC8(zUp); - l->l[0].l.col[0] = 0x00; - l->l[0].l.col[1] = 0x00; - l->l[0].l.col[2] = 0x00; - l->l[0].l.pad1 = 0x00; - l->l[0].l.colc[0] = 0x00; - l->l[0].l.colc[1] = 0x00; - l->l[0].l.colc[2] = 0x00; - l->l[0].l.pad2 = 0x00; - l->l[1].l.col[0] = 0x00; - l->l[1].l.col[1] = 0x80; - l->l[1].l.col[2] = 0x00; - l->l[1].l.pad1 = 0x00; - l->l[1].l.colc[0] = 0x00; - l->l[1].l.colc[1] = 0x80; - l->l[1].l.colc[2] = 0x00; - l->l[1].l.pad2 = 0x00; + mf[0][0] = xRight; + mf[1][0] = yRight; + mf[2][0] = zRight; + mf[3][0] = -(xEye * xRight + yEye * yRight + zEye * zRight); - mf[0][0] = xRight; - mf[1][0] = yRight; - mf[2][0] = zRight; - mf[3][0] = -(xEye * xRight + yEye * yRight + zEye * zRight); + mf[0][1] = xUp; + mf[1][1] = yUp; + mf[2][1] = zUp; + mf[3][1] = -(xEye * xUp + yEye * yUp + zEye * zUp); - mf[0][1] = xUp; - mf[1][1] = yUp; - mf[2][1] = zUp; - mf[3][1] = -(xEye * xUp + yEye * yUp + zEye * zUp); + mf[0][2] = xLook; + mf[1][2] = yLook; + mf[2][2] = zLook; + mf[3][2] = -(xEye * xLook + yEye * yLook + zEye * zLook); - mf[0][2] = xLook; - mf[1][2] = yLook; - mf[2][2] = zLook; - mf[3][2] = -(xEye * xLook + yEye * yLook + zEye * zLook); - - mf[0][3] = 0; - mf[1][3] = 0; - mf[2][3] = 0; - mf[3][3] = 1; + mf[0][3] = 0; + mf[1][3] = 0; + mf[2][3] = 0; + mf[3][3] = 1; } -void guLookAtReflect (Mtx *m, LookAt *l, float xEye, float yEye, float zEye, - float xAt, float yAt, float zAt, - float xUp, float yUp, float zUp) -{ - float mf[4][4]; +void guLookAtReflect(Mtx* m, LookAt* l, float xEye, float yEye, float zEye, float xAt, float yAt, float zAt, float xUp, + float yUp, float zUp) { + float mf[4][4]; - guLookAtReflectF(mf, l, xEye, yEye, zEye, xAt, yAt, zAt, - xUp, yUp, zUp); + guLookAtReflectF(mf, l, xEye, yEye, zEye, xAt, yAt, zAt, xUp, yUp, zUp); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } diff --git a/src/gu/lookatstereo.c b/src/gu/lookatstereo.c index b60ca08..027677f 100644 --- a/src/gu/lookatstereo.c +++ b/src/gu/lookatstereo.c @@ -12,100 +12,94 @@ #include "guint.h" -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) -{ - float len, xLook, yLook, zLook, xRight, yRight, zRight; +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) { + float len, xLook, yLook, zLook, xRight, yRight, zRight; - guMtxIdentF(mf); + guMtxIdentF(mf); - xLook = xAt - xEye; - yLook = yAt - yEye; - zLook = zAt - zEye; + xLook = xAt - xEye; + yLook = yAt - yEye; + zLook = zAt - zEye; - /* Negate because positive Z is behind us: */ - len = -1.0 / sqrtf (xLook*xLook + yLook*yLook + zLook*zLook); - xLook *= len; - yLook *= len; - zLook *= len; + /* Negate because positive Z is behind us: */ + len = -1.0 / sqrtf(xLook * xLook + yLook * yLook + zLook * zLook); + xLook *= len; + yLook *= len; + zLook *= len; - /* Right = Up x Look */ + /* Right = Up x Look */ - xRight = yUp * zLook - zUp * yLook; - yRight = zUp * xLook - xUp * zLook; - zRight = xUp * yLook - yUp * xLook; - len = 1.0 / sqrtf (xRight*xRight + yRight*yRight + zRight*zRight); - xRight *= len; - yRight *= len; - zRight *= len; + xRight = yUp * zLook - zUp * yLook; + yRight = zUp * xLook - xUp * zLook; + zRight = xUp * yLook - yUp * xLook; + len = 1.0 / sqrtf(xRight * xRight + yRight * yRight + zRight * zRight); + xRight *= len; + yRight *= len; + zRight *= len; - /* Move eye for stereo */ - xEye += eyedist*xRight; - yEye += eyedist*yRight; - zEye += eyedist*zRight; + /* Move eye for stereo */ + xEye += eyedist * xRight; + yEye += eyedist * yRight; + zEye += eyedist * zRight; - /* recalculate using new eye */ - xLook = xAt - xEye; - yLook = yAt - yEye; - zLook = zAt - zEye; + /* recalculate using new eye */ + xLook = xAt - xEye; + yLook = yAt - yEye; + zLook = zAt - zEye; - /* Negate because positive Z is behind us: */ - len = -1.0 / sqrtf (xLook*xLook + yLook*yLook + zLook*zLook); - xLook *= len; - yLook *= len; - zLook *= len; + /* Negate because positive Z is behind us: */ + len = -1.0 / sqrtf(xLook * xLook + yLook * yLook + zLook * zLook); + xLook *= len; + yLook *= len; + zLook *= len; - /* Right = Up x Look */ + /* Right = Up x Look */ - xRight = yUp * zLook - zUp * yLook; - yRight = zUp * xLook - xUp * zLook; - zRight = xUp * yLook - yUp * xLook; - len = 1.0 / sqrtf (xRight*xRight + yRight*yRight + zRight*zRight); - xRight *= len; - yRight *= len; - zRight *= len; + xRight = yUp * zLook - zUp * yLook; + yRight = zUp * xLook - xUp * zLook; + zRight = xUp * yLook - yUp * xLook; + len = 1.0 / sqrtf(xRight * xRight + yRight * yRight + zRight * zRight); + xRight *= len; + yRight *= len; + zRight *= len; + /* Up = Look x Right */ - /* Up = Look x Right */ + xUp = yLook * zRight - zLook * yRight; + yUp = zLook * xRight - xLook * zRight; + zUp = xLook * yRight - yLook * xRight; + len = 1.0 / sqrtf(xUp * xUp + yUp * yUp + zUp * zUp); + xUp *= len; + yUp *= len; + zUp *= len; - xUp = yLook * zRight - zLook * yRight; - yUp = zLook * xRight - xLook * zRight; - zUp = xLook * yRight - yLook * xRight; - len = 1.0 / sqrtf (xUp*xUp + yUp*yUp + zUp*zUp); - xUp *= len; - yUp *= len; - zUp *= len; + mf[0][0] = xRight; + mf[1][0] = yRight; + mf[2][0] = zRight; + mf[3][0] = -(xEye * xRight + yEye * yRight + zEye * zRight); - mf[0][0] = xRight; - mf[1][0] = yRight; - mf[2][0] = zRight; - mf[3][0] = -(xEye * xRight + yEye * yRight + zEye * zRight); + mf[0][1] = xUp; + mf[1][1] = yUp; + mf[2][1] = zUp; + mf[3][1] = -(xEye * xUp + yEye * yUp + zEye * zUp); - mf[0][1] = xUp; - mf[1][1] = yUp; - mf[2][1] = zUp; - mf[3][1] = -(xEye * xUp + yEye * yUp + zEye * zUp); + mf[0][2] = xLook; + mf[1][2] = yLook; + mf[2][2] = zLook; + mf[3][2] = -(xEye * xLook + yEye * yLook + zEye * zLook); - mf[0][2] = xLook; - mf[1][2] = yLook; - mf[2][2] = zLook; - mf[3][2] = -(xEye * xLook + yEye * yLook + zEye * zLook); - - mf[0][3] = 0; - mf[1][3] = 0; - mf[2][3] = 0; - mf[3][3] = 1; + mf[0][3] = 0; + mf[1][3] = 0; + mf[2][3] = 0; + mf[3][3] = 1; } -void guLookAtStereo (Mtx *m, float xEye, float yEye, float zEye, - float xAt, float yAt, float zAt, - float xUp, float yUp, float zUp, float eyedist) -{ - Matrix mf; +void guLookAtStereo(Mtx* m, float xEye, float yEye, float zEye, float xAt, float yAt, float zAt, float xUp, float yUp, + float zUp, float eyedist) { + Matrix mf; - guLookAtStereoF(mf, xEye, yEye, zEye, xAt, yAt, zAt, - xUp, yUp, zUp, eyedist); + guLookAtStereoF(mf, xEye, yEye, zEye, xAt, yAt, zAt, xUp, yUp, zUp, eyedist); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } diff --git a/src/gu/mtxcatf.c b/src/gu/mtxcatf.c index 567e46f..77acfba 100644 --- a/src/gu/mtxcatf.c +++ b/src/gu/mtxcatf.c @@ -32,32 +32,29 @@ #include "guint.h" -void guMtxCatF(float mf[4][4], float nf[4][4], float res[4][4]) -{ - int i, j, k; - float temp[4][4]; +void guMtxCatF(float mf[4][4], float nf[4][4], float res[4][4]) { + int i, j, k; + float temp[4][4]; - for (i=0; i<4; i++) { - for (j=0; j<4; j++) { - temp[i][j] = 0.0; - for (k=0; k<4; k++) { - temp[i][j] += mf[i][k] * nf[k][j]; - } + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + temp[i][j] = 0.0; + for (k = 0; k < 4; k++) { + temp[i][j] += mf[i][k] * nf[k][j]; + } } } /* make sure we handle case where result is an input */ - for (i=0; i<4; i++) { - for (j=0; j<4; j++) { - res[i][j] = temp[i][j]; + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + res[i][j] = temp[i][j]; } } } -void guMtxXFMF(float mf[4][4], float x, float y, float z, float *ox, float *oy, float *oz) -{ - *ox = mf[0][0]*x + mf[1][0]*y + mf[2][0]*z + mf[3][0]; - *oy = mf[0][1]*x + mf[1][1]*y + mf[2][1]*z + mf[3][1]; - *oz = mf[0][2]*x + mf[1][2]*y + mf[2][2]*z + mf[3][2]; +void guMtxXFMF(float mf[4][4], float x, float y, float z, float* ox, float* oy, float* oz) { + *ox = mf[0][0] * x + mf[1][0] * y + mf[2][0] * z + mf[3][0]; + *oy = mf[0][1] * x + mf[1][1] * y + mf[2][1] * z + mf[3][1]; + *oz = mf[0][2] * x + mf[1][2] * y + mf[2][2] * z + mf[3][2]; } - diff --git a/src/gu/mtxcatl.c b/src/gu/mtxcatl.c index 3f165bb..4209339 100644 --- a/src/gu/mtxcatl.c +++ b/src/gu/mtxcatl.c @@ -33,25 +33,23 @@ #include "guint.h" #include "os_version.h" -void guMtxCatL(Mtx *m, Mtx *n, Mtx *res) -{ - float mf[4][4], nf[4][4], resf[4][4]; +void guMtxCatL(Mtx* m, Mtx* n, Mtx* res) { + float mf[4][4], nf[4][4], resf[4][4]; - guMtxL2F(mf, m); - guMtxL2F(nf, n); + guMtxL2F(mf, m); + guMtxL2F(nf, n); - guMtxCatF(mf, nf, resf); + guMtxCatF(mf, nf, resf); - guMtxF2L(resf, res); + guMtxF2L(resf, res); } #if BUILD_VERSION < VERSION_K -void guMtxXFML(Mtx *m, float x, float y, float z, float *ox, float *oy, float *oz) -{ - float mf[4][4]; +void guMtxXFML(Mtx* m, float x, float y, float z, float* ox, float* oy, float* oz) { + float mf[4][4]; - guMtxL2F(mf, m); + guMtxL2F(mf, m); - guMtxXFMF(mf, x, y, z, ox, oy, oz); + guMtxXFMF(mf, x, y, z, ox, oy, oz); } #endif diff --git a/src/gu/mtxutil.c b/src/gu/mtxutil.c index 2510558..68cd693 100644 --- a/src/gu/mtxutil.c +++ b/src/gu/mtxutil.c @@ -12,62 +12,59 @@ #include "guint.h" -void guMtxF2L(float mf[4][4], Mtx *m) -{ - int i, j; - int e1,e2; - int *ai,*af; +void guMtxF2L(float mf[4][4], Mtx* m) { + int i, j; + int e1, e2; + int *ai, *af; + ai = (int*)&m->m[0][0]; + af = (int*)&m->m[2][0]; - ai=(int *) &m->m[0][0]; - af=(int *) &m->m[2][0]; - - for (i=0; i<4; i++) - for (j=0; j<2; j++) { - e1=FTOFIX32(mf[i][j*2]); - e2=FTOFIX32(mf[i][j*2+1]); - *(ai++) = ( e1 & 0xffff0000 ) | ((e2 >> 16)&0xffff); - *(af++) = ((e1 << 16) & 0xffff0000) | (e2 & 0xffff); - } + for (i = 0; i < 4; i++) + for (j = 0; j < 2; j++) { + e1 = FTOFIX32(mf[i][j * 2]); + e2 = FTOFIX32(mf[i][j * 2 + 1]); + *(ai++) = (e1 & 0xffff0000) | ((e2 >> 16) & 0xffff); + *(af++) = ((e1 << 16) & 0xffff0000) | (e2 & 0xffff); + } } -void guMtxL2F(float mf[4][4], Mtx *m) -{ - int i, j; - unsigned int e1,e2; - unsigned int *ai,*af; - int q1,q2; +void guMtxL2F(float mf[4][4], Mtx* m) { + int i, j; + unsigned int e1, e2; + unsigned int *ai, *af; + int q1, q2; - ai=(unsigned int *) &m->m[0][0]; - af=(unsigned int *) &m->m[2][0]; + ai = (unsigned int*)&m->m[0][0]; + af = (unsigned int*)&m->m[2][0]; - for (i=0; i<4; i++) - for (j=0; j<2; j++) { - e1 = (*ai & 0xffff0000) | ((*af >> 16) & 0xffff); - e2 = ((*(ai++) << 16) & 0xffff0000) | (*(af++) & 0xffff); - q1 = *((int *)&e1); - q2 = *((int *)&e2); + for (i = 0; i < 4; i++) + for (j = 0; j < 2; j++) { + e1 = (*ai & 0xffff0000) | ((*af >> 16) & 0xffff); + e2 = ((*(ai++) << 16) & 0xffff0000) | (*(af++) & 0xffff); + q1 = *((int*)&e1); + q2 = *((int*)&e2); - mf[i][j*2] = FIX32TOF(q1); - mf[i][j*2+1] = FIX32TOF(q2); - } + mf[i][j * 2] = FIX32TOF(q1); + mf[i][j * 2 + 1] = FIX32TOF(q2); + } } -void guMtxIdentF(float mf[4][4]) -{ - int i, j; +void guMtxIdentF(float mf[4][4]) { + int i, j; - for (i=0; i<4; i++) - for (j=0; j<4; j++) - if (i == j) mf[i][j] = 1.0; - else mf[i][j] = 0.0; + for (i = 0; i < 4; i++) + for (j = 0; j < 4; j++) + if (i == j) + mf[i][j] = 1.0; + else + mf[i][j] = 0.0; } -void guMtxIdent(Mtx *m) -{ - float mf[4][4]; +void guMtxIdent(Mtx* m) { + float mf[4][4]; - guMtxIdentF(mf); + guMtxIdentF(mf); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } diff --git a/src/gu/normalize.c b/src/gu/normalize.c index 5cf71cd..82185a7 100644 --- a/src/gu/normalize.c +++ b/src/gu/normalize.c @@ -12,11 +12,10 @@ #include "guint.h" -void guNormalize(float *x, float *y, float *z) -{ - float m; +void guNormalize(float* x, float* y, float* z) { + float m; - m = 1/sqrtf((*x)*(*x) + (*y)*(*y) + (*z)*(*z)); + m = 1 / sqrtf((*x) * (*x) + (*y) * (*y) + (*z) * (*z)); *x *= m; *y *= m; *z *= m; diff --git a/src/gu/ortho.c b/src/gu/ortho.c index 9e52cb3..7e26073 100644 --- a/src/gu/ortho.c +++ b/src/gu/ortho.c @@ -12,30 +12,28 @@ #include "guint.h" -void guOrthoF(float mf[4][4], float l, float r, float b, float t, float n, float f, float scale) -{ - int i, j; +void guOrthoF(float mf[4][4], float l, float r, float b, float t, float n, float f, float scale) { + int i, j; - guMtxIdentF(mf); + guMtxIdentF(mf); - mf[0][0] = 2/(r-l); - mf[1][1] = 2/(t-b); - mf[2][2] = -2/(f-n); - mf[3][0] = -(r+l)/(r-l); - mf[3][1] = -(t+b)/(t-b); - mf[3][2] = -(f+n)/(f-n); - mf[3][3] = 1; + mf[0][0] = 2 / (r - l); + mf[1][1] = 2 / (t - b); + mf[2][2] = -2 / (f - n); + mf[3][0] = -(r + l) / (r - l); + mf[3][1] = -(t + b) / (t - b); + mf[3][2] = -(f + n) / (f - n); + mf[3][3] = 1; - for (i=0; i<4; i++) - for (j=0; j<4; j++) - mf[i][j] *= scale; + for (i = 0; i < 4; i++) + for (j = 0; j < 4; j++) + mf[i][j] *= scale; } -void guOrtho(Mtx *m, float l, float r, float b, float t, float n, float f, float scale) -{ - Matrix mf; +void guOrtho(Mtx* m, float l, float r, float b, float t, float n, float f, float scale) { + Matrix mf; - guOrthoF(mf, l, r, b, t, n, f, scale); + guOrthoF(mf, l, r, b, t, n, f, scale); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } diff --git a/src/gu/parse_gbi.c b/src/gu/parse_gbi.c index d736d4a..fde9022 100644 --- a/src/gu/parse_gbi.c +++ b/src/gu/parse_gbi.c @@ -21,62 +21,57 @@ * running on the host Indy. guParseGbiDL, sends a bunch of blocks of data, * with a minimum of one display list, but typically, the principle display * list with a bunch of branched or nested display lists, as well as all the - * vertex and matrix data that will be used. After all the blocks of data + * vertex and matrix data that will be used. After all the blocks of data * are sent, a GU_PARSE_READY command is sent, and dlprint parses out the * data printing it to stdout. * - * In order to know what data to send, guParseGbiDL must step through the + * In order to know what data to send, guParseGbiDL must step through the * display list, find all the gSPDisplayList and gSPBranchList calls, go * to those lists, and also find and send info for all the matrix and vertex * calls. */ -void guParseGbiDL(u64 *gbi_dl, u32 nbytes, u8 flags) -{ - guDLPrintCB cntlBlk; - Gfx* dlStk[11]; - s32 dlcount = 0; - Gfx *curGfx,*dlPtr,*vaddr; - s8 op; - u32 *word0; - u32 *word1; - u32 segments[16]; - u32 param, seg; - u32 paddr,len; - +void guParseGbiDL(u64* gbi_dl, u32 nbytes, u8 flags) { + guDLPrintCB cntlBlk; + Gfx* dlStk[11]; + s32 dlcount = 0; + Gfx *curGfx, *dlPtr, *vaddr; + s8 op; + u32* word0; + u32* word1; + u32 segments[16]; + u32 param, seg; + u32 paddr, len; cntlBlk.dataSize = nbytes; cntlBlk.flags = flags; cntlBlk.dlType = GU_PARSE_GBI_TYPE; cntlBlk.paddr = osVirtualToPhysical(gbi_dl); - osWriteHost(&cntlBlk,sizeof(cntlBlk)); - osWriteHost(gbi_dl,nbytes); - + osWriteHost(&cntlBlk, sizeof(cntlBlk)); + osWriteHost(gbi_dl, nbytes); + dlStk[0] = (Gfx*)gbi_dl; - while((dlcount >= 0) && (dlcount <= 10)) - { - curGfx = dlStk[dlcount]; /* get the current graphics display list */ - op = *((s8*)curGfx); /* get the first byte */ - dlStk[dlcount]++; /* increment to next gfx command */ - switch(op) - { - case G_MOVEWORD: - word0 = (u32*)curGfx; /* get ptr to first word */ - if(((*word0) & 0x000000ff) == G_MW_SEGMENT) - { - u32 seg; + while ((dlcount >= 0) && (dlcount <= 10)) { + curGfx = dlStk[dlcount]; /* get the current graphics display list */ + op = *((s8*)curGfx); /* get the first byte */ + dlStk[dlcount]++; /* increment to next gfx command */ + switch (op) { + case G_MOVEWORD: + word0 = (u32*)curGfx; /* get ptr to first word */ + if (((*word0) & 0x000000ff) == G_MW_SEGMENT) { + u32 seg; seg = (((*word0) & 0x00ffff00) >> 8) >> 2; word1 = word0 + 1; segments[seg] = *word1; } break; - case G_ENDDL: + case G_ENDDL: dlcount--; break; case G_DL: - word0 = (u32*)curGfx; /* get ptr to first word */ + word0 = (u32*)curGfx; /* get ptr to first word */ param = ((*word0) & 0x00ff0000) >> 16; /* get param */ - word1 = word0 + 1; /* get pointer to second word */ + word1 = word0 + 1; /* get pointer to second word */ #if BUILD_VERSION >= VERSION_J seg = ((*word1) & 0x0f000000) >> 24; /* get the segment */ #else @@ -86,22 +81,20 @@ void guParseGbiDL(u64 *gbi_dl, u32 nbytes, u8 flags) vaddr = (Gfx*)osPhysicalToVirtual(paddr); len = 1; dlPtr = vaddr; - while((*(s8*)dlPtr) != G_ENDDL) - { + while ((*(s8*)dlPtr) != G_ENDDL) { len++; dlPtr++; } len *= sizeof(Gfx); - + cntlBlk.dataSize = len; cntlBlk.dlType = GU_PARSE_GBI_TYPE; cntlBlk.paddr = paddr; - - osWriteHost(&cntlBlk,sizeof(cntlBlk)); - osWriteHost((u8*)vaddr,len); - if(param == G_DL_PUSH) - { - if(dlcount < 10) + + osWriteHost(&cntlBlk, sizeof(cntlBlk)); + osWriteHost((u8*)vaddr, len); + if (param == G_DL_PUSH) { + if (dlcount < 10) dlcount++; else osSyncPrintf("Display lists nested too deep!!!\n"); @@ -111,8 +104,8 @@ void guParseGbiDL(u64 *gbi_dl, u32 nbytes, u8 flags) case G_VTX: case G_MOVEMEM: case G_MTX: - word0 = (u32*)curGfx; /* get ptr to first word */ - word1 = word0 + 1; /* get pointer to second word */ + word0 = (u32*)curGfx; /* get ptr to first word */ + word1 = word0 + 1; /* get pointer to second word */ #if BUILD_VERSION >= VERSION_J seg = ((*word1) & 0x0f000000) >> 24; /* get the segment */ #else @@ -121,19 +114,17 @@ void guParseGbiDL(u64 *gbi_dl, u32 nbytes, u8 flags) paddr = segments[seg] + ((*word1) & 0x00ffffff); vaddr = (Gfx*)osPhysicalToVirtual(paddr); len = (*word0) & 0x0000ffff; - cntlBlk.dataSize = len; /* always send 32 bytes, the most used */ + cntlBlk.dataSize = len; /* always send 32 bytes, the most used */ cntlBlk.dlType = GU_PARSE_MEM_BLOCK; cntlBlk.paddr = paddr; - osWriteHost(&cntlBlk,sizeof(cntlBlk)); - osWriteHost((u8*)vaddr,len); + osWriteHost(&cntlBlk, sizeof(cntlBlk)); + osWriteHost((u8*)vaddr, len); break; - } } cntlBlk.dlType = GU_PARSE_READY; - osWriteHost(&cntlBlk,sizeof(cntlBlk)); + osWriteHost(&cntlBlk, sizeof(cntlBlk)); } #endif - diff --git a/src/gu/parse_rdp.c b/src/gu/parse_rdp.c index c17c978..aef29a9 100644 --- a/src/gu/parse_rdp.c +++ b/src/gu/parse_rdp.c @@ -13,24 +13,22 @@ #include #include -/* guParseRdpDL works in conjunction with dlprint which must be running on +/* guParseRdpDL works in conjunction with dlprint which must be running on * the host Indy. guParseRdpDL simple uses the hostio routines to send the * display list to the Indy, and dlprint does all the parsing. */ #ifndef _FINALROM -void guParseRdpDL(u64 *rdp_dl, u64 nbytes, u8 flags) -{ - guDLPrintCB cntlBlk; +void guParseRdpDL(u64* rdp_dl, u64 nbytes, u8 flags) { + guDLPrintCB cntlBlk; cntlBlk.dataSize = nbytes; cntlBlk.flags = flags; cntlBlk.dlType = GU_PARSE_RDP_TYPE; cntlBlk.paddr = osVirtualToPhysical(rdp_dl); - osWriteHost(&cntlBlk,sizeof(cntlBlk)); - osWriteHost(rdp_dl,nbytes); - + osWriteHost(&cntlBlk, sizeof(cntlBlk)); + osWriteHost(rdp_dl, nbytes); } #endif diff --git a/src/gu/parse_string.c b/src/gu/parse_string.c index 71a58a8..e64e45e 100644 --- a/src/gu/parse_string.c +++ b/src/gu/parse_string.c @@ -13,23 +13,21 @@ #include #include -/* guParseString works in conjunction with dlprint which must be running on +/* guParseString works in conjunction with dlprint which must be running on * the host Indy. guParseString simply uses the hostio routines to send the * string to the Indy, and dlprint does all the parsing. */ #ifndef _FINALROM -void guParseString(char *StringPointer, u64 nbytes) -{ - guDLPrintCB cntlBlk; +void guParseString(char* StringPointer, u64 nbytes) { + guDLPrintCB cntlBlk; cntlBlk.dataSize = nbytes /* /8 + ((nbytes%8) != 0) */; cntlBlk.dlType = GU_PARSE_STRING_TYPE; - cntlBlk.paddr = osVirtualToPhysical((u64 *) StringPointer); + cntlBlk.paddr = osVirtualToPhysical((u64*)StringPointer); - osWriteHost(&cntlBlk,sizeof(cntlBlk)); - osWriteHost((u64 *) StringPointer,nbytes); - + osWriteHost(&cntlBlk, sizeof(cntlBlk)); + osWriteHost((u64*)StringPointer, nbytes); } #endif diff --git a/src/gu/perspective.c b/src/gu/perspective.c index be571d4..1e7a274 100644 --- a/src/gu/perspective.c +++ b/src/gu/perspective.c @@ -14,45 +14,41 @@ #include "guint.h" #include -void guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy, float aspect, float near, float far, float scale) -{ - float cot; - int i, j; +void guPerspectiveF(float mf[4][4], u16* perspNorm, float fovy, float aspect, float near, float far, float scale) { + float cot; + int i, j; - guMtxIdentF(mf); + guMtxIdentF(mf); - fovy *= 3.1415926 / 180.0; - cot = cosf (fovy/2) / sinf (fovy/2); + fovy *= 3.1415926 / 180.0; + cot = cosf(fovy / 2) / sinf(fovy / 2); - mf[0][0] = cot / aspect; - mf[1][1] = cot; - mf[2][2] = (near + far) / (near - far); - mf[2][3] = -1; - mf[3][2] = (2 * near * far) / (near - far); - mf[3][3] = 0; + mf[0][0] = cot / aspect; + mf[1][1] = cot; + mf[2][2] = (near + far) / (near - far); + mf[2][3] = -1; + mf[3][2] = (2 * near * far) / (near - far); + mf[3][3] = 0; - for (i=0; i<4; i++) - for (j=0; j<4; j++) - mf[i][j] *= scale; + for (i = 0; i < 4; i++) + for (j = 0; j < 4; j++) + mf[i][j] *= scale; - if (perspNorm != (u16 *) NULL) { - if (near+far<=2.0) { - *perspNorm = (u16) 0xFFFF; - } else { - *perspNorm = (u16) ((2.0*65536.0)/(near+far)); - if (*perspNorm<=0) - *perspNorm = (u16) 0x0001; - } - } + if (perspNorm != (u16*)NULL) { + if (near + far <= 2.0) { + *perspNorm = (u16)0xFFFF; + } else { + *perspNorm = (u16)((2.0 * 65536.0) / (near + far)); + if (*perspNorm <= 0) + *perspNorm = (u16)0x0001; + } + } } -void guPerspective(Mtx *m, u16 *perspNorm, float fovy, float aspect, float near, float far, float scale) -{ - Matrix mf; +void guPerspective(Mtx* m, u16* perspNorm, float fovy, float aspect, float near, float far, float scale) { + Matrix mf; - guPerspectiveF(mf, perspNorm, fovy, aspect, near, far, scale); + guPerspectiveF(mf, perspNorm, fovy, aspect, near, far, scale); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } - - diff --git a/src/gu/position.c b/src/gu/position.c index 52cdd96..94bb2e8 100644 --- a/src/gu/position.c +++ b/src/gu/position.c @@ -15,56 +15,52 @@ /* * Return position matrix given roll, pitch, and yaw in degrees * plus scale and position. - * + * * r = roll (degrees) * p = pitch (degrees) * h = yaw (degrees) * s = scale * x,y,z = position (world coordinates) - * + * */ -void guPositionF(float mf[4][4], float r, float p, float h, float s, - float x, float y, float z) -{ - static float dtor = 3.1415926 / 180.0; - float sinr, sinp, sinh; - float cosr, cosp, cosh; +void guPositionF(float mf[4][4], float r, float p, float h, float s, float x, float y, float z) { + static float dtor = 3.1415926 / 180.0; + float sinr, sinp, sinh; + float cosr, cosp, cosh; - r *= dtor; - p *= dtor; - h *= dtor; - sinr = sinf(r); - cosr = cosf(r); - sinp = sinf(p); - cosp = cosf(p); - sinh = sinf(h); - cosh = cosf(h); + r *= dtor; + p *= dtor; + h *= dtor; + sinr = sinf(r); + cosr = cosf(r); + sinp = sinf(p); + cosp = cosf(p); + sinh = sinf(h); + cosh = cosf(h); - mf[0][0] = (cosp*cosh) * s; - mf[0][1] = (cosp*sinh) * s; - mf[0][2] = (-sinp) * s; - mf[0][3] = 0.0; + mf[0][0] = (cosp * cosh) * s; + mf[0][1] = (cosp * sinh) * s; + mf[0][2] = (-sinp) * s; + mf[0][3] = 0.0; - mf[1][0] = (sinr*sinp*cosh - cosr*sinh) * s; - mf[1][1] = (sinr*sinp*sinh + cosr*cosh) * s; - mf[1][2] = (sinr*cosp) * s; - mf[1][3] = 0.0; + mf[1][0] = (sinr * sinp * cosh - cosr * sinh) * s; + mf[1][1] = (sinr * sinp * sinh + cosr * cosh) * s; + mf[1][2] = (sinr * cosp) * s; + mf[1][3] = 0.0; - mf[2][0] = (cosr*sinp*cosh + sinr*sinh) * s; - mf[2][1] = (cosr*sinp*sinh - sinr*cosh) * s; - mf[2][2] = (cosr*cosp) * s; - mf[2][3] = 0.0; + mf[2][0] = (cosr * sinp * cosh + sinr * sinh) * s; + mf[2][1] = (cosr * sinp * sinh - sinr * cosh) * s; + mf[2][2] = (cosr * cosp) * s; + mf[2][3] = 0.0; - mf[3][0] = x; - mf[3][1] = y; - mf[3][2] = z; - mf[3][3] = 1.0; + mf[3][0] = x; + mf[3][1] = y; + mf[3][2] = z; + mf[3][3] = 1.0; } -void guPosition(Mtx *m, float r, float p, float h, float s, - float x, float y, float z) -{ +void guPosition(Mtx* m, float r, float p, float h, float s, float x, float y, float z) { float mf[4][4]; guPositionF(mf, r, p, h, s, x, y, z); diff --git a/src/gu/poslight.c b/src/gu/poslight.c index 389a04d..4d0948c 100644 --- a/src/gu/poslight.c +++ b/src/gu/poslight.c @@ -12,7 +12,6 @@ #include "guint.h" - /* * define a positional light. * this function must be called anytime the light or object moves. @@ -24,46 +23,42 @@ */ #define THRESH1 0.01 #define THRESH2 0.1 -void guPosLight(PositionalLight *pl, Light *l, - float xOb, float yOb, float zOb) -{ - float x,y,z,d,a; +void guPosLight(PositionalLight* pl, Light* l, float xOb, float yOb, float zOb) { + float x, y, z, d, a; + x = pl->pos[0] - xOb; + y = pl->pos[1] - yOb; + z = pl->pos[2] - zOb; + d = sqrtf(x * x + y * y + z * z); - x = pl->pos[0]-xOb; - y = pl->pos[1]-yOb; - z = pl->pos[2]-zOb; - d = sqrtf(x*x + y*y + z*z); + a = d * pl->a1 + pl->a2; + if (a < THRESH1) + a = 100.0; + else + a = 1 / a; - a = d*pl->a1 + pl->a2; - if (al.dir[0] = 0; + l->l.dir[1] = 0; + l->l.dir[2] = -120; - if (dl.dir[0] = 0; - l->l.dir[1] = 0; - l->l.dir[2] = -120; - - l->l.col[0] = 0; - l->l.col[1] = 0; - l->l.col[2] = 0; - l->l.colc[0] = 0; - l->l.colc[1] = 0; - l->l.colc[2] = 0; - } else { - d = 1/d; - l->l.dir[0] = 120.0*x*d; - l->l.dir[1] = 120.0*y*d; - l->l.dir[2] = 120.0*z*d; - - l->l.col[0] = pl->col[0]*a; - l->l.col[1] = pl->col[1]*a; - l->l.col[2] = pl->col[2]*a; - l->l.colc[0] = pl->col[0]*a; - l->l.colc[1] = pl->col[1]*a; - l->l.colc[2] = pl->col[2]*a; - } + l->l.col[0] = 0; + l->l.col[1] = 0; + l->l.col[2] = 0; + l->l.colc[0] = 0; + l->l.colc[1] = 0; + l->l.colc[2] = 0; + } else { + d = 1 / d; + l->l.dir[0] = 120.0 * x * d; + l->l.dir[1] = 120.0 * y * d; + l->l.dir[2] = 120.0 * z * d; + l->l.col[0] = pl->col[0] * a; + l->l.col[1] = pl->col[1] * a; + l->l.col[2] = pl->col[2] * a; + l->l.colc[0] = pl->col[0] * a; + l->l.colc[1] = pl->col[1] * a; + l->l.colc[2] = pl->col[2] * a; + } } diff --git a/src/gu/poslighthil.c b/src/gu/poslighthil.c index 259fe8c..e0119cc 100644 --- a/src/gu/poslighthil.c +++ b/src/gu/poslighthil.c @@ -12,7 +12,6 @@ #include "guint.h" - /* * define 2 positional lights with highlights. * this function must be called anytime the viewpoint, light or object moves. @@ -30,139 +29,126 @@ */ #define THRESH2 0.01 #define THRESH3 0.1 -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) /* hilite txtr size*/ +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) /* hilite txtr size*/ { - float x,y,z,d,a; - Mtx m; + float x, y, z, d, a; + Mtx m; + /* + * light 1, diffuse + */ + x = pl1->pos[0] - xOb; + y = pl1->pos[1] - yOb; + z = pl1->pos[2] - zOb; + d = sqrtf(x * x + y * y + z * z); -/* - * light 1, diffuse - */ - x = pl1->pos[0]-xOb; - y = pl1->pos[1]-yOb; - z = pl1->pos[2]-zOb; - d = sqrtf(x*x + y*y + z*z); + a = d * pl1->a1 + pl1->a2; + if (a < THRESH2) + a = 100.0; + else + a = 1 / a; - a=d*pl1->a1 + pl1->a2; - if (al.dir[0] = 0; + l1->l.dir[1] = 0; + l1->l.dir[2] = -120; - if (dl.dir[0] = 0; - l1->l.dir[1] = 0; - l1->l.dir[2] = -120; + l1->l.col[0] = 0; + l1->l.col[1] = 0; + l1->l.col[2] = 0; + l1->l.colc[0] = 0; + l1->l.colc[1] = 0; + l1->l.colc[2] = 0; + } else { + d = 1 / d; + l1->l.dir[0] = 120.0 * x * d; + l1->l.dir[1] = 120.0 * y * d; + l1->l.dir[2] = 120.0 * z * d; - l1->l.col[0] = 0; - l1->l.col[1] = 0; - l1->l.col[2] = 0; - l1->l.colc[0] = 0; - l1->l.colc[1] = 0; - l1->l.colc[2] = 0; - } else { - d = 1/d; - l1->l.dir[0] = 120.0*x*d; - l1->l.dir[1] = 120.0*y*d; - l1->l.dir[2] = 120.0*z*d; + l1->l.col[0] = pl1->col[0] * a; + l1->l.col[1] = pl1->col[1] * a; + l1->l.col[2] = pl1->col[2] * a; + l1->l.colc[0] = pl1->col[0] * a; + l1->l.colc[1] = pl1->col[1] * a; + l1->l.colc[2] = pl1->col[2] * a; + } - l1->l.col[0] = pl1->col[0]*a; - l1->l.col[1] = pl1->col[1]*a; - l1->l.col[2] = pl1->col[2]*a; - l1->l.colc[0] = pl1->col[0]*a; - l1->l.colc[1] = pl1->col[1]*a; - l1->l.colc[2] = pl1->col[2]*a; - } + /* + * light 2, diffuse + */ + x = pl2->pos[0] - xOb; + y = pl2->pos[1] - yOb; + z = pl2->pos[2] - zOb; + d = sqrtf(x * x + y * y + z * z); + a = d * pl2->a1 + pl2->a2; + if (a < THRESH2) + a = 100.0; + else + a = 1 / a; -/* - * light 2, diffuse - */ - x = pl2->pos[0]-xOb; - y = pl2->pos[1]-yOb; - z = pl2->pos[2]-zOb; - d = sqrtf(x*x + y*y + z*z); + if (d < THRESH2) { + l2->l.dir[0] = 0; + l2->l.dir[1] = 0; + l2->l.dir[2] = -120; - a = d*pl2->a1 + pl2->a2; - if (al.col[0] = 0; + l2->l.col[1] = 0; + l2->l.col[2] = 0; + l2->l.colc[0] = 0; + l2->l.colc[1] = 0; + l2->l.colc[2] = 0; + } else { + d = 1 / d; + l2->l.dir[0] = 120.0 * x * d; + l2->l.dir[1] = 120.0 * y * d; + l2->l.dir[2] = 120.0 * z * d; - if (dl.dir[0] = 0; - l2->l.dir[1] = 0; - l2->l.dir[2] = -120; + l2->l.col[0] = pl2->col[0] * a; + l2->l.col[1] = pl2->col[1] * a; + l2->l.col[2] = pl2->col[2] * a; + l2->l.colc[0] = pl2->col[0] * a; + l2->l.colc[1] = pl2->col[1] * a; + l2->l.colc[2] = pl2->col[2] * a; + } - l2->l.col[0] = 0; - l2->l.col[1] = 0; - l2->l.col[2] = 0; - l2->l.colc[0] = 0; - l2->l.colc[1] = 0; - l2->l.colc[2] = 0; - } else { - d = 1/d; - l2->l.dir[0] = 120.0*x*d; - l2->l.dir[1] = 120.0*y*d; - l2->l.dir[2] = 120.0*z*d; - - l2->l.col[0] = pl2->col[0]*a; - l2->l.col[1] = pl2->col[1]*a; - l2->l.col[2] = pl2->col[2]*a; - l2->l.colc[0] = pl2->col[0]*a; - l2->l.colc[1] = pl2->col[1]*a; - l2->l.colc[2] = pl2->col[2]*a; - } - - -/* - * Hilight factors - */ - x = xOb-xEye; - y = yOb-yEye; - z = zOb-zEye; - if (sqrtf(x*x + y*y + z*z)h.x1 = twidth*2; - h->h.y1 = twidth*2; - h->h.x2 = twidth*2; - h->h.y2 = twidth*2; - l->l[0].l.dir[0] = 0; - l->l[0].l.dir[1] = 0; - l->l[0].l.dir[2] = 0; - l->l[1].l.dir[0] = 0; - l->l[1].l.dir[1] = 0; - l->l[1].l.dir[2] = 0; - l->l[0].l.col[0] = 0x00; - l->l[0].l.col[1] = 0x00; - l->l[0].l.col[2] = 0x00; - l->l[0].l.pad1 = 0x00; - l->l[0].l.colc[0] = 0x00; - l->l[0].l.colc[1] = 0x00; - l->l[0].l.colc[2] = 0x00; - l->l[0].l.pad2 = 0x00; - l->l[1].l.col[0] = 0x00; - l->l[1].l.col[1] = 0x80; - l->l[1].l.col[2] = 0x00; - l->l[1].l.pad1 = 0x00; - l->l[1].l.colc[0] = 0x00; - l->l[1].l.colc[1] = 0x80; - l->l[1].l.colc[2] = 0x00; - l->l[1].l.pad2 = 0x00; - } else { - guLookAtHilite(&m, l, h, - xEye, yEye, zEye, - xOb, yOb, zOb, - xUp, yUp, zUp, - l1->l.dir[0], l1->l.dir[1], l1->l.dir[2], - l2->l.dir[0], l2->l.dir[1], l2->l.dir[2], - twidth, theight); - } + /* + * Hilight factors + */ + x = xOb - xEye; + y = yOb - yEye; + z = zOb - zEye; + if (sqrtf(x * x + y * y + z * z) < THRESH3) { + h->h.x1 = twidth * 2; + h->h.y1 = twidth * 2; + h->h.x2 = twidth * 2; + h->h.y2 = twidth * 2; + l->l[0].l.dir[0] = 0; + l->l[0].l.dir[1] = 0; + l->l[0].l.dir[2] = 0; + l->l[1].l.dir[0] = 0; + l->l[1].l.dir[1] = 0; + l->l[1].l.dir[2] = 0; + l->l[0].l.col[0] = 0x00; + l->l[0].l.col[1] = 0x00; + l->l[0].l.col[2] = 0x00; + l->l[0].l.pad1 = 0x00; + l->l[0].l.colc[0] = 0x00; + l->l[0].l.colc[1] = 0x00; + l->l[0].l.colc[2] = 0x00; + l->l[0].l.pad2 = 0x00; + l->l[1].l.col[0] = 0x00; + l->l[1].l.col[1] = 0x80; + l->l[1].l.col[2] = 0x00; + l->l[1].l.pad1 = 0x00; + l->l[1].l.colc[0] = 0x00; + l->l[1].l.colc[1] = 0x80; + l->l[1].l.colc[2] = 0x00; + l->l[1].l.pad2 = 0x00; + } else { + guLookAtHilite(&m, l, h, xEye, yEye, zEye, xOb, yOb, zOb, xUp, yUp, zUp, l1->l.dir[0], l1->l.dir[1], + l1->l.dir[2], l2->l.dir[0], l2->l.dir[1], l2->l.dir[2], twidth, theight); + } } - diff --git a/src/gu/random.c b/src/gu/random.c index 32cfde3..0dad51b 100644 --- a/src/gu/random.c +++ b/src/gu/random.c @@ -15,19 +15,18 @@ /* * Return a pseudorandom 32 bit number * try the RAND macro too - * + * */ -int guRandom(void) -{ +int guRandom(void) { static unsigned int xseed = 174823885; unsigned int x; - x = (xseed<<2) + 2; + x = (xseed << 2) + 2; - x *= (x+1); + x *= (x + 1); x = x >> 2; xseed = x; - return( x ); + return (x); } diff --git a/src/gu/rotate.c b/src/gu/rotate.c index c843d9f..acf81bf 100644 --- a/src/gu/rotate.c +++ b/src/gu/rotate.c @@ -13,60 +13,58 @@ #include "guint.h" #include "os_version.h" -void guRotateF(float mf[4][4], float a, float x, float y, float z) -{ - static float dtor = 3.1415926 / 180.0; - float sine; - float cosine; - float ab, bc, ca, t; +void guRotateF(float mf[4][4], float a, float x, float y, float z) { + static float dtor = 3.1415926 / 180.0; + float sine; + float cosine; + float ab, bc, ca, t; #if BUILD_VERSION >= VERSION_K - float xxsine; - float yxsine; - float zxsine; + float xxsine; + float yxsine; + float zxsine; #endif - guNormalize(&x, &y, &z); - a *= dtor; - sine = sinf(a); - cosine = cosf(a); - t = (1-cosine); - ab = x*y*t; - bc = y*z*t; - ca = z*x*t; + guNormalize(&x, &y, &z); + a *= dtor; + sine = sinf(a); + cosine = cosf(a); + t = (1 - cosine); + ab = x * y * t; + bc = y * z * t; + ca = z * x * t; - guMtxIdentF(mf); + guMtxIdentF(mf); #if BUILD_VERSION >= VERSION_K xxsine = x * sine; yxsine = y * sine; zxsine = z * sine; #else - #define xxsine (x * sine) - #define yxsine (y * sine) - #define zxsine (z * sine) +#define xxsine (x * sine) +#define yxsine (y * sine) +#define zxsine (z * sine) #endif - t = x*x; - mf[0][0] = t+cosine*(1-t); - mf[2][1] = bc-xxsine; - mf[1][2] = bc+xxsine; + t = x * x; + mf[0][0] = t + cosine * (1 - t); + mf[2][1] = bc - xxsine; + mf[1][2] = bc + xxsine; - t = y*y; - mf[1][1] = t+cosine*(1-t); - mf[2][0] = ca+yxsine; - mf[0][2] = ca-yxsine; + t = y * y; + mf[1][1] = t + cosine * (1 - t); + mf[2][0] = ca + yxsine; + mf[0][2] = ca - yxsine; - t = z*z; - mf[2][2] = t+cosine*(1-t); - mf[1][0] = ab-zxsine; - mf[0][1] = ab+zxsine; + t = z * z; + mf[2][2] = t + cosine * (1 - t); + mf[1][0] = ab - zxsine; + mf[0][1] = ab + zxsine; } -void guRotate(Mtx *m, float a, float x, float y, float z) -{ - Matrix mf; +void guRotate(Mtx* m, float a, float x, float y, float z) { + Matrix mf; - guRotateF(mf, a, x, y, z); + guRotateF(mf, a, x, y, z); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } diff --git a/src/gu/rotaterpy.c b/src/gu/rotaterpy.c index c239d21..032a071 100644 --- a/src/gu/rotaterpy.c +++ b/src/gu/rotaterpy.c @@ -14,45 +14,43 @@ /* * Return rotation matrix given roll, pitch, and yaw in degrees - * + * */ -void guRotateRPYF(float mf[4][4], float r, float p, float h) -{ - static float dtor = 3.1415926 / 180.0; - float sinr, sinp, sinh; - float cosr, cosp, cosh; +void guRotateRPYF(float mf[4][4], float r, float p, float h) { + static float dtor = 3.1415926 / 180.0; + float sinr, sinp, sinh; + float cosr, cosp, cosh; - r *= dtor; - p *= dtor; - h *= dtor; - sinr = sinf(r); - cosr = cosf(r); - sinp = sinf(p); - cosp = cosf(p); - sinh = sinf(h); - cosh = cosf(h); + r *= dtor; + p *= dtor; + h *= dtor; + sinr = sinf(r); + cosr = cosf(r); + sinp = sinf(p); + cosp = cosf(p); + sinh = sinf(h); + cosh = cosf(h); - guMtxIdentF(mf); + guMtxIdentF(mf); - mf[0][0] = cosp*cosh; - mf[0][1] = cosp*sinh; - mf[0][2] = -sinp; + mf[0][0] = cosp * cosh; + mf[0][1] = cosp * sinh; + mf[0][2] = -sinp; - mf[1][0] = sinr*sinp*cosh - cosr*sinh; - mf[1][1] = sinr*sinp*sinh + cosr*cosh; - mf[1][2] = sinr*cosp; + mf[1][0] = sinr * sinp * cosh - cosr * sinh; + mf[1][1] = sinr * sinp * sinh + cosr * cosh; + mf[1][2] = sinr * cosp; - mf[2][0] = cosr*sinp*cosh + sinr*sinh; - mf[2][1] = cosr*sinp*sinh - sinr*cosh; - mf[2][2] = cosr*cosp; + mf[2][0] = cosr * sinp * cosh + sinr * sinh; + mf[2][1] = cosr * sinp * sinh - sinr * cosh; + mf[2][2] = cosr * cosp; } -void guRotateRPY(Mtx *m, float r, float p, float h) -{ - Matrix mf; +void guRotateRPY(Mtx* m, float r, float p, float h) { + Matrix mf; - guRotateRPYF(mf, r, p, h); + guRotateRPYF(mf, r, p, h); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } diff --git a/src/gu/scale.c b/src/gu/scale.c index 70bdbcf..594d043 100644 --- a/src/gu/scale.c +++ b/src/gu/scale.c @@ -12,8 +12,7 @@ #include "guint.h" -void guScaleF(float mf[4][4], float x, float y, float z) -{ +void guScaleF(float mf[4][4], float x, float y, float z) { guMtxIdentF(mf); mf[0][0] = x; @@ -22,9 +21,8 @@ void guScaleF(float mf[4][4], float x, float y, float z) mf[3][3] = 1; } -void guScale(Mtx *m, float x, float y, float z) -{ - Matrix mf; +void guScale(Mtx* m, float x, float y, float z) { + Matrix mf; guScaleF(mf, x, y, z); diff --git a/src/gu/sinf.c b/src/gu/sinf.c index f4bb1ad..e127821 100644 --- a/src/gu/sinf.c +++ b/src/gu/sinf.c @@ -32,31 +32,23 @@ #pragma weak fsin = __sinf #pragma weak sinf = __sinf -#define fsin __sinf +#define fsin __sinf /* coefficients for polynomial approximation of sin on +/- pi/2 */ -static const du P[] = -{ -{0x3ff00000, 0x00000000}, -{0xbfc55554, 0xbc83656d}, -{0x3f8110ed, 0x3804c2a0}, -{0xbf29f6ff, 0xeea56814}, -{0x3ec5dbdf, 0x0e314bfe}, +static const du P[] = { + { 0x3ff00000, 0x00000000 }, { 0xbfc55554, 0xbc83656d }, { 0x3f8110ed, 0x3804c2a0 }, + { 0xbf29f6ff, 0xeea56814 }, { 0x3ec5dbdf, 0x0e314bfe }, }; -static const du rpi = -{0x3fd45f30, 0x6dc9c883}; +static const du rpi = { 0x3fd45f30, 0x6dc9c883 }; -static const du pihi = -{0x400921fb, 0x50000000}; +static const du pihi = { 0x400921fb, 0x50000000 }; -static const du pilo = -{0x3e6110b4, 0x611a6263}; +static const du pilo = { 0x3e6110b4, 0x611a6263 }; -static const fu zero = {0x00000000}; +static const fu zero = { 0x00000000 }; - /* ==================================================================== * * FunctionName fsin @@ -66,92 +58,83 @@ static const fu zero = {0x00000000}; * ==================================================================== */ -float -fsin( float x ) -{ -double dx, xsq, poly; -double dn; -int n; -double result; -int ix, xpt; +float fsin(float x) { + double dx, xsq, poly; + double dn; + int n; + double result; + int ix, xpt; + ix = *(int*)&x; + xpt = (ix >> 22); + xpt &= 0x1ff; - ix = *(int *)&x; - xpt = (ix >> 22); - xpt &= 0x1ff; + /* xpt is exponent(x) + 1 bit of mantissa */ - /* xpt is exponent(x) + 1 bit of mantissa */ + if (xpt < 0xff) { + /* |x| < 1.5 */ - if ( xpt < 0xff ) - { - /* |x| < 1.5 */ + dx = x; - dx = x; + if (xpt >= 0xe6) { + /* |x| >= 2^(-12) */ - if ( xpt >= 0xe6 ) - { - /* |x| >= 2^(-12) */ + /* compute sin(x) with a standard polynomial approximation */ - /* compute sin(x) with a standard polynomial approximation */ + xsq = dx * dx; - xsq = dx*dx; + poly = ((P[4].d * xsq + P[3].d) * xsq + P[2].d) * xsq + P[1].d; - poly = ((P[4].d*xsq + P[3].d)*xsq + P[2].d)*xsq + P[1].d; + result = dx + (dx * xsq) * poly; - result = dx + (dx*xsq)*poly; + return ((float)result); + } - return ( (float)result ); - } + return (x); + } - return ( x ); - } + if (xpt < 0x136) { + /* |x| < 2^28 */ - if ( xpt < 0x136 ) - { - /* |x| < 2^28 */ + dx = x; - dx = x; + /* reduce argument to +/- pi/2 */ - /* reduce argument to +/- pi/2 */ + dn = dx * rpi.d; - dn = dx*rpi.d; + n = ROUND(dn); + dn = n; - n = ROUND(dn); - dn = n; + dx = dx - dn * pihi.d; + dx = dx - dn * pilo.d; /* dx = x - n*pi */ - dx = dx - dn*pihi.d; - dx = dx - dn*pilo.d; /* dx = x - n*pi */ + /* compute sin(dx) as before, negating result if n is odd + */ - /* compute sin(dx) as before, negating result if n is odd - */ + xsq = dx * dx; - xsq = dx*dx; + poly = ((P[4].d * xsq + P[3].d) * xsq + P[2].d) * xsq + P[1].d; - poly = ((P[4].d*xsq + P[3].d)*xsq + P[2].d)*xsq + P[1].d; + result = dx + (dx * xsq) * poly; - result = dx + (dx*xsq)*poly; + if ((n & 1) == 0) + return ((float)result); + return (-(float)result); + } - if ( (n & 1) == 0 ) - return ( (float)result ); - - return ( -(float)result ); - } - - if ( x != x ) - { - /* x is a NaN; return a quiet NaN */ + if (x != x) { + /* x is a NaN; return a quiet NaN */ #ifdef _IP_NAN_SETS_ERRNO - *__errnoaddr = EDOM; + *__errnoaddr = EDOM; #endif - - return ( __libm_qnan_f ); - } - /* just give up and return 0.0 */ + return (__libm_qnan_f); + } - return ( zero.f ); + /* just give up and return 0.0 */ + + return (zero.f); } - diff --git a/src/gu/sins.c b/src/gu/sins.c index b24851f..28313bc 100644 --- a/src/gu/sins.c +++ b/src/gu/sins.c @@ -38,24 +38,22 @@ #include "sintable.h" -signed short -sins( unsigned short x ) -{ - /* 0 <= x < 0x10000 ==> 0 <= x < 2PI */ +signed short sins(unsigned short x) { + /* 0 <= x < 0x10000 ==> 0 <= x < 2PI */ - signed short val; + signed short val; - x >>= 4; /* Now range 0 <= x < 0x1000 */ + x >>= 4; /* Now range 0 <= x < 0x1000 */ - if (x & 0x400) { - val = sintable[0x3ff - (x & 0x3ff)]; - } else { - val = sintable[x & 0x3ff]; - } + if (x & 0x400) { + val = sintable[0x3ff - (x & 0x3ff)]; + } else { + val = sintable[x & 0x3ff]; + } - if (x & 0x800) { - return -val; - } else { - return val; - } + if (x & 0x800) { + return -val; + } else { + return val; + } } diff --git a/src/gu/sintable.h b/src/gu/sintable.h index b5e1a45..00a7423 100644 --- a/src/gu/sintable.h +++ b/src/gu/sintable.h @@ -4,1028 +4,78 @@ */ static signed short sintable[0x400] = { - 0x0000, - 0x0032, - 0x0064, - 0x0096, - 0x00c9, - 0x00fb, - 0x012d, - 0x0160, - 0x0192, - 0x01c4, - 0x01f7, - 0x0229, - 0x025b, - 0x028e, - 0x02c0, - 0x02f2, - 0x0324, - 0x0357, - 0x0389, - 0x03bb, - 0x03ee, - 0x0420, - 0x0452, - 0x0484, - 0x04b7, - 0x04e9, - 0x051b, - 0x054e, - 0x0580, - 0x05b2, - 0x05e4, - 0x0617, - 0x0649, - 0x067b, - 0x06ad, - 0x06e0, - 0x0712, - 0x0744, - 0x0776, - 0x07a9, - 0x07db, - 0x080d, - 0x083f, - 0x0871, - 0x08a4, - 0x08d6, - 0x0908, - 0x093a, - 0x096c, - 0x099f, - 0x09d1, - 0x0a03, - 0x0a35, - 0x0a67, - 0x0a99, - 0x0acb, - 0x0afe, - 0x0b30, - 0x0b62, - 0x0b94, - 0x0bc6, - 0x0bf8, - 0x0c2a, - 0x0c5c, - 0x0c8e, - 0x0cc0, - 0x0cf2, - 0x0d25, - 0x0d57, - 0x0d89, - 0x0dbb, - 0x0ded, - 0x0e1f, - 0x0e51, - 0x0e83, - 0x0eb5, - 0x0ee7, - 0x0f19, - 0x0f4b, - 0x0f7c, - 0x0fae, - 0x0fe0, - 0x1012, - 0x1044, - 0x1076, - 0x10a8, - 0x10da, - 0x110c, - 0x113e, - 0x116f, - 0x11a1, - 0x11d3, - 0x1205, - 0x1237, - 0x1269, - 0x129a, - 0x12cc, - 0x12fe, - 0x1330, - 0x1361, - 0x1393, - 0x13c5, - 0x13f6, - 0x1428, - 0x145a, - 0x148c, - 0x14bd, - 0x14ef, - 0x1520, - 0x1552, - 0x1584, - 0x15b5, - 0x15e7, - 0x1618, - 0x164a, - 0x167b, - 0x16ad, - 0x16df, - 0x1710, - 0x1741, - 0x1773, - 0x17a4, - 0x17d6, - 0x1807, - 0x1839, - 0x186a, - 0x189b, - 0x18cd, - 0x18fe, - 0x1930, - 0x1961, - 0x1992, - 0x19c3, - 0x19f5, - 0x1a26, - 0x1a57, - 0x1a88, - 0x1aba, - 0x1aeb, - 0x1b1c, - 0x1b4d, - 0x1b7e, - 0x1baf, - 0x1be1, - 0x1c12, - 0x1c43, - 0x1c74, - 0x1ca5, - 0x1cd6, - 0x1d07, - 0x1d38, - 0x1d69, - 0x1d9a, - 0x1dcb, - 0x1dfc, - 0x1e2d, - 0x1e5d, - 0x1e8e, - 0x1ebf, - 0x1ef0, - 0x1f21, - 0x1f52, - 0x1f82, - 0x1fb3, - 0x1fe4, - 0x2015, - 0x2045, - 0x2076, - 0x20a7, - 0x20d7, - 0x2108, - 0x2139, - 0x2169, - 0x219a, - 0x21ca, - 0x21fb, - 0x222b, - 0x225c, - 0x228c, - 0x22bd, - 0x22ed, - 0x231d, - 0x234e, - 0x237e, - 0x23ae, - 0x23df, - 0x240f, - 0x243f, - 0x2470, - 0x24a0, - 0x24d0, - 0x2500, - 0x2530, - 0x2560, - 0x2591, - 0x25c1, - 0x25f1, - 0x2621, - 0x2651, - 0x2681, - 0x26b1, - 0x26e1, - 0x2711, - 0x2740, - 0x2770, - 0x27a0, - 0x27d0, - 0x2800, - 0x2830, - 0x285f, - 0x288f, - 0x28bf, - 0x28ee, - 0x291e, - 0x294e, - 0x297d, - 0x29ad, - 0x29dd, - 0x2a0c, - 0x2a3c, - 0x2a6b, - 0x2a9b, - 0x2aca, - 0x2af9, - 0x2b29, - 0x2b58, - 0x2b87, - 0x2bb7, - 0x2be6, - 0x2c15, - 0x2c44, - 0x2c74, - 0x2ca3, - 0x2cd2, - 0x2d01, - 0x2d30, - 0x2d5f, - 0x2d8e, - 0x2dbd, - 0x2dec, - 0x2e1b, - 0x2e4a, - 0x2e79, - 0x2ea8, - 0x2ed7, - 0x2f06, - 0x2f34, - 0x2f63, - 0x2f92, - 0x2fc0, - 0x2fef, - 0x301e, - 0x304c, - 0x307b, - 0x30a9, - 0x30d8, - 0x3107, - 0x3135, - 0x3163, - 0x3192, - 0x31c0, - 0x31ef, - 0x321d, - 0x324b, - 0x3279, - 0x32a8, - 0x32d6, - 0x3304, - 0x3332, - 0x3360, - 0x338e, - 0x33bc, - 0x33ea, - 0x3418, - 0x3446, - 0x3474, - 0x34a2, - 0x34d0, - 0x34fe, - 0x352b, - 0x3559, - 0x3587, - 0x35b5, - 0x35e2, - 0x3610, - 0x363d, - 0x366b, - 0x3698, - 0x36c6, - 0x36f3, - 0x3721, - 0x374e, - 0x377c, - 0x37a9, - 0x37d6, - 0x3803, - 0x3831, - 0x385e, - 0x388b, - 0x38b8, - 0x38e5, - 0x3912, - 0x393f, - 0x396c, - 0x3999, - 0x39c6, - 0x39f3, - 0x3a20, - 0x3a4d, - 0x3a79, - 0x3aa6, - 0x3ad3, - 0x3b00, - 0x3b2c, - 0x3b59, - 0x3b85, - 0x3bb2, - 0x3bde, - 0x3c0b, - 0x3c37, - 0x3c64, - 0x3c90, - 0x3cbc, - 0x3ce9, - 0x3d15, - 0x3d41, - 0x3d6d, - 0x3d99, - 0x3dc5, - 0x3df1, - 0x3e1d, - 0x3e49, - 0x3e75, - 0x3ea1, - 0x3ecd, - 0x3ef9, - 0x3f25, - 0x3f50, - 0x3f7c, - 0x3fa8, - 0x3fd3, - 0x3fff, - 0x402b, - 0x4056, - 0x4082, - 0x40ad, - 0x40d8, - 0x4104, - 0x412f, - 0x415a, - 0x4186, - 0x41b1, - 0x41dc, - 0x4207, - 0x4232, - 0x425d, - 0x4288, - 0x42b3, - 0x42de, - 0x4309, - 0x4334, - 0x435f, - 0x4389, - 0x43b4, - 0x43df, - 0x4409, - 0x4434, - 0x445f, - 0x4489, - 0x44b4, - 0x44de, - 0x4508, - 0x4533, - 0x455d, - 0x4587, - 0x45b1, - 0x45dc, - 0x4606, - 0x4630, - 0x465a, - 0x4684, - 0x46ae, - 0x46d8, - 0x4702, - 0x472c, - 0x4755, - 0x477f, - 0x47a9, - 0x47d2, - 0x47fc, - 0x4826, - 0x484f, - 0x4879, - 0x48a2, - 0x48cc, - 0x48f5, - 0x491e, - 0x4948, - 0x4971, - 0x499a, - 0x49c3, - 0x49ec, - 0x4a15, - 0x4a3e, - 0x4a67, - 0x4a90, - 0x4ab9, - 0x4ae2, - 0x4b0b, - 0x4b33, - 0x4b5c, - 0x4b85, - 0x4bad, - 0x4bd6, - 0x4bfe, - 0x4c27, - 0x4c4f, - 0x4c78, - 0x4ca0, - 0x4cc8, - 0x4cf0, - 0x4d19, - 0x4d41, - 0x4d69, - 0x4d91, - 0x4db9, - 0x4de1, - 0x4e09, - 0x4e31, - 0x4e58, - 0x4e80, - 0x4ea8, - 0x4ed0, - 0x4ef7, - 0x4f1f, - 0x4f46, - 0x4f6e, - 0x4f95, - 0x4fbd, - 0x4fe4, - 0x500b, - 0x5032, - 0x505a, - 0x5081, - 0x50a8, - 0x50cf, - 0x50f6, - 0x511d, - 0x5144, - 0x516b, - 0x5191, - 0x51b8, - 0x51df, - 0x5205, - 0x522c, - 0x5253, - 0x5279, - 0x52a0, - 0x52c6, - 0x52ec, - 0x5313, - 0x5339, - 0x535f, - 0x5385, - 0x53ab, - 0x53d1, - 0x53f7, - 0x541d, - 0x5443, - 0x5469, - 0x548f, - 0x54b5, - 0x54da, - 0x5500, - 0x5525, - 0x554b, - 0x5571, - 0x5596, - 0x55bb, - 0x55e1, - 0x5606, - 0x562b, - 0x5650, - 0x5675, - 0x569b, - 0x56c0, - 0x56e5, - 0x5709, - 0x572e, - 0x5753, - 0x5778, - 0x579d, - 0x57c1, - 0x57e6, - 0x580a, - 0x582f, - 0x5853, - 0x5878, - 0x589c, - 0x58c0, - 0x58e5, - 0x5909, - 0x592d, - 0x5951, - 0x5975, - 0x5999, - 0x59bd, - 0x59e1, - 0x5a04, - 0x5a28, - 0x5a4c, - 0x5a6f, - 0x5a93, - 0x5ab7, - 0x5ada, - 0x5afd, - 0x5b21, - 0x5b44, - 0x5b67, - 0x5b8b, - 0x5bae, - 0x5bd1, - 0x5bf4, - 0x5c17, - 0x5c3a, - 0x5c5d, - 0x5c7f, - 0x5ca2, - 0x5cc5, - 0x5ce7, - 0x5d0a, - 0x5d2d, - 0x5d4f, - 0x5d71, - 0x5d94, - 0x5db6, - 0x5dd8, - 0x5dfa, - 0x5e1d, - 0x5e3f, - 0x5e61, - 0x5e83, - 0x5ea5, - 0x5ec6, - 0x5ee8, - 0x5f0a, - 0x5f2c, - 0x5f4d, - 0x5f6f, - 0x5f90, - 0x5fb2, - 0x5fd3, - 0x5ff4, - 0x6016, - 0x6037, - 0x6058, - 0x6079, - 0x609a, - 0x60bb, - 0x60dc, - 0x60fd, - 0x611e, - 0x613e, - 0x615f, - 0x6180, - 0x61a0, - 0x61c1, - 0x61e1, - 0x6202, - 0x6222, - 0x6242, - 0x6263, - 0x6283, - 0x62a3, - 0x62c3, - 0x62e3, - 0x6303, - 0x6323, - 0x6342, - 0x6362, - 0x6382, - 0x63a1, - 0x63c1, - 0x63e0, - 0x6400, - 0x641f, - 0x643f, - 0x645e, - 0x647d, - 0x649c, - 0x64bb, - 0x64da, - 0x64f9, - 0x6518, - 0x6537, - 0x6556, - 0x6574, - 0x6593, - 0x65b2, - 0x65d0, - 0x65ef, - 0x660d, - 0x662b, - 0x664a, - 0x6668, - 0x6686, - 0x66a4, - 0x66c2, - 0x66e0, - 0x66fe, - 0x671c, - 0x673a, - 0x6757, - 0x6775, - 0x6792, - 0x67b0, - 0x67cd, - 0x67eb, - 0x6808, - 0x6825, - 0x6843, - 0x6860, - 0x687d, - 0x689a, - 0x68b7, - 0x68d4, - 0x68f1, - 0x690d, - 0x692a, - 0x6947, - 0x6963, - 0x6980, - 0x699c, - 0x69b9, - 0x69d5, - 0x69f1, - 0x6a0e, - 0x6a2a, - 0x6a46, - 0x6a62, - 0x6a7e, - 0x6a9a, - 0x6ab5, - 0x6ad1, - 0x6aed, - 0x6b08, - 0x6b24, - 0x6b40, - 0x6b5b, - 0x6b76, - 0x6b92, - 0x6bad, - 0x6bc8, - 0x6be3, - 0x6bfe, - 0x6c19, - 0x6c34, - 0x6c4f, - 0x6c6a, - 0x6c84, - 0x6c9f, - 0x6cba, - 0x6cd4, - 0x6cef, - 0x6d09, - 0x6d23, - 0x6d3e, - 0x6d58, - 0x6d72, - 0x6d8c, - 0x6da6, - 0x6dc0, - 0x6dda, - 0x6df3, - 0x6e0d, - 0x6e27, - 0x6e40, - 0x6e5a, - 0x6e73, - 0x6e8d, - 0x6ea6, - 0x6ebf, - 0x6ed9, - 0x6ef2, - 0x6f0b, - 0x6f24, - 0x6f3d, - 0x6f55, - 0x6f6e, - 0x6f87, - 0x6fa0, - 0x6fb8, - 0x6fd1, - 0x6fe9, - 0x7002, - 0x701a, - 0x7032, - 0x704a, - 0x7062, - 0x707a, - 0x7092, - 0x70aa, - 0x70c2, - 0x70da, - 0x70f2, - 0x7109, - 0x7121, - 0x7138, - 0x7150, - 0x7167, - 0x717e, - 0x7196, - 0x71ad, - 0x71c4, - 0x71db, - 0x71f2, - 0x7209, - 0x7220, - 0x7236, - 0x724d, - 0x7264, - 0x727a, - 0x7291, - 0x72a7, - 0x72bd, - 0x72d4, - 0x72ea, - 0x7300, - 0x7316, - 0x732c, - 0x7342, - 0x7358, - 0x736e, - 0x7383, - 0x7399, - 0x73ae, - 0x73c4, - 0x73d9, - 0x73ef, - 0x7404, - 0x7419, - 0x742e, - 0x7443, - 0x7458, - 0x746d, - 0x7482, - 0x7497, - 0x74ac, - 0x74c0, - 0x74d5, - 0x74ea, - 0x74fe, - 0x7512, - 0x7527, - 0x753b, - 0x754f, - 0x7563, - 0x7577, - 0x758b, - 0x759f, - 0x75b3, - 0x75c7, - 0x75da, - 0x75ee, - 0x7601, - 0x7615, - 0x7628, - 0x763b, - 0x764f, - 0x7662, - 0x7675, - 0x7688, - 0x769b, - 0x76ae, - 0x76c1, - 0x76d3, - 0x76e6, - 0x76f9, - 0x770b, - 0x771e, - 0x7730, - 0x7742, - 0x7754, - 0x7767, - 0x7779, - 0x778b, - 0x779d, - 0x77af, - 0x77c0, - 0x77d2, - 0x77e4, - 0x77f5, - 0x7807, - 0x7818, - 0x782a, - 0x783b, - 0x784c, - 0x785d, - 0x786e, - 0x787f, - 0x7890, - 0x78a1, - 0x78b2, - 0x78c3, - 0x78d3, - 0x78e4, - 0x78f4, - 0x7905, - 0x7915, - 0x7925, - 0x7936, - 0x7946, - 0x7956, - 0x7966, - 0x7976, - 0x7985, - 0x7995, - 0x79a5, - 0x79b5, - 0x79c4, - 0x79d4, - 0x79e3, - 0x79f2, - 0x7a02, - 0x7a11, - 0x7a20, - 0x7a2f, - 0x7a3e, - 0x7a4d, - 0x7a5b, - 0x7a6a, - 0x7a79, - 0x7a87, - 0x7a96, - 0x7aa4, - 0x7ab3, - 0x7ac1, - 0x7acf, - 0x7add, - 0x7aeb, - 0x7af9, - 0x7b07, - 0x7b15, - 0x7b23, - 0x7b31, - 0x7b3e, - 0x7b4c, - 0x7b59, - 0x7b67, - 0x7b74, - 0x7b81, - 0x7b8e, - 0x7b9b, - 0x7ba8, - 0x7bb5, - 0x7bc2, - 0x7bcf, - 0x7bdc, - 0x7be8, - 0x7bf5, - 0x7c02, - 0x7c0e, - 0x7c1a, - 0x7c27, - 0x7c33, - 0x7c3f, - 0x7c4b, - 0x7c57, - 0x7c63, - 0x7c6f, - 0x7c7a, - 0x7c86, - 0x7c92, - 0x7c9d, - 0x7ca9, - 0x7cb4, - 0x7cbf, - 0x7ccb, - 0x7cd6, - 0x7ce1, - 0x7cec, - 0x7cf7, - 0x7d02, - 0x7d0c, - 0x7d17, - 0x7d22, - 0x7d2c, - 0x7d37, - 0x7d41, - 0x7d4b, - 0x7d56, - 0x7d60, - 0x7d6a, - 0x7d74, - 0x7d7e, - 0x7d88, - 0x7d91, - 0x7d9b, - 0x7da5, - 0x7dae, - 0x7db8, - 0x7dc1, - 0x7dcb, - 0x7dd4, - 0x7ddd, - 0x7de6, - 0x7def, - 0x7df8, - 0x7e01, - 0x7e0a, - 0x7e13, - 0x7e1b, - 0x7e24, - 0x7e2c, - 0x7e35, - 0x7e3d, - 0x7e45, - 0x7e4d, - 0x7e56, - 0x7e5e, - 0x7e66, - 0x7e6d, - 0x7e75, - 0x7e7d, - 0x7e85, - 0x7e8c, - 0x7e94, - 0x7e9b, - 0x7ea3, - 0x7eaa, - 0x7eb1, - 0x7eb8, - 0x7ebf, - 0x7ec6, - 0x7ecd, - 0x7ed4, - 0x7edb, - 0x7ee1, - 0x7ee8, - 0x7eee, - 0x7ef5, - 0x7efb, - 0x7f01, - 0x7f08, - 0x7f0e, - 0x7f14, - 0x7f1a, - 0x7f20, - 0x7f25, - 0x7f2b, - 0x7f31, - 0x7f36, - 0x7f3c, - 0x7f41, - 0x7f47, - 0x7f4c, - 0x7f51, - 0x7f56, - 0x7f5b, - 0x7f60, - 0x7f65, - 0x7f6a, - 0x7f6f, - 0x7f74, - 0x7f78, - 0x7f7d, - 0x7f81, - 0x7f85, - 0x7f8a, - 0x7f8e, - 0x7f92, - 0x7f96, - 0x7f9a, - 0x7f9e, - 0x7fa2, - 0x7fa6, - 0x7fa9, - 0x7fad, - 0x7fb0, - 0x7fb4, - 0x7fb7, - 0x7fba, - 0x7fbe, - 0x7fc1, - 0x7fc4, - 0x7fc7, - 0x7fca, - 0x7fcc, - 0x7fcf, - 0x7fd2, - 0x7fd4, - 0x7fd7, - 0x7fd9, - 0x7fdc, - 0x7fde, - 0x7fe0, - 0x7fe2, - 0x7fe4, - 0x7fe6, - 0x7fe8, - 0x7fea, - 0x7fec, - 0x7fed, - 0x7fef, - 0x7ff1, - 0x7ff2, - 0x7ff3, - 0x7ff5, - 0x7ff6, - 0x7ff7, - 0x7ff8, - 0x7ff9, - 0x7ffa, - 0x7ffb, - 0x7ffb, - 0x7ffc, - 0x7ffd, - 0x7ffd, - 0x7ffe, - 0x7ffe, - 0x7ffe, - 0x7ffe, - 0x7ffe, - 0x7fff, + 0x0000, 0x0032, 0x0064, 0x0096, 0x00c9, 0x00fb, 0x012d, 0x0160, 0x0192, 0x01c4, 0x01f7, 0x0229, 0x025b, 0x028e, + 0x02c0, 0x02f2, 0x0324, 0x0357, 0x0389, 0x03bb, 0x03ee, 0x0420, 0x0452, 0x0484, 0x04b7, 0x04e9, 0x051b, 0x054e, + 0x0580, 0x05b2, 0x05e4, 0x0617, 0x0649, 0x067b, 0x06ad, 0x06e0, 0x0712, 0x0744, 0x0776, 0x07a9, 0x07db, 0x080d, + 0x083f, 0x0871, 0x08a4, 0x08d6, 0x0908, 0x093a, 0x096c, 0x099f, 0x09d1, 0x0a03, 0x0a35, 0x0a67, 0x0a99, 0x0acb, + 0x0afe, 0x0b30, 0x0b62, 0x0b94, 0x0bc6, 0x0bf8, 0x0c2a, 0x0c5c, 0x0c8e, 0x0cc0, 0x0cf2, 0x0d25, 0x0d57, 0x0d89, + 0x0dbb, 0x0ded, 0x0e1f, 0x0e51, 0x0e83, 0x0eb5, 0x0ee7, 0x0f19, 0x0f4b, 0x0f7c, 0x0fae, 0x0fe0, 0x1012, 0x1044, + 0x1076, 0x10a8, 0x10da, 0x110c, 0x113e, 0x116f, 0x11a1, 0x11d3, 0x1205, 0x1237, 0x1269, 0x129a, 0x12cc, 0x12fe, + 0x1330, 0x1361, 0x1393, 0x13c5, 0x13f6, 0x1428, 0x145a, 0x148c, 0x14bd, 0x14ef, 0x1520, 0x1552, 0x1584, 0x15b5, + 0x15e7, 0x1618, 0x164a, 0x167b, 0x16ad, 0x16df, 0x1710, 0x1741, 0x1773, 0x17a4, 0x17d6, 0x1807, 0x1839, 0x186a, + 0x189b, 0x18cd, 0x18fe, 0x1930, 0x1961, 0x1992, 0x19c3, 0x19f5, 0x1a26, 0x1a57, 0x1a88, 0x1aba, 0x1aeb, 0x1b1c, + 0x1b4d, 0x1b7e, 0x1baf, 0x1be1, 0x1c12, 0x1c43, 0x1c74, 0x1ca5, 0x1cd6, 0x1d07, 0x1d38, 0x1d69, 0x1d9a, 0x1dcb, + 0x1dfc, 0x1e2d, 0x1e5d, 0x1e8e, 0x1ebf, 0x1ef0, 0x1f21, 0x1f52, 0x1f82, 0x1fb3, 0x1fe4, 0x2015, 0x2045, 0x2076, + 0x20a7, 0x20d7, 0x2108, 0x2139, 0x2169, 0x219a, 0x21ca, 0x21fb, 0x222b, 0x225c, 0x228c, 0x22bd, 0x22ed, 0x231d, + 0x234e, 0x237e, 0x23ae, 0x23df, 0x240f, 0x243f, 0x2470, 0x24a0, 0x24d0, 0x2500, 0x2530, 0x2560, 0x2591, 0x25c1, + 0x25f1, 0x2621, 0x2651, 0x2681, 0x26b1, 0x26e1, 0x2711, 0x2740, 0x2770, 0x27a0, 0x27d0, 0x2800, 0x2830, 0x285f, + 0x288f, 0x28bf, 0x28ee, 0x291e, 0x294e, 0x297d, 0x29ad, 0x29dd, 0x2a0c, 0x2a3c, 0x2a6b, 0x2a9b, 0x2aca, 0x2af9, + 0x2b29, 0x2b58, 0x2b87, 0x2bb7, 0x2be6, 0x2c15, 0x2c44, 0x2c74, 0x2ca3, 0x2cd2, 0x2d01, 0x2d30, 0x2d5f, 0x2d8e, + 0x2dbd, 0x2dec, 0x2e1b, 0x2e4a, 0x2e79, 0x2ea8, 0x2ed7, 0x2f06, 0x2f34, 0x2f63, 0x2f92, 0x2fc0, 0x2fef, 0x301e, + 0x304c, 0x307b, 0x30a9, 0x30d8, 0x3107, 0x3135, 0x3163, 0x3192, 0x31c0, 0x31ef, 0x321d, 0x324b, 0x3279, 0x32a8, + 0x32d6, 0x3304, 0x3332, 0x3360, 0x338e, 0x33bc, 0x33ea, 0x3418, 0x3446, 0x3474, 0x34a2, 0x34d0, 0x34fe, 0x352b, + 0x3559, 0x3587, 0x35b5, 0x35e2, 0x3610, 0x363d, 0x366b, 0x3698, 0x36c6, 0x36f3, 0x3721, 0x374e, 0x377c, 0x37a9, + 0x37d6, 0x3803, 0x3831, 0x385e, 0x388b, 0x38b8, 0x38e5, 0x3912, 0x393f, 0x396c, 0x3999, 0x39c6, 0x39f3, 0x3a20, + 0x3a4d, 0x3a79, 0x3aa6, 0x3ad3, 0x3b00, 0x3b2c, 0x3b59, 0x3b85, 0x3bb2, 0x3bde, 0x3c0b, 0x3c37, 0x3c64, 0x3c90, + 0x3cbc, 0x3ce9, 0x3d15, 0x3d41, 0x3d6d, 0x3d99, 0x3dc5, 0x3df1, 0x3e1d, 0x3e49, 0x3e75, 0x3ea1, 0x3ecd, 0x3ef9, + 0x3f25, 0x3f50, 0x3f7c, 0x3fa8, 0x3fd3, 0x3fff, 0x402b, 0x4056, 0x4082, 0x40ad, 0x40d8, 0x4104, 0x412f, 0x415a, + 0x4186, 0x41b1, 0x41dc, 0x4207, 0x4232, 0x425d, 0x4288, 0x42b3, 0x42de, 0x4309, 0x4334, 0x435f, 0x4389, 0x43b4, + 0x43df, 0x4409, 0x4434, 0x445f, 0x4489, 0x44b4, 0x44de, 0x4508, 0x4533, 0x455d, 0x4587, 0x45b1, 0x45dc, 0x4606, + 0x4630, 0x465a, 0x4684, 0x46ae, 0x46d8, 0x4702, 0x472c, 0x4755, 0x477f, 0x47a9, 0x47d2, 0x47fc, 0x4826, 0x484f, + 0x4879, 0x48a2, 0x48cc, 0x48f5, 0x491e, 0x4948, 0x4971, 0x499a, 0x49c3, 0x49ec, 0x4a15, 0x4a3e, 0x4a67, 0x4a90, + 0x4ab9, 0x4ae2, 0x4b0b, 0x4b33, 0x4b5c, 0x4b85, 0x4bad, 0x4bd6, 0x4bfe, 0x4c27, 0x4c4f, 0x4c78, 0x4ca0, 0x4cc8, + 0x4cf0, 0x4d19, 0x4d41, 0x4d69, 0x4d91, 0x4db9, 0x4de1, 0x4e09, 0x4e31, 0x4e58, 0x4e80, 0x4ea8, 0x4ed0, 0x4ef7, + 0x4f1f, 0x4f46, 0x4f6e, 0x4f95, 0x4fbd, 0x4fe4, 0x500b, 0x5032, 0x505a, 0x5081, 0x50a8, 0x50cf, 0x50f6, 0x511d, + 0x5144, 0x516b, 0x5191, 0x51b8, 0x51df, 0x5205, 0x522c, 0x5253, 0x5279, 0x52a0, 0x52c6, 0x52ec, 0x5313, 0x5339, + 0x535f, 0x5385, 0x53ab, 0x53d1, 0x53f7, 0x541d, 0x5443, 0x5469, 0x548f, 0x54b5, 0x54da, 0x5500, 0x5525, 0x554b, + 0x5571, 0x5596, 0x55bb, 0x55e1, 0x5606, 0x562b, 0x5650, 0x5675, 0x569b, 0x56c0, 0x56e5, 0x5709, 0x572e, 0x5753, + 0x5778, 0x579d, 0x57c1, 0x57e6, 0x580a, 0x582f, 0x5853, 0x5878, 0x589c, 0x58c0, 0x58e5, 0x5909, 0x592d, 0x5951, + 0x5975, 0x5999, 0x59bd, 0x59e1, 0x5a04, 0x5a28, 0x5a4c, 0x5a6f, 0x5a93, 0x5ab7, 0x5ada, 0x5afd, 0x5b21, 0x5b44, + 0x5b67, 0x5b8b, 0x5bae, 0x5bd1, 0x5bf4, 0x5c17, 0x5c3a, 0x5c5d, 0x5c7f, 0x5ca2, 0x5cc5, 0x5ce7, 0x5d0a, 0x5d2d, + 0x5d4f, 0x5d71, 0x5d94, 0x5db6, 0x5dd8, 0x5dfa, 0x5e1d, 0x5e3f, 0x5e61, 0x5e83, 0x5ea5, 0x5ec6, 0x5ee8, 0x5f0a, + 0x5f2c, 0x5f4d, 0x5f6f, 0x5f90, 0x5fb2, 0x5fd3, 0x5ff4, 0x6016, 0x6037, 0x6058, 0x6079, 0x609a, 0x60bb, 0x60dc, + 0x60fd, 0x611e, 0x613e, 0x615f, 0x6180, 0x61a0, 0x61c1, 0x61e1, 0x6202, 0x6222, 0x6242, 0x6263, 0x6283, 0x62a3, + 0x62c3, 0x62e3, 0x6303, 0x6323, 0x6342, 0x6362, 0x6382, 0x63a1, 0x63c1, 0x63e0, 0x6400, 0x641f, 0x643f, 0x645e, + 0x647d, 0x649c, 0x64bb, 0x64da, 0x64f9, 0x6518, 0x6537, 0x6556, 0x6574, 0x6593, 0x65b2, 0x65d0, 0x65ef, 0x660d, + 0x662b, 0x664a, 0x6668, 0x6686, 0x66a4, 0x66c2, 0x66e0, 0x66fe, 0x671c, 0x673a, 0x6757, 0x6775, 0x6792, 0x67b0, + 0x67cd, 0x67eb, 0x6808, 0x6825, 0x6843, 0x6860, 0x687d, 0x689a, 0x68b7, 0x68d4, 0x68f1, 0x690d, 0x692a, 0x6947, + 0x6963, 0x6980, 0x699c, 0x69b9, 0x69d5, 0x69f1, 0x6a0e, 0x6a2a, 0x6a46, 0x6a62, 0x6a7e, 0x6a9a, 0x6ab5, 0x6ad1, + 0x6aed, 0x6b08, 0x6b24, 0x6b40, 0x6b5b, 0x6b76, 0x6b92, 0x6bad, 0x6bc8, 0x6be3, 0x6bfe, 0x6c19, 0x6c34, 0x6c4f, + 0x6c6a, 0x6c84, 0x6c9f, 0x6cba, 0x6cd4, 0x6cef, 0x6d09, 0x6d23, 0x6d3e, 0x6d58, 0x6d72, 0x6d8c, 0x6da6, 0x6dc0, + 0x6dda, 0x6df3, 0x6e0d, 0x6e27, 0x6e40, 0x6e5a, 0x6e73, 0x6e8d, 0x6ea6, 0x6ebf, 0x6ed9, 0x6ef2, 0x6f0b, 0x6f24, + 0x6f3d, 0x6f55, 0x6f6e, 0x6f87, 0x6fa0, 0x6fb8, 0x6fd1, 0x6fe9, 0x7002, 0x701a, 0x7032, 0x704a, 0x7062, 0x707a, + 0x7092, 0x70aa, 0x70c2, 0x70da, 0x70f2, 0x7109, 0x7121, 0x7138, 0x7150, 0x7167, 0x717e, 0x7196, 0x71ad, 0x71c4, + 0x71db, 0x71f2, 0x7209, 0x7220, 0x7236, 0x724d, 0x7264, 0x727a, 0x7291, 0x72a7, 0x72bd, 0x72d4, 0x72ea, 0x7300, + 0x7316, 0x732c, 0x7342, 0x7358, 0x736e, 0x7383, 0x7399, 0x73ae, 0x73c4, 0x73d9, 0x73ef, 0x7404, 0x7419, 0x742e, + 0x7443, 0x7458, 0x746d, 0x7482, 0x7497, 0x74ac, 0x74c0, 0x74d5, 0x74ea, 0x74fe, 0x7512, 0x7527, 0x753b, 0x754f, + 0x7563, 0x7577, 0x758b, 0x759f, 0x75b3, 0x75c7, 0x75da, 0x75ee, 0x7601, 0x7615, 0x7628, 0x763b, 0x764f, 0x7662, + 0x7675, 0x7688, 0x769b, 0x76ae, 0x76c1, 0x76d3, 0x76e6, 0x76f9, 0x770b, 0x771e, 0x7730, 0x7742, 0x7754, 0x7767, + 0x7779, 0x778b, 0x779d, 0x77af, 0x77c0, 0x77d2, 0x77e4, 0x77f5, 0x7807, 0x7818, 0x782a, 0x783b, 0x784c, 0x785d, + 0x786e, 0x787f, 0x7890, 0x78a1, 0x78b2, 0x78c3, 0x78d3, 0x78e4, 0x78f4, 0x7905, 0x7915, 0x7925, 0x7936, 0x7946, + 0x7956, 0x7966, 0x7976, 0x7985, 0x7995, 0x79a5, 0x79b5, 0x79c4, 0x79d4, 0x79e3, 0x79f2, 0x7a02, 0x7a11, 0x7a20, + 0x7a2f, 0x7a3e, 0x7a4d, 0x7a5b, 0x7a6a, 0x7a79, 0x7a87, 0x7a96, 0x7aa4, 0x7ab3, 0x7ac1, 0x7acf, 0x7add, 0x7aeb, + 0x7af9, 0x7b07, 0x7b15, 0x7b23, 0x7b31, 0x7b3e, 0x7b4c, 0x7b59, 0x7b67, 0x7b74, 0x7b81, 0x7b8e, 0x7b9b, 0x7ba8, + 0x7bb5, 0x7bc2, 0x7bcf, 0x7bdc, 0x7be8, 0x7bf5, 0x7c02, 0x7c0e, 0x7c1a, 0x7c27, 0x7c33, 0x7c3f, 0x7c4b, 0x7c57, + 0x7c63, 0x7c6f, 0x7c7a, 0x7c86, 0x7c92, 0x7c9d, 0x7ca9, 0x7cb4, 0x7cbf, 0x7ccb, 0x7cd6, 0x7ce1, 0x7cec, 0x7cf7, + 0x7d02, 0x7d0c, 0x7d17, 0x7d22, 0x7d2c, 0x7d37, 0x7d41, 0x7d4b, 0x7d56, 0x7d60, 0x7d6a, 0x7d74, 0x7d7e, 0x7d88, + 0x7d91, 0x7d9b, 0x7da5, 0x7dae, 0x7db8, 0x7dc1, 0x7dcb, 0x7dd4, 0x7ddd, 0x7de6, 0x7def, 0x7df8, 0x7e01, 0x7e0a, + 0x7e13, 0x7e1b, 0x7e24, 0x7e2c, 0x7e35, 0x7e3d, 0x7e45, 0x7e4d, 0x7e56, 0x7e5e, 0x7e66, 0x7e6d, 0x7e75, 0x7e7d, + 0x7e85, 0x7e8c, 0x7e94, 0x7e9b, 0x7ea3, 0x7eaa, 0x7eb1, 0x7eb8, 0x7ebf, 0x7ec6, 0x7ecd, 0x7ed4, 0x7edb, 0x7ee1, + 0x7ee8, 0x7eee, 0x7ef5, 0x7efb, 0x7f01, 0x7f08, 0x7f0e, 0x7f14, 0x7f1a, 0x7f20, 0x7f25, 0x7f2b, 0x7f31, 0x7f36, + 0x7f3c, 0x7f41, 0x7f47, 0x7f4c, 0x7f51, 0x7f56, 0x7f5b, 0x7f60, 0x7f65, 0x7f6a, 0x7f6f, 0x7f74, 0x7f78, 0x7f7d, + 0x7f81, 0x7f85, 0x7f8a, 0x7f8e, 0x7f92, 0x7f96, 0x7f9a, 0x7f9e, 0x7fa2, 0x7fa6, 0x7fa9, 0x7fad, 0x7fb0, 0x7fb4, + 0x7fb7, 0x7fba, 0x7fbe, 0x7fc1, 0x7fc4, 0x7fc7, 0x7fca, 0x7fcc, 0x7fcf, 0x7fd2, 0x7fd4, 0x7fd7, 0x7fd9, 0x7fdc, + 0x7fde, 0x7fe0, 0x7fe2, 0x7fe4, 0x7fe6, 0x7fe8, 0x7fea, 0x7fec, 0x7fed, 0x7fef, 0x7ff1, 0x7ff2, 0x7ff3, 0x7ff5, + 0x7ff6, 0x7ff7, 0x7ff8, 0x7ff9, 0x7ffa, 0x7ffb, 0x7ffb, 0x7ffc, 0x7ffd, 0x7ffd, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, + 0x7ffe, 0x7fff, }; diff --git a/src/gu/translate.c b/src/gu/translate.c index 18148b1..8ae2538 100644 --- a/src/gu/translate.c +++ b/src/gu/translate.c @@ -12,8 +12,7 @@ #include "guint.h" -void guTranslateF(float mf[4][4], float x, float y, float z) -{ +void guTranslateF(float mf[4][4], float x, float y, float z) { guMtxIdentF(mf); mf[3][0] = x; @@ -21,9 +20,8 @@ void guTranslateF(float mf[4][4], float x, float y, float z) mf[3][2] = z; } -void guTranslate(Mtx *m, float x, float y, float z) -{ - Matrix mf; +void guTranslate(Mtx* m, float x, float y, float z) { + Matrix mf; guTranslateF(mf, x, y, z); diff --git a/src/gu/us2dex.c b/src/gu/us2dex.c index 92f42bb..a9fef5c 100644 --- a/src/gu/us2dex.c +++ b/src/gu/us2dex.c @@ -1,13 +1,13 @@ /*--------------------------------------------------------------------- $Id: us2dex.c,v 1.4 1998/10/09 06:15:30 has Exp $ - + File : us2dex.c - + Coded by Yoshitaka Yasumoto. Mar 19, 1997. Copyright by Nintendo, Co., Ltd. 1997. ---------------------------------------------------------------------*/ -#include -#include +#include +#include /* * Routines that support processing of S2DEX microcode @@ -17,57 +17,58 @@ * guS2DInitBG * Set BG screen draw parameters * - * If called at time of initialization, then it only needs to be - * called again when changes made to imageFmt, imageSiz, imageLoad, * imageW, frameW. However, if imageLoad == G_BGLT_LOADBLOCK and * only frameW is changed, another call is unnecessary. + * If called at time of initialization, then it only needs to be + * called again when changes made to imageFmt, imageSiz, imageLoad, * imageW, + *frameW. However, if imageLoad == G_BGLT_LOADBLOCK and * only frameW is changed, another + *call is unnecessary. */ -void guS2DInitBg(uObjBg *bg) -{ - u16 tmemUse; - u16 shift; +void guS2DInitBg(uObjBg* bg) { + u16 tmemUse; + u16 shift; #if BUILD_VERSION >= VERSION_J - u32 tsize; + u32 tsize; #endif - - /* - * Get the useable volume for TMEM - * If imageFmt is CI then TLUT will use half. - */ - tmemUse = (bg->b.imageFmt == G_IM_FMT_CI) ? 256 : 512; - - /* - * Get shift volume for conversion to TMEM word. - */ - shift = 6 - bg->b.imageSiz; - - /* - * Set other parameters for Load Mode. - */ - if (bg->b.imageLoad == G_BGLT_LOADBLOCK){ - bg->b.tmemW = bg->b.imageW >> shift; - bg->b.tmemH = (tmemUse / bg->b.tmemW) << 2; - bg->b.tmemSizeW = bg->b.tmemW << 1; - bg->b.tmemSize = bg->b.tmemH * bg->b.tmemSizeW; - bg->b.tmemLoadSH = (bg->b.tmemSize>>1) - 1; - bg->b.tmemLoadTH = GS_CALC_DXT(bg->b.tmemW); - } else { + + /* + * Get the useable volume for TMEM + * If imageFmt is CI then TLUT will use half. + */ + tmemUse = (bg->b.imageFmt == G_IM_FMT_CI) ? 256 : 512; + + /* + * Get shift volume for conversion to TMEM word. + */ + shift = 6 - bg->b.imageSiz; + + /* + * Set other parameters for Load Mode. + */ + if (bg->b.imageLoad == G_BGLT_LOADBLOCK) { + bg->b.tmemW = bg->b.imageW >> shift; + bg->b.tmemH = (tmemUse / bg->b.tmemW) << 2; + bg->b.tmemSizeW = bg->b.tmemW << 1; + bg->b.tmemSize = bg->b.tmemH * bg->b.tmemSizeW; + bg->b.tmemLoadSH = (bg->b.tmemSize >> 1) - 1; + bg->b.tmemLoadTH = GS_CALC_DXT(bg->b.tmemW); + } else { #if BUILD_VERSION >= VERSION_J - bg->b.tmemW = (bg->b.frameW >> shift) + 3; - bg->b.tmemH = (tmemUse / bg->b.tmemW) << 2; - bg->b.tmemSizeW = (bg->b.imageW >> shift) * 2; - tsize = bg->b.tmemH * bg->b.tmemSizeW; - bg->b.tmemSize = tsize >> 16; - bg->b.tmemLoadSH = tsize & 0xffff; - bg->b.tmemLoadTH = bg->b.tmemH - 1; + bg->b.tmemW = (bg->b.frameW >> shift) + 3; + bg->b.tmemH = (tmemUse / bg->b.tmemW) << 2; + bg->b.tmemSizeW = (bg->b.imageW >> shift) * 2; + tsize = bg->b.tmemH * bg->b.tmemSizeW; + bg->b.tmemSize = tsize >> 16; + bg->b.tmemLoadSH = tsize & 0xffff; + bg->b.tmemLoadTH = bg->b.tmemH - 1; #else - bg->b.tmemW = (bg->b.frameW >> shift) + 1; - bg->b.tmemH = (tmemUse / bg->b.tmemW) << 2; - bg->b.tmemSizeW = (bg->b.imageW >> shift) * 2; - bg->b.tmemSize = bg->b.tmemH * bg->b.tmemSizeW; - bg->b.tmemLoadSH = (bg->b.tmemW<<4) - 1; - bg->b.tmemLoadTH = bg->b.tmemH - 1; + bg->b.tmemW = (bg->b.frameW >> shift) + 1; + bg->b.tmemH = (tmemUse / bg->b.tmemW) << 2; + bg->b.tmemSizeW = (bg->b.imageW >> shift) * 2; + bg->b.tmemSize = bg->b.tmemH * bg->b.tmemSizeW; + bg->b.tmemLoadSH = (bg->b.tmemW << 4) - 1; + bg->b.tmemLoadTH = bg->b.tmemH - 1; #endif - } - return; + } + return; } /*======== End of us2dex.c ========*/ diff --git a/src/gu/us2dex2_emu.c b/src/gu/us2dex2_emu.c index cc32179..27ac78c 100644 --- a/src/gu/us2dex2_emu.c +++ b/src/gu/us2dex2_emu.c @@ -1,12 +1,12 @@ /*---------------------------------------------------------------------* - Copyright (C) 1998, Nintendo. - - File us2dex2_emu.c - Coded by Yoshitaka Yasumoto. Apr 10, 1998. - - $Id: us2dex2_emu.c,v 1.3 1998/10/09 06:15:40 has Exp $ + Copyright (C) 1998, Nintendo. + + File us2dex2_emu.c + Coded by Yoshitaka Yasumoto. Apr 10, 1998. + + $Id: us2dex2_emu.c,v 1.3 1998/10/09 06:15:40 has Exp $ *---------------------------------------------------------------------*/ -#define F3DEX_GBI_2 -#include "us2dex_emu.c" +#define F3DEX_GBI_2 +#include "us2dex_emu.c" /*======== End of us2dex2_emu.c ========*/ diff --git a/src/gu/us2dex_emu.c b/src/gu/us2dex_emu.c index c0a9e30..23c7de6 100644 --- a/src/gu/us2dex_emu.c +++ b/src/gu/us2dex_emu.c @@ -1,30 +1,30 @@ /*---------------------------------------------------------------------* - Copyright (C) 1998, Nintendo. - - File us2dex_emu.c - Coded by Yoshitaka Yasumoto. Apr 9, 1998. - - $Id: us2dex_emu.c,v 1.9 1999/07/08 05:02:04 yurugi Exp $ + Copyright (C) 1998, Nintendo. + + File us2dex_emu.c + Coded by Yoshitaka Yasumoto. Apr 9, 1998. + + $Id: us2dex_emu.c,v 1.9 1999/07/08 05:02:04 yurugi Exp $ *---------------------------------------------------------------------*/ -#define F3DEX_GBI -#include -#include +#define F3DEX_GBI +#include +#include -#define RSP_DEBUG +#define RSP_DEBUG -static u16 scissorX0 = 0; /* (s13.2) */ -static u16 scissorY0 = 0; /* (s13.2) */ -static u16 scissorX1 = 320<<2; /* (s13.2) */ -static u16 scissorY1 = 240<<2; /* (s13.2) */ -static u8 flagBilerp = 0; +static u16 scissorX0 = 0; /* (s13.2) */ +static u16 scissorY0 = 0; /* (s13.2) */ +static u16 scissorX1 = 320 << 2; /* (s13.2) */ +static u16 scissorY1 = 240 << 2; /* (s13.2) */ +static u8 flagBilerp = 0; -static u32 rdpSetTimg_w0, rdpSetTile_w0; -static u16 tmemSliceWmax; -static u16 imageSrcWsize; -static s16 flagSplit; -static u16 imagePtrX0; -static u32 imageTop; -static s16 tmemSrcLines; +static u32 rdpSetTimg_w0, rdpSetTile_w0; +static u16 tmemSliceWmax; +static u16 imageSrcWsize; +static s16 flagSplit; +static u16 imagePtrX0; +static u32 imageTop; +static s16 tmemSrcLines; /* Addition 99/05/31(Y) */ #if BUILD_VERSION >= VERSION_K @@ -34,488 +34,490 @@ static s8 bgflg; /*----------------------------------------------------------------------------* * Set scissoring parameters * *---------------------------------------------------------------------------*/ -void guS2DEmuSetScissor(u32 ulx, u32 uly, u32 lrx, u32 lry, u8 flag) -{ - scissorX0 = (u16)ulx << 2; - scissorY0 = (u16)uly << 2; - scissorX1 = (u16)lrx << 2; - scissorY1 = (u16)lry << 2; - flagBilerp = (flag) ? 1 : 0; +void guS2DEmuSetScissor(u32 ulx, u32 uly, u32 lrx, u32 lry, u8 flag) { + scissorX0 = (u16)ulx << 2; + scissorY0 = (u16)uly << 2; + scissorX1 = (u16)lrx << 2; + scissorY1 = (u16)lry << 2; + flagBilerp = (flag) ? 1 : 0; } /*---------------------------------------------------------------------------* * Create texture load RDP commands *---------------------------------------------------------------------------*/ -static void tmemLoad_B(Gfx **pkt, u32 imagePtr, s16 loadLines, s16 tmemSH) -{ - /* - * Load 16-bit texture of tmemSH word width starting from imagePtr - * into the loadLines amount of lines of tmem. - */ +static void tmemLoad_B(Gfx** pkt, u32 imagePtr, s16 loadLines, s16 tmemSH) { + /* + * Load 16-bit texture of tmemSH word width starting from imagePtr + * into the loadLines amount of lines of tmem. + */ - /* [SetTImg] CMD=0x3d FMT=RGBA(0) SIZ=16b(2) */ - (*pkt)->words.w0 = rdpSetTimg_w0; - (*pkt)->words.w1 = imagePtr; - (*pkt) ++; + /* [SetTImg] CMD=0x3d FMT=RGBA(0) SIZ=16b(2) */ + (*pkt)->words.w0 = rdpSetTimg_w0; + (*pkt)->words.w1 = imagePtr; + (*pkt)++; - /* [LoadSync] Wait for completion of preceding primitive draw */ - (*pkt)->words.w0 = (G_RDPLOADSYNC<<24); - (*pkt) ++; + /* [LoadSync] Wait for completion of preceding primitive draw */ + (*pkt)->words.w0 = (G_RDPLOADSYNC << 24); + (*pkt)++; - /* [LoadTile] CMD=0x34 TILE=7 SH=TMEMW*16-1 TMEMH*4-1 */ - (*pkt)->words.w0 = (G_LOADTILE<<24)|0x000000; + /* [LoadTile] CMD=0x34 TILE=7 SH=TMEMW*16-1 TMEMH*4-1 */ + (*pkt)->words.w0 = (G_LOADTILE << 24) | 0x000000; /* addition 99/5/31(Y) */ #if BUILD_VERSION >= VERSION_K - if(bgflg==3) (*pkt)->words.w1 = 0x07000000 | (tmemSH-1)<<16; - else (*pkt)->words.w1 = 0x07000000 | (tmemSH-1)<<16 | (loadLines<<2)-1; + if (bgflg == 3) + (*pkt)->words.w1 = 0x07000000 | (tmemSH - 1) << 16; + else + (*pkt)->words.w1 = 0x07000000 | (tmemSH - 1) << 16 | (loadLines << 2) - 1; #else - (*pkt)->words.w1 = 0x07000000 | (tmemSH-1)<<16 | (loadLines<<2)-1; + (*pkt)->words.w1 = 0x07000000 | (tmemSH - 1) << 16 | (loadLines << 2) - 1; #endif - (*pkt) ++; + (*pkt)++; } -static void tmemLoad_A(Gfx **pkt, u32 imagePtr, - s16 loadLines, s16 tmemAdrs, s16 tmemSH) -{ - /* - * Load 16-bit texture of tmemSH word width starting from imagePtr into - * the loadLines amount of lines of the tmemAdrs of tmem. - */ +static void tmemLoad_A(Gfx** pkt, u32 imagePtr, s16 loadLines, s16 tmemAdrs, s16 tmemSH) { + /* + * Load 16-bit texture of tmemSH word width starting from imagePtr into + * the loadLines amount of lines of the tmemAdrs of tmem. + */ - /* [TileSync] Wait for completion of Tile access of preceding command */ - (*pkt)->words.w0 = 0xe8000000; - (*pkt) ++; + /* [TileSync] Wait for completion of Tile access of preceding command */ + (*pkt)->words.w0 = 0xe8000000; + (*pkt)++; - /* [SetTile] */ - (*pkt)->words.w0 = rdpSetTile_w0|tmemAdrs; - (*pkt)->words.w1 = 0x07000000; - (*pkt) ++; - - tmemLoad_B(pkt, imagePtr, loadLines, tmemSH); + /* [SetTile] */ + (*pkt)->words.w0 = rdpSetTile_w0 | tmemAdrs; + (*pkt)->words.w1 = 0x07000000; + (*pkt)++; + + tmemLoad_B(pkt, imagePtr, loadLines, tmemSH); } -static void tmemLoad(Gfx **pkt, u32 *imagePtr, - s16 *imageRemain, s16 drawLines, s16 flagBilerp) -{ - s16 loadLines = drawLines + flagBilerp; - s16 iLoadable = (*imageRemain) - flagSplit; - - if (iLoadable >= loadLines){ /* If load can be done all at once */ - tmemLoad_B(pkt, *imagePtr, loadLines, tmemSliceWmax); - (*imagePtr) += imageSrcWsize * drawLines; - (*imageRemain) -= drawLines; - - } else { /* If load is to be partitioned */ - s16 SubSliceL2, SubSliceD2, SubSliceY2; - u32 imageTopSeg = imageTop & 0xff000000; - - SubSliceY2 = *imageRemain; - SubSliceL2 = loadLines - SubSliceY2; - SubSliceD2 = drawLines - SubSliceY2; - - if (SubSliceL2 > 0){ - u32 imagePtr2; - - imagePtr2 = imageTop + imagePtrX0; - if (SubSliceY2 & 1){ - imagePtr2 -= imageSrcWsize; - imagePtr2 = imageTopSeg | (imagePtr2 & 0x00ffffff); /*Segment counterm */ - SubSliceY2 --; - SubSliceL2 ++; - } - tmemLoad_A(pkt, imagePtr2, - SubSliceL2, SubSliceY2 * tmemSliceWmax, tmemSliceWmax); - } - if (flagSplit){ - u32 imagePtr1A, imagePtr1B; - s16 SubSliceY1, SubSliceL1; - s16 tmemSH_A, tmemSH_B; - - imagePtr1A = (*imagePtr) + iLoadable * imageSrcWsize; - imagePtr1B = imageTop; - SubSliceY1 = iLoadable; - if (SubSliceL1 = iLoadable & 1){ - imagePtr1A -= imageSrcWsize; - imagePtr1B -= imageSrcWsize; - imagePtr1B = imageTopSeg | (imagePtr1B & 0x00ffffff); /*Segment countermeasure */ - SubSliceY1 --; - } - SubSliceL1 ++; - tmemSH_A = (imageSrcWsize - imagePtrX0) >> 3; - tmemSH_B = tmemSliceWmax - tmemSH_A; - tmemLoad_A(pkt, imagePtr1B, - SubSliceL1, SubSliceY1 * tmemSliceWmax + tmemSH_A, tmemSH_B); - tmemLoad_A(pkt, imagePtr1A, - SubSliceL1, SubSliceY1 * tmemSliceWmax, tmemSH_A); - } - if (iLoadable > 0){ +static void tmemLoad(Gfx** pkt, u32* imagePtr, s16* imageRemain, s16 drawLines, s16 flagBilerp) { + s16 loadLines = drawLines + flagBilerp; + s16 iLoadable = (*imageRemain) - flagSplit; - tmemLoad_A(pkt, *imagePtr, iLoadable, 0, tmemSliceWmax); - - } else { - - /* [SetTile] */ - (*pkt)->words.w0 = rdpSetTile_w0; - (*pkt)->words.w1 = 0x07000000; - (*pkt) ++; + if (iLoadable >= loadLines) { /* If load can be done all at once */ + tmemLoad_B(pkt, *imagePtr, loadLines, tmemSliceWmax); + (*imagePtr) += imageSrcWsize * drawLines; + (*imageRemain) -= drawLines; + + } else { /* If load is to be partitioned */ + s16 SubSliceL2, SubSliceD2, SubSliceY2; + u32 imageTopSeg = imageTop & 0xff000000; + + SubSliceY2 = *imageRemain; + SubSliceL2 = loadLines - SubSliceY2; + SubSliceD2 = drawLines - SubSliceY2; + + if (SubSliceL2 > 0) { + u32 imagePtr2; + + imagePtr2 = imageTop + imagePtrX0; + if (SubSliceY2 & 1) { + imagePtr2 -= imageSrcWsize; + imagePtr2 = imageTopSeg | (imagePtr2 & 0x00ffffff); /*Segment counterm */ + SubSliceY2--; + SubSliceL2++; + } + tmemLoad_A(pkt, imagePtr2, SubSliceL2, SubSliceY2 * tmemSliceWmax, tmemSliceWmax); + } + if (flagSplit) { + u32 imagePtr1A, imagePtr1B; + s16 SubSliceY1, SubSliceL1; + s16 tmemSH_A, tmemSH_B; + + imagePtr1A = (*imagePtr) + iLoadable * imageSrcWsize; + imagePtr1B = imageTop; + SubSliceY1 = iLoadable; + if (SubSliceL1 = iLoadable & 1) { + imagePtr1A -= imageSrcWsize; + imagePtr1B -= imageSrcWsize; + imagePtr1B = imageTopSeg | (imagePtr1B & 0x00ffffff); /*Segment countermeasure */ + SubSliceY1--; + } + SubSliceL1++; + tmemSH_A = (imageSrcWsize - imagePtrX0) >> 3; + tmemSH_B = tmemSliceWmax - tmemSH_A; + tmemLoad_A(pkt, imagePtr1B, SubSliceL1, SubSliceY1 * tmemSliceWmax + tmemSH_A, tmemSH_B); + tmemLoad_A(pkt, imagePtr1A, SubSliceL1, SubSliceY1 * tmemSliceWmax, tmemSH_A); + } + if (iLoadable > 0) { + + tmemLoad_A(pkt, *imagePtr, iLoadable, 0, tmemSliceWmax); + + } else { + + /* [SetTile] */ + (*pkt)->words.w0 = rdpSetTile_w0; + (*pkt)->words.w1 = 0x07000000; + (*pkt)++; + } + + (*imageRemain) -= drawLines; + if ((*imageRemain) > 0) { + (*imagePtr) += imageSrcWsize * drawLines; + } else { + (*imageRemain) = tmemSrcLines - SubSliceD2; + (*imagePtr) = imageTop + SubSliceD2 * imageSrcWsize + imagePtrX0; + } } - - (*imageRemain) -= drawLines; - if ((*imageRemain) > 0){ - (*imagePtr) += imageSrcWsize * drawLines; - } else { - (*imageRemain) = tmemSrcLines - SubSliceD2; - (*imagePtr) = imageTop + SubSliceD2 * imageSrcWsize + imagePtrX0; - } - - } } /*---------------------------------------------------------------------------* * Scalable BG serface draw process *---------------------------------------------------------------------------*/ -void guS2DEmuBgRect1Cyc(Gfx **pkt, uObjBg *bg) -{ - s16 frameX0, frameX1, framePtrY0, frameRemain; - s16 imageX0, imageY0, imageSliceW, imageW; - s32 imageYorig; - s16 scaleW, scaleH; +void guS2DEmuBgRect1Cyc(Gfx** pkt, uObjBg* bg) { + s16 frameX0, frameX1, framePtrY0, frameRemain; + s16 imageX0, imageY0, imageSliceW, imageW; + s32 imageYorig; + s16 scaleW, scaleH; - s16 imageSrcW, imageSrcH; - s16 tmemSliceLines, imageSliceLines; - s32 frameSliceLines, frameSliceCount; - u16 imageS, imageT; - u32 imagePtr; + s16 imageSrcW, imageSrcH; + s16 tmemSliceLines, imageSliceLines; + s32 frameSliceLines, frameSliceCount; + u16 imageS, imageT; + u32 imagePtr; - s16 imageISliceL0, imageIY0; - s32 frameLSliceL0; - - scaleW = bg->s.scaleW; - scaleH = bg->s.scaleH; + s16 imageISliceL0, imageIY0; + s32 frameLSliceL0; + + scaleW = bg->s.scaleW; + scaleH = bg->s.scaleH; /* addition 99/05/31(Y) */ #if BUILD_VERSION >= VERSION_K - bgflg=bg->s.imageSiz; - if(scaleW==0) scaleW=1; - if(scaleH==0) scaleH=1; + bgflg = bg->s.imageSiz; + if (scaleW == 0) + scaleW = 1; + if (scaleH == 0) + scaleH = 1; #endif - -{ - /*-------------------------------------------------* - Scissoring process - *-------------------------------------------------*/ - /* - / frameX0, frameX1, framePtrY0, frameRemain - / imageX0, imageY0, tmemSliceW - / imageSrcW, imageSrcH - */ - s16 pixX0, pixY0, pixX1, pixY1; /* (s13.2) */ - s16 frameY0, frameW, frameH; - s32 frameWmax, frameHmax; - - /* Determine maximum frame size from image and enlargement ratio */ - frameWmax = ((((s32)bg->s.imageW << 10) / scaleW)-1) & ~3; - frameHmax = ((((s32)bg->s.imageH << 10) / scaleH)-1) & ~3; - - /* Clamp the frame size */ - frameW = bg->s.frameW; - frameH = bg->s.frameH; - frameX0 = bg->s.frameX; - frameY0 = bg->s.frameY; - if ((frameWmax = bg->s.frameW - frameWmax) < 0) frameWmax = 0; - if ((frameHmax = bg->s.frameH - frameHmax) < 0) frameHmax = 0; - frameW -= frameWmax; - frameH -= frameHmax; - if (bg->s.imageFlip & G_BG_FLAG_FLIPS){ - frameX0 += frameWmax; - } - - /* Caluculate amount of projection from screen */ - pixX0 = scissorX0 - frameX0; /* (s13.2) */ - pixY0 = scissorY0 - frameY0; /* (s13.2) */ - pixX1 = frameW - scissorX1 + frameX0; /* (s13.2) */ - pixY1 = frameH - scissorY1 + frameY0; /* (s13.2) */ - - /* Clamp if no projection */ - if (pixX0 < 0) pixX0 = 0; - if (pixY0 < 0) pixY0 = 0; - if (pixX1 < 0) pixX1 = 0; - if (pixY1 < 0) pixY1 = 0; - - /* Cut the part that is projecting */ - frameW = frameW - (pixX0 + pixX1); /* (s13.2) */ - frameH = frameH - (pixY0 + pixY1); /* (s13.2) */ - frameX0 = frameX0 + pixX0; /* (s13.2) */ - frameY0 = frameY0 + pixY0; /* (s13.2) */ + { + /*-------------------------------------------------* + Scissoring process + *-------------------------------------------------*/ + /* + / frameX0, frameX1, framePtrY0, frameRemain + / imageX0, imageY0, tmemSliceW + / imageSrcW, imageSrcH + */ + s16 pixX0, pixY0, pixX1, pixY1; /* (s13.2) */ + s16 frameY0, frameW, frameH; + s32 frameWmax, frameHmax; - /* Terminate if no draw range remains */ - if (frameW <= 0 || frameH <= 0) return; + /* Determine maximum frame size from image and enlargement ratio */ + frameWmax = ((((s32)bg->s.imageW << 10) / scaleW) - 1) & ~3; + frameHmax = ((((s32)bg->s.imageH << 10) / scaleH) - 1) & ~3; - /* Caluculate frame */ - frameX1 = frameX0 + frameW; /* (s13.2) */ - framePtrY0 = frameY0 >> 2; /* (s15.0) */ - frameRemain = frameH >> 2; /* (s15.0) */ - - /* Join image columns */ - imageSrcW = bg->s.imageW << 3; /* (u11.5) */ - imageSrcH = bg->s.imageH << 3; /* (u11.5) */ - - /* Get image range (u14.2)*(u6.10)=(u20.12)->(u11.5) */ - imageSliceW = (imageW = frameW * scaleW >> 7) + flagBilerp * 32; - if (bg->s.imageFlip & G_BG_FLAG_FLIPS){ - imageX0 = bg->s.imageX + (pixX1 * scaleW >> 7); /* (s10.5) */ - } else { - imageX0 = bg->s.imageX + (pixX0 * scaleW >> 7); /* (s10.5) */ - } - imageY0 = bg->s.imageY + (pixY0 * scaleH >> 7); /* (s10.5) */ - imageYorig = bg->s.imageYorig; - - /* Loop one step down when left end of image area is greater than right end of image source */ - while (imageX0 >= imageSrcW){ - imageX0 -= imageSrcW; - imageY0 += 32; - imageYorig += 32; /* Add 1 to carrier */ - } - - /* Loop when top end of image area is greater than bottom end of image source */ - while (imageY0 >= imageSrcH){ - imageY0 -= imageSrcH; - imageYorig -= imageSrcH; - } -} + /* Clamp the frame size */ + frameW = bg->s.frameW; + frameH = bg->s.frameH; + frameX0 = bg->s.frameX; + frameY0 = bg->s.frameY; + if ((frameWmax = bg->s.frameW - frameWmax) < 0) + frameWmax = 0; + if ((frameHmax = bg->s.frameH - frameHmax) < 0) + frameHmax = 0; + frameW -= frameWmax; + frameH -= frameHmax; + if (bg->s.imageFlip & G_BG_FLAG_FLIPS) { + frameX0 += frameWmax; + } -{ - /*-------------------------------------------------* - Check process connecting top and bottom of image - *-------------------------------------------------*/ - /* - // flagSplit - // tmemSrcLines - // imageSrcLines - */ - /* Top/bottom connection process necessary when image range straddles right -end */ - flagSplit = (imageX0 + imageSliceW >= imageSrcW); - - /* Number of image lines that can be loaded at once */ - tmemSrcLines = imageSrcH >> 5; -} + /* Caluculate amount of projection from screen */ + pixX0 = scissorX0 - frameX0; /* (s13.2) */ + pixY0 = scissorY0 - frameY0; /* (s13.2) */ + pixX1 = frameW - scissorX1 + frameX0; /* (s13.2) */ + pixY1 = frameH - scissorY1 + frameY0; /* (s13.2) */ -{ - /*-------------------------------------------------* - Get load data for TMEM - *-------------------------------------------------*/ - /* - //Calculate number of lines that can be loaded into TMEM. - // If the slice width changes due to scissoring and the linked - // load line number is changed, then the frame division line will - // change and the result will be the generation of unnatural wrinkles. - // To prevent this, the division region is set such that scissoring - // does not occur. - // - */ - s16 tmemSize, tmemMask, tmemShift; - s32 imageNumSlice; - s32 imageSliceWmax; - s32 imageLYoffset, frameLYoffset; - s32 imageLHidden, frameLHidden; - s32 frameLYslice; - - static s16 TMEMSIZE[] = { 512, 512, 256, 512, 512 }; - static s16 TMEMMASK[] = { 0x1ff, 0xff, 0x7f, 0x3f }; - static s16 TMEMSHIFT[] = { 0x200, 0x100, 0x80, 0x40 }; - tmemSize = TMEMSIZE[bg->s.imageFmt]; /* (s15.0) */ - tmemMask = TMEMMASK[bg->s.imageSiz]; /* (s10.5) */ - tmemShift = TMEMSHIFT[bg->s.imageSiz]; /* (s10.5)->(s15.0) */ + /* Clamp if no projection */ + if (pixX0 < 0) + pixX0 = 0; + if (pixY0 < 0) + pixY0 = 0; + if (pixX1 < 0) + pixX1 = 0; + if (pixY1 < 0) + pixY1 = 0; - /* Calculate tmem width to accommodate the slice image width */ - /* o Extra is needed at Bilerp time. - // o Clamp slice image width based on image source width. - // o Cut image width end number at TMEM Word boundary. - // o tmem width + 1 when start position not in agreement with Word boundary */ + /* Cut the part that is projecting */ + frameW = frameW - (pixX0 + pixX1); /* (s13.2) */ + frameH = frameH - (pixY0 + pixY1); /* (s13.2) */ + frameX0 = frameX0 + pixX0; /* (s13.2) */ + frameY0 = frameY0 + pixY0; /* (s13.2) */ + + /* Terminate if no draw range remains */ + if (frameW <= 0 || frameH <= 0) + return; + + /* Caluculate frame */ + frameX1 = frameX0 + frameW; /* (s13.2) */ + framePtrY0 = frameY0 >> 2; /* (s15.0) */ + frameRemain = frameH >> 2; /* (s15.0) */ + + /* Join image columns */ + imageSrcW = bg->s.imageW << 3; /* (u11.5) */ + imageSrcH = bg->s.imageH << 3; /* (u11.5) */ + + /* Get image range (u14.2)*(u6.10)=(u20.12)->(u11.5) */ + imageSliceW = (imageW = frameW * scaleW >> 7) + flagBilerp * 32; + if (bg->s.imageFlip & G_BG_FLAG_FLIPS) { + imageX0 = bg->s.imageX + (pixX1 * scaleW >> 7); /* (s10.5) */ + } else { + imageX0 = bg->s.imageX + (pixX0 * scaleW >> 7); /* (s10.5) */ + } + imageY0 = bg->s.imageY + (pixY0 * scaleH >> 7); /* (s10.5) */ + imageYorig = bg->s.imageYorig; + + /* Loop one step down when left end of image area is greater than right end of image source */ + while (imageX0 >= imageSrcW) { + imageX0 -= imageSrcW; + imageY0 += 32; + imageYorig += 32; /* Add 1 to carrier */ + } + + /* Loop when top end of image area is greater than bottom end of image source */ + while (imageY0 >= imageSrcH) { + imageY0 -= imageSrcH; + imageYorig -= imageSrcH; + } + } + + { + /*-------------------------------------------------* + Check process connecting top and bottom of image + *-------------------------------------------------*/ + /* + // flagSplit + // tmemSrcLines + // imageSrcLines + */ + /* Top/bottom connection process necessary when image range straddles right + end */ + flagSplit = (imageX0 + imageSliceW >= imageSrcW); + + /* Number of image lines that can be loaded at once */ + tmemSrcLines = imageSrcH >> 5; + } + + { + /*-------------------------------------------------* + Get load data for TMEM + *-------------------------------------------------*/ + /* + //Calculate number of lines that can be loaded into TMEM. + // If the slice width changes due to scissoring and the linked + // load line number is changed, then the frame division line will + // change and the result will be the generation of unnatural wrinkles. + // To prevent this, the division region is set such that scissoring + // does not occur. + // + */ + s16 tmemSize, tmemMask, tmemShift; + s32 imageNumSlice; + s32 imageSliceWmax; + s32 imageLYoffset, frameLYoffset; + s32 imageLHidden, frameLHidden; + s32 frameLYslice; + + static s16 TMEMSIZE[] = { 512, 512, 256, 512, 512 }; + static s16 TMEMMASK[] = { 0x1ff, 0xff, 0x7f, 0x3f }; + static s16 TMEMSHIFT[] = { 0x200, 0x100, 0x80, 0x40 }; + tmemSize = TMEMSIZE[bg->s.imageFmt]; /* (s15.0) */ + tmemMask = TMEMMASK[bg->s.imageSiz]; /* (s10.5) */ + tmemShift = TMEMSHIFT[bg->s.imageSiz]; /* (s10.5)->(s15.0) */ + + /* Calculate tmem width to accommodate the slice image width */ + /* o Extra is needed at Bilerp time. + // o Clamp slice image width based on image source width. + // o Cut image width end number at TMEM Word boundary. + // o tmem width + 1 when start position not in agreement with Word boundary */ /* addition 99/05/31(Y) */ #if BUILD_VERSION >= VERSION_K - if(bgflg==3){ - tmemSize=480; - imageSliceWmax = 0x2800; - } - else{ - imageSliceWmax = (((s32)bg->s.frameW * (s32)scaleW)>>7) + (flagBilerp<<5); - if (imageSliceWmax > imageSrcW) imageSliceWmax = imageSrcW; - } + if (bgflg == 3) { + tmemSize = 480; + imageSliceWmax = 0x2800; + } else { + imageSliceWmax = (((s32)bg->s.frameW * (s32)scaleW) >> 7) + (flagBilerp << 5); + if (imageSliceWmax > imageSrcW) + imageSliceWmax = imageSrcW; + } #else - imageSliceWmax = (((s32)bg->s.frameW * (s32)scaleW)>>7) + (flagBilerp<<5); - if (imageSliceWmax > imageSrcW) imageSliceWmax = imageSrcW; + imageSliceWmax = (((s32)bg->s.frameW * (s32)scaleW) >> 7) + (flagBilerp << 5); + if (imageSliceWmax > imageSrcW) + imageSliceWmax = imageSrcW; #endif - tmemSliceWmax = (imageSliceWmax + tmemMask) / tmemShift + 1; - - /* Get TMEM/image/frame line number that can be loaded at once */ - tmemSliceLines = tmemSize / tmemSliceWmax; /* (s15.0) */ - imageSliceLines = tmemSliceLines - flagBilerp; /* (s15.0) */ - frameSliceLines = (imageSliceLines << 20) / scaleH; /* (s21.10) */ + tmemSliceWmax = (imageSliceWmax + tmemMask) / tmemShift + 1; - /* Line up image Y coordinate offset value with frame image */ - imageLYoffset = ((s32)imageY0 - imageYorig) << 5; - if (imageLYoffset < 0) imageLYoffset -= (scaleH - 1); - frameLYoffset = imageLYoffset / scaleH; - frameLYoffset <<= 10; - - /* Get slice number corresponding to image Y */ - if (frameLYoffset >= 0){ - imageNumSlice = frameLYoffset / frameSliceLines; - } else { - imageNumSlice = (frameLYoffset - frameSliceLines + 1) / frameSliceLines; - } - - /* Calculate extent to which first draw slice is hidden at top of frame */ - frameLYslice = (frameLSliceL0 = frameSliceLines * imageNumSlice) & ~1023; - frameLHidden = frameLYoffset - frameLYslice; - imageLHidden = (frameLHidden >> 10) * scaleH; - - /* Calculate fram size of first draw slice */ - frameLSliceL0 = (frameLSliceL0 & 1023) + frameSliceLines - frameLHidden; - - /* Calculate image parameters for draw in midst of slice */ - imageT = (imageLHidden >> 5) & 31; - imageLHidden >>= 10; - imageISliceL0 = imageSliceLines - imageLHidden; - imageIY0 = - imageSliceLines * imageNumSlice + (imageYorig & ~31) / 32 + imageLHidden; - if (imageIY0 < 0) imageIY0 += (bg->s.imageH >> 2); - if (imageIY0 >= (bg->s.imageH >> 2)) imageIY0 -= (bg->s.imageH >> 2); - imageTop = (u32)bg->s.imagePtr; /* (u32.0) */ - imageSrcWsize = (imageSrcW / tmemShift) << 3; /* (u16.0) */ - imagePtrX0 = (imageX0 / tmemShift) << 3; /* (u16.0) */ - imagePtr = imageTop + imageSrcWsize * imageIY0 + imagePtrX0; + /* Get TMEM/image/frame line number that can be loaded at once */ + tmemSliceLines = tmemSize / tmemSliceWmax; /* (s15.0) */ + imageSliceLines = tmemSliceLines - flagBilerp; /* (s15.0) */ + frameSliceLines = (imageSliceLines << 20) / scaleH; /* (s21.10) */ - /* S invert process */ - imageS = imageX0 & tmemMask; /* (u10.5) */ - if (bg->s.imageFlip & G_BG_FLAG_FLIPS){ - imageS = - (imageS + imageW); - } -} + /* Line up image Y coordinate offset value with frame image */ + imageLYoffset = ((s32)imageY0 - imageYorig) << 5; + if (imageLYoffset < 0) + imageLYoffset -= (scaleH - 1); + frameLYoffset = imageLYoffset / scaleH; + frameLYoffset <<= 10; -{ - /*-------------------------------------------------* - Creating RDP command constant values - *-------------------------------------------------*/ - /* u32 rdpSetTimg_w0; - u32 rdpSetTile_w0; */ + /* Get slice number corresponding to image Y */ + if (frameLYoffset >= 0) { + imageNumSlice = frameLYoffset / frameSliceLines; + } else { + imageNumSlice = (frameLYoffset - frameSliceLines + 1) / frameSliceLines; + } + + /* Calculate extent to which first draw slice is hidden at top of frame */ + frameLYslice = (frameLSliceL0 = frameSliceLines * imageNumSlice) & ~1023; + frameLHidden = frameLYoffset - frameLYslice; + imageLHidden = (frameLHidden >> 10) * scaleH; + + /* Calculate fram size of first draw slice */ + frameLSliceL0 = (frameLSliceL0 & 1023) + frameSliceLines - frameLHidden; + + /* Calculate image parameters for draw in midst of slice */ + imageT = (imageLHidden >> 5) & 31; + imageLHidden >>= 10; + imageISliceL0 = imageSliceLines - imageLHidden; + imageIY0 = imageSliceLines * imageNumSlice + (imageYorig & ~31) / 32 + imageLHidden; + if (imageIY0 < 0) + imageIY0 += (bg->s.imageH >> 2); + if (imageIY0 >= (bg->s.imageH >> 2)) + imageIY0 -= (bg->s.imageH >> 2); + imageTop = (u32)bg->s.imagePtr; /* (u32.0) */ + imageSrcWsize = (imageSrcW / tmemShift) << 3; /* (u16.0) */ + imagePtrX0 = (imageX0 / tmemShift) << 3; /* (u16.0) */ + imagePtr = imageTop + imageSrcWsize * imageIY0 + imagePtrX0; + + /* S invert process */ + imageS = imageX0 & tmemMask; /* (u10.5) */ + if (bg->s.imageFlip & G_BG_FLAG_FLIPS) { + imageS = -(imageS + imageW); + } + } + + { + /*-------------------------------------------------* + Creating RDP command constant values + *-------------------------------------------------*/ + /* u32 rdpSetTimg_w0; + u32 rdpSetTile_w0; */ /* Addition 99/05/31(Y) */ #if BUILD_VERSION >= VERSION_K - if(bgflg==3){ - rdpSetTimg_w0 = (G_SETTIMG<<24)+0x180000+(imageSrcWsize>>1)-1; - rdpSetTile_w0 = (G_SETTILE<<24)+0x180000+(tmemSliceWmax<<9); - } - else{ - rdpSetTimg_w0 = (G_SETTIMG<<24)+0x100000+(imageSrcWsize>>1)-1; - rdpSetTile_w0 = (G_SETTILE<<24)+0x100000+(tmemSliceWmax<<9); - } + if (bgflg == 3) { + rdpSetTimg_w0 = (G_SETTIMG << 24) + 0x180000 + (imageSrcWsize >> 1) - 1; + rdpSetTile_w0 = (G_SETTILE << 24) + 0x180000 + (tmemSliceWmax << 9); + } else { + rdpSetTimg_w0 = (G_SETTIMG << 24) + 0x100000 + (imageSrcWsize >> 1) - 1; + rdpSetTile_w0 = (G_SETTILE << 24) + 0x100000 + (tmemSliceWmax << 9); + } #else - rdpSetTimg_w0 = (G_SETTIMG<<24)+0x100000+(imageSrcWsize>>1)-1; - rdpSetTile_w0 = (G_SETTILE<<24)+0x100000+(tmemSliceWmax<<9); + rdpSetTimg_w0 = (G_SETTIMG << 24) + 0x100000 + (imageSrcWsize >> 1) - 1; + rdpSetTile_w0 = (G_SETTILE << 24) + 0x100000 + (tmemSliceWmax << 9); #endif - /* [SetTile:7] */ - (*pkt)->words.w0 = rdpSetTile_w0; - (*pkt)->words.w1 = 0x07000000; - (*pkt)++; - /* [SetTile:0] */ - (*pkt)->words.w0 = rdpSetTile_w0; - ((u8 *)&((*pkt)->words.w0))[1] = (bg->s.imageFmt<<5)|(bg->s.imageSiz<<3); - (*pkt)->words.w1 = 0x0007c1f0 | (bg->s.imagePal<<20); - (*pkt)++; - /* [SetTileSize:7] */ - (*pkt)->words.w0 = (G_SETTILESIZE<<24)|0x000000; - (*pkt)->words.w1 = 0x00000000; - (*pkt)++; -} - -{ - s16 imageRemain; - s16 imageSliceH, frameSliceH; - - imageRemain = tmemSrcLines - imageIY0; - imageSliceH = imageISliceL0; - frameSliceCount = frameLSliceL0; + /* [SetTile:7] */ + (*pkt)->words.w0 = rdpSetTile_w0; + (*pkt)->words.w1 = 0x07000000; + (*pkt)++; + /* [SetTile:0] */ + (*pkt)->words.w0 = rdpSetTile_w0; + ((u8*)&((*pkt)->words.w0))[1] = (bg->s.imageFmt << 5) | (bg->s.imageSiz << 3); + (*pkt)->words.w1 = 0x0007c1f0 | (bg->s.imagePal << 20); + (*pkt)++; + /* [SetTileSize:7] */ + (*pkt)->words.w0 = (G_SETTILESIZE << 24) | 0x000000; + (*pkt)->words.w1 = 0x00000000; + (*pkt)++; + } - while(1){ + { + s16 imageRemain; + s16 imageSliceH, frameSliceH; - /* Calculate draw line number and determine whether to perform a draw */ - frameSliceH = frameSliceCount >> 10; - if (frameSliceH <= 0){ - /* If no draw to be performed */ - imageRemain -= imageSliceH; - if (imageRemain > 0){ - imagePtr += imageSrcWsize * imageSliceH; - } else { - imagePtr = imageTop - (imageRemain * imageSrcWsize) + imagePtrX0; - imageRemain += tmemSrcLines; - } - - } else { - /* If draw to be performed */ - s16 framePtrY1; - - frameSliceCount &= 1023; - if ((frameRemain -= frameSliceH) < 0){ - /* Determine final slice */ - frameSliceH += frameRemain; - imageSliceH += ((frameRemain * scaleH) >> 10) + 1; - if (imageSliceH > imageSliceLines) imageSliceH = imageSliceLines; - } - tmemLoad(pkt, &imagePtr, &imageRemain, imageSliceH, flagBilerp); - - /* Get draw frame range */ - framePtrY1 = framePtrY0 + frameSliceH; /* (s15.0) */ - - /* [PipeSync] Wait for end of preceding LOADTILE command */ - (*pkt)->words.w0 = (G_RDPPIPESYNC<<24); - (*pkt) ++; + imageRemain = tmemSrcLines - imageIY0; + imageSliceH = imageISliceL0; + frameSliceCount = frameLSliceL0; - /* Rectangle draw */ - /* Here an RSP command is created. With ucode an RDP command is created */ + while (1) { + + /* Calculate draw line number and determine whether to perform a draw */ + frameSliceH = frameSliceCount >> 10; + if (frameSliceH <= 0) { + /* If no draw to be performed */ + imageRemain -= imageSliceH; + if (imageRemain > 0) { + imagePtr += imageSrcWsize * imageSliceH; + } else { + imagePtr = imageTop - (imageRemain * imageSrcWsize) + imagePtrX0; + imageRemain += tmemSrcLines; + } + + } else { + /* If draw to be performed */ + s16 framePtrY1; + + frameSliceCount &= 1023; + if ((frameRemain -= frameSliceH) < 0) { + /* Determine final slice */ + frameSliceH += frameRemain; + imageSliceH += ((frameRemain * scaleH) >> 10) + 1; + if (imageSliceH > imageSliceLines) + imageSliceH = imageSliceLines; + } + tmemLoad(pkt, &imagePtr, &imageRemain, imageSliceH, flagBilerp); + + /* Get draw frame range */ + framePtrY1 = framePtrY0 + frameSliceH; /* (s15.0) */ + + /* [PipeSync] Wait for end of preceding LOADTILE command */ + (*pkt)->words.w0 = (G_RDPPIPESYNC << 24); + (*pkt)++; + + /* Rectangle draw */ + /* Here an RSP command is created. With ucode an RDP command is created */ #if 1 - { - /* [TextureRectangle] */ - (*pkt)->words.w0 = (G_TEXRECT<<24)|(frameX1<<12)|(framePtrY1<<2); - (*pkt)->words.w1 = (frameX0<<12)|(framePtrY0<<2); - (*pkt) ++; + { + /* [TextureRectangle] */ + (*pkt)->words.w0 = (G_TEXRECT << 24) | (frameX1 << 12) | (framePtrY1 << 2); + (*pkt)->words.w1 = (frameX0 << 12) | (framePtrY0 << 2); + (*pkt)++; #else - /* Code for checking slice division line */ - if (frameSliceH > 1){ - (*pkt)->words.w0 = (G_TEXRECT<<24)|(frameX1<<12)|(framePtrY1<<2)-4; - (*pkt)->words.w1 = (frameX0<<12)|(framePtrY0<<2); - (*pkt) ++; + /* Code for checking slice division line */ + if (frameSliceH > 1) { + (*pkt)->words.w0 = (G_TEXRECT << 24) | (frameX1 << 12) | (framePtrY1 << 2) - 4; + (*pkt)->words.w1 = (frameX0 << 12) | (framePtrY0 << 2); + (*pkt)++; #endif - -#if 0 /* At RDP command creation time */ + +#if 0 /* At RDP command creation time */ (*pkt)->words.w0 = (imageS<<16) | imageT; (*pkt)->words.w1 = (scaleW<<16) | scaleH; -#else /* At RSP command creation time */ - (*pkt)->words.w0 = (G_RDPHALF_1<<24); - (*pkt)->words.w1 = (imageS<<16) | imageT; - (*pkt) ++; - (*pkt)->words.w0 = (G_RDPHALF_2<<24); - (*pkt)->words.w1 = (scaleW<<16) | scaleH; +#else /* At RSP command creation time */ + (*pkt)->words.w0 = (G_RDPHALF_1 << 24); + (*pkt)->words.w1 = (imageS << 16) | imageT; + (*pkt)++; + (*pkt)->words.w0 = (G_RDPHALF_2 << 24); + (*pkt)->words.w1 = (scaleW << 16) | scaleH; #endif - (*pkt) ++; - } + (*pkt)++; + } - /* Update region */ - framePtrY0 = framePtrY1; + /* Update region */ + framePtrY0 = framePtrY1; - /* End if no more undrawn line numbers for frame */ - if (frameRemain <= 0){ - return; - } + /* End if no more undrawn line numbers for frame */ + if (frameRemain <= 0) { + return; + } + } + frameSliceCount += frameSliceLines; + imageSliceH = imageSliceLines; + imageT = 0; + } } - frameSliceCount += frameSliceLines; - imageSliceH = imageSliceLines; - imageT = 0; - } -} } /*======== End of us2dex_emu.c ========*/ diff --git a/src/gu/usprite.c b/src/gu/usprite.c index a10ed34..0d94be9 100644 --- a/src/gu/usprite.c +++ b/src/gu/usprite.c @@ -13,27 +13,16 @@ #include "gbi.h" -void guSprite2DInit(uSprite *SpritePointer, - void *SourceImagePointer, - void *TlutPointer, - short Stride, - short SubImageWidth, - short SubImageHeight, - char SourceImageType, - char SourceImageBitSize, - short SourceImageOffsetS, - short SourceImageOffsetT) -{ - SpritePointer->s.SourceImagePointer = SourceImagePointer; - SpritePointer->s.TlutPointer = TlutPointer; - SpritePointer->s.Stride = Stride; - SpritePointer->s.SubImageWidth = SubImageWidth; - SpritePointer->s.SubImageHeight = SubImageHeight; - SpritePointer->s.SourceImageType = SourceImageType; - SpritePointer->s.SourceImageBitSize = SourceImageBitSize; - SpritePointer->s.SourceImageOffsetS = SourceImageOffsetS; - SpritePointer->s.SourceImageOffsetT = SourceImageOffsetT; -} - - - +void guSprite2DInit(uSprite* SpritePointer, void* SourceImagePointer, void* TlutPointer, short Stride, + short SubImageWidth, short SubImageHeight, char SourceImageType, char SourceImageBitSize, + short SourceImageOffsetS, short SourceImageOffsetT) { + SpritePointer->s.SourceImagePointer = SourceImagePointer; + SpritePointer->s.TlutPointer = TlutPointer; + SpritePointer->s.Stride = Stride; + SpritePointer->s.SubImageWidth = SubImageWidth; + SpritePointer->s.SubImageHeight = SubImageHeight; + SpritePointer->s.SourceImageType = SourceImageType; + SpritePointer->s.SourceImageBitSize = SourceImageBitSize; + SpritePointer->s.SourceImageOffsetS = SourceImageOffsetS; + SpritePointer->s.SourceImageOffsetT = SourceImageOffsetT; +} diff --git a/src/io/aigetlen.c b/src/io/aigetlen.c index aadf891..1060730 100644 --- a/src/io/aigetlen.c +++ b/src/io/aigetlen.c @@ -6,8 +6,8 @@ /** * Returns the number of bytes remaining in a currently ongoing audio DMA. * - * Note that audio DMA is double-buffered, a DMA can be queued while another is in-progress. This only returns - * information about the currently in-progress DMA. + * Note that audio DMA is double-buffered, a DMA can be queued while another is in-progress. This only + * returns information about the currently in-progress DMA. */ u32 osAiGetLength(void) { return IO_READ(AI_LEN_REG); diff --git a/src/io/aisetfreq.c b/src/io/aisetfreq.c index 2b0efca..4b2c313 100644 --- a/src/io/aisetfreq.c +++ b/src/io/aisetfreq.c @@ -41,14 +41,16 @@ s32 osAiSetFrequency(u32 frequency) { f = osViClock / (float)frequency + .5f; dacRate = f; - // Upcoming division by 66. If dacRate is smaller than 2 * 66 = 132, bitrate will be 1 and AI_BITRATE_REG will be - // programmed with 0, which results in no audio output. Return -1 to indicate an unusable frequency. + // Upcoming division by 66. If dacRate is smaller than 2 * 66 = 132, bitrate will be 1 and + // AI_BITRATE_REG will be programmed with 0, which results in no audio output. Return -1 to indicate + // an unusable frequency. if (dacRate < AI_MIN_DAC_RATE) { return -1; } - // Calculate the largest "bitrate" (ABUS clock half period, "aclockhp") supported for this dacrate. These two - // quantities must satisfy (dperiod + 1) >= 66 * (aclockhp + 1), here this is taken as equality. + // Calculate the largest "bitrate" (ABUS clock half period, "aclockhp") supported for this dacrate. + // These two quantities must satisfy (dperiod + 1) >= 66 * (aclockhp + 1), here this is taken as + // equality. bitRate = dacRate / 66; // Clamp to max value if (bitRate > AI_MAX_BIT_RATE) { @@ -60,7 +62,7 @@ s32 osAiSetFrequency(u32 frequency) { #if BUILD_VERSION < VERSION_J IO_WRITE(AI_CONTROL_REG, AI_CONTROL_DMA_ON); #endif - // Return the true playback frequency (frequency = vid_clock / (dperiod + 1)), which may differ from the target - // frequency. + // Return the true playback frequency (frequency = vid_clock / (dperiod + 1)), which may differ from + // the target frequency. return osViClock / (s32)dacRate; } diff --git a/src/io/aisetnextbuf.c b/src/io/aisetnextbuf.c index 78634a9..2961d30 100644 --- a/src/io/aisetnextbuf.c +++ b/src/io/aisetnextbuf.c @@ -7,12 +7,14 @@ #ident "$Revision: 1.17 $" /** - * Submits an audio buffer to be consumed by the Audio DAC. The audio interface can queue a second DMA while another - * is in progress and automatically begin the next one as soon as the current DMA completes. If there is already a - * second DMA queued (DMA is full), -1 is returned to indicate the buffer could not be submitted. + * Submits an audio buffer to be consumed by the Audio DAC. The audio interface can queue a second DMA + * while another is in progress and automatically begin the next one as soon as the current DMA + * completes. If there is already a second DMA queued (DMA is full), -1 is returned to indicate the + * buffer could not be submitted. * * @param bufPtr Next audio buffer. Must be an 8-byte aligned KSEG0 (0x80XXXXXX) address. - * @param size Length of next audio buffer in bytes, maximum size 0x40000 bytes / 256 KiB. Should be a multiple of 8. + * @param size Length of next audio buffer in bytes, maximum size 0x40000 bytes / 256 KiB. Should be a + * multiple of 8. * @return 0 if the DMA was enqueued successfully, -1 if the DMA could not yet be queued. */ s32 osAiSetNextBuffer(void* bufPtr, u32 size) { @@ -50,9 +52,10 @@ s32 osAiSetNextBuffer(void* bufPtr, u32 size) { } #if BUILD_VERSION < VERSION_J - //! @bug The __osAiDeviceBusy call should be above the hardware bug workaround to ensure that it was only - //! performed when a transfer was guaranteed to start. If this condition passes and this function returns without - //! submitting a buffer for DMA, the code above will lose track of when to apply the workaround. + //! @bug The __osAiDeviceBusy call should be above the hardware bug workaround to ensure that it was + //! only performed when a transfer was guaranteed to start. If this condition passes and this + //! function returns without submitting a buffer for DMA, the code above will lose track of when to + //! apply the workaround. if (__osAiDeviceBusy()) { return -1; } diff --git a/src/io/conteepread.c b/src/io/conteepread.c index 502ab13..a2f3839 100644 --- a/src/io/conteepread.c +++ b/src/io/conteepread.c @@ -51,8 +51,7 @@ s32 osEepromRead(OSMesgQueue* mq, u8 address, u8* buffer) { return ret; } #else - if (ret != 0) - { + if (ret != 0) { __osSiRelAccess(); return CONT_NO_RESPONSE_ERROR; } else { diff --git a/src/io/contpfs.c b/src/io/contpfs.c index 8574de1..8bac6e3 100644 --- a/src/io/contpfs.c +++ b/src/io/contpfs.c @@ -213,7 +213,7 @@ s32 __osGetId(OSPfs* pfs) { bcopy(id, pfs->id, BLOCKSIZE); #else for (k = 0; k < ARRLEN(pfs->id); k++) { - pfs->id[k] = ((u8 *)id)[k]; + pfs->id[k] = ((u8*)id)[k]; } #endif pfs->version = id->version; @@ -334,12 +334,11 @@ s32 __osPfsRWInode(OSPfs* pfs, __OSInode* inode, u8 flag, u8 bank) { } } #if BUILD_VERSION < VERSION_J - else - { - for (j = 0; j < PFS_ONE_PAGE; j++) - { - addr = ((u8 *)inode->inode_page + j * 32); - ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->minode_table + bank * PFS_ONE_PAGE + j, addr, FALSE); + else { + for (j = 0; j < PFS_ONE_PAGE; j++) { + addr = ((u8*)inode->inode_page + j * 32); + ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->minode_table + bank * PFS_ONE_PAGE + j, addr, + FALSE); } } #endif diff --git a/src/io/contquery.c b/src/io/contquery.c index d3c06fc..80dc788 100644 --- a/src/io/contquery.c +++ b/src/io/contquery.c @@ -3,8 +3,8 @@ #include "PRinternal/siint.h" /** - * Starts to read the values for SI device status and type which are connected to the controller port and joyport - * connector. + * Starts to read the values for SI device status and type which are connected to the controller port + * and joyport connector. */ s32 osContStartQuery(OSMesgQueue* mq) { s32 ret = 0; diff --git a/src/io/contramread.c b/src/io/contramread.c index 99c8332..c3fcbff 100644 --- a/src/io/contramread.c +++ b/src/io/contramread.c @@ -24,7 +24,9 @@ s32 __osContRamRead(OSMesgQueue* mq, int channel, u16 address, u8* buffer) { __osContLastCmd = CONT_CMD_READ_PAK; __osPfsLastChannel = channel; - for (i = 0; i < channel; i++) { *ptr++ = CONT_CMD_REQUEST_STATUS; } + for (i = 0; i < channel; i++) { + *ptr++ = CONT_CMD_REQUEST_STATUS; + } __osPfsPifRam.pifstatus = CONT_CMD_EXE; @@ -46,7 +48,6 @@ s32 __osContRamRead(OSMesgQueue* mq, int channel, u16 address, u8* buffer) { READFORMAT(ptr)->address = (address << 0x5) | __osContAddressCrc(address); #endif - ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); osRecvMesg(mq, NULL, OS_MESG_BLOCK); @@ -109,14 +110,14 @@ s32 __osContRamRead(OSMesgQueue* mq, int channel, u16 address, u8* buffer) { u8 c = __osContDataCrc((u8*)&ramreadformat.data); if (c != ramreadformat.datacrc) { ret = __osPfsGetStatus(mq, channel); - + if (ret != 0) { __osSiRelAccess(); return ret; } - + ret = PFS_ERR_CONTRFAIL; - } else { + } else { for (i = 0; i < ARRLEN(ramreadformat.data); i++) { *buffer++ = ramreadformat.data[i]; } @@ -132,11 +133,11 @@ s32 __osContRamRead(OSMesgQueue* mq, int channel, u16 address, u8* buffer) { } static void __osPackRamReadData(int channel, u16 address) { - u8 *ptr; + u8* ptr; __OSContRamReadFormat ramreadformat; int i; - ptr = (u8 *)__osPfsPifRam.ramarray; + ptr = (u8*)__osPfsPifRam.ramarray; __osPfsPifRam.pifstatus = CONT_CMD_EXE; ramreadformat.dummy = CONT_CMD_NOP; ramreadformat.txsize = CONT_CMD_READ_PAK_TX; @@ -144,21 +145,20 @@ static void __osPackRamReadData(int channel, u16 address) { ramreadformat.cmd = CONT_CMD_READ_PAK; ramreadformat.address = (address << 0x5) | __osContAddressCrc(address); ramreadformat.datacrc = CONT_CMD_NOP; - + for (i = 0; i < ARRLEN(ramreadformat.data); i++) { ramreadformat.data[i] = CONT_CMD_NOP; } - + if (channel != 0) { for (i = 0; i < channel; i++) { *ptr++ = CONT_CMD_REQUEST_STATUS; } } - - *(__OSContRamReadFormat *)ptr = ramreadformat; + + *(__OSContRamReadFormat*)ptr = ramreadformat; ptr += sizeof(__OSContRamReadFormat); ptr[0] = CONT_CMD_END; } #endif - diff --git a/src/io/contramwrite.c b/src/io/contramwrite.c index 0d79701..e842779 100644 --- a/src/io/contramwrite.c +++ b/src/io/contramwrite.c @@ -29,7 +29,9 @@ s32 __osContRamWrite(OSMesgQueue* mq, int channel, u16 address, u8* buffer, int __osContLastCmd = CONT_CMD_WRITE_PAK; __osPfsLastChannel = channel; - for (i = 0; i < channel; i++) { *ptr++ = CONT_CMD_REQUEST_STATUS; } + for (i = 0; i < channel; i++) { + *ptr++ = CONT_CMD_REQUEST_STATUS; + } __osPfsPifRam.pifstatus = CONT_CMD_EXE; @@ -81,7 +83,7 @@ s32 __osContRamWrite(OSMesgQueue* mq, int channel, u16 address, u8* buffer, int } #else -static void __osPackRamWriteData(int channel, u16 address, u8 *buffer); +static void __osPackRamWriteData(int channel, u16 address, u8* buffer); s32 __osContRamWrite(OSMesgQueue* mq, int channel, u16 address, u8* buffer, int force) { s32 ret = 0; @@ -118,12 +120,12 @@ s32 __osContRamWrite(OSMesgQueue* mq, int channel, u16 address, u8* buffer, int if (ret == 0) { if (__osContDataCrc(buffer) != ramreadformat.datacrc) { ret = __osPfsGetStatus(mq, channel); - + if (ret != 0) { __osSiRelAccess(); return ret; } - + ret = PFS_ERR_CONTRFAIL; } } else { @@ -136,12 +138,12 @@ s32 __osContRamWrite(OSMesgQueue* mq, int channel, u16 address, u8* buffer, int return ret; } -static void __osPackRamWriteData(int channel, u16 address, u8 *buffer) { - u8 *ptr; +static void __osPackRamWriteData(int channel, u16 address, u8* buffer) { + u8* ptr; __OSContRamReadFormat ramreadformat; int i; - ptr = (u8 *)__osPfsPifRam.ramarray; + ptr = (u8*)__osPfsPifRam.ramarray; __osPfsPifRam.pifstatus = CONT_CMD_EXE; ramreadformat.dummy = CONT_CMD_NOP; ramreadformat.txsize = CONT_CMD_WRITE_PAK_TX; @@ -149,16 +151,18 @@ static void __osPackRamWriteData(int channel, u16 address, u8 *buffer) { ramreadformat.cmd = CONT_CMD_WRITE_PAK; ramreadformat.address = (address << 0x5) | __osContAddressCrc(address); ramreadformat.datacrc = CONT_CMD_NOP; - + for (i = 0; i < ARRLEN(ramreadformat.data); i++) { ramreadformat.data[i] = *buffer++; } - + if (channel != 0) { - for (i = 0; i < channel; i++) { *ptr++ = CONT_CMD_REQUEST_STATUS; } + for (i = 0; i < channel; i++) { + *ptr++ = CONT_CMD_REQUEST_STATUS; + } } - - *(__OSContRamReadFormat *)ptr = ramreadformat; + + *(__OSContRamReadFormat*)ptr = ramreadformat; ptr += sizeof(__OSContRamReadFormat); ptr[0] = CONT_CMD_END; } diff --git a/src/io/contsetch.c b/src/io/contsetch.c index 73a1ac1..2f7a33f 100644 --- a/src/io/contsetch.c +++ b/src/io/contsetch.c @@ -3,8 +3,8 @@ #include "PRinternal/siint.h" /* - * This function specifies the number of devices for the functions to access when those functions access to multiple - * direct SI devices. + * This function specifies the number of devices for the functions to access when those functions access + * to multiple direct SI devices. */ s32 osContSetCh(u8 ch) { s32 ret = 0; diff --git a/src/io/crc.c b/src/io/crc.c index bb6eb20..207ffe4 100644 --- a/src/io/crc.c +++ b/src/io/crc.c @@ -6,67 +6,76 @@ * * General * === - * - CRC (Cyclic Redundancy Check) is a way of verifying that no errors were introduced in transmitted data. + * - CRC (Cyclic Redundancy Check) is a way of verifying that no errors were introduced in transmitted + * data. * - It reads the entire message and generates a check number that is appended to it. - * - A CRC is specified by the length `n` of the check number and a number (called the generator) smaller than `1 << n`. - * - Different generators have different error-checking capabilities. The choice of a generator is a sophisticated - * mathematical problem. + * - A CRC is specified by the length `n` of the check number and a number (called the generator) + * smaller than `1 << n`. + * - Different generators have different error-checking capabilities. The choice of a generator is a + * sophisticated mathematical problem. * * Mathematical basis * === - * - The algorithm is based on division of polynomials. The polynomials have coefficients in the field with two - * elements, 0 and 1, with addition given by XOR and multiplication by AND (it turns out this really is a field). - * Subtraction is the same as addition. - * - There is a one-to-one correspondence between binary polynomials and binary numbers: just evaluate the polynomial at - * 2, or write down an \f$ X^k \f$ corresponding to each `1 << k` the number is composed of. - * - The message bits `m{L}m{L-1}...m{1}m{0}` correspond to a polynomial \f$ m(X) = m_L X^L + m_{L-1} X^{L-1} + \dotsb + - * m_1 X^1 + m_0 X^0 \f$. We multiply this by \f$ X^n \f$ to make a space to insert the remainder at the end; this new - * polynomial will be the dividend. - * - The generator `p{n-1}p{n-2}...p{1}p{0}` corresponds to a polynomial \f$ p(X) = X^n + p_{n-1} X^{n-1} + \dotsb + p_1 - * X^1 + p_0 X^0 \f$: the leading term is omitted in the binary description because it is always \f$ X^n \f$. The - * generator polynomial is the divisor. - * - The usual division algorithm is followed: we look along the dividend until we see a nonzero coefficient, then - * subtract an appropriate multiple of the divisor to cancel it out. We repeat this until we reach the end of the - * number. - * - Arithmetic in the field with two elements is particularly simple: subtraction is identical to addition, so also - * given by XOR, and the only multipliers required for subtracting the divisor are \f$ X^k \f$. + * - The algorithm is based on division of polynomials. The polynomials have coefficients in the field + * with two elements, 0 and 1, with addition given by XOR and multiplication by AND (it turns out this + * really is a field). Subtraction is the same as addition. + * - There is a one-to-one correspondence between binary polynomials and binary numbers: just evaluate + * the polynomial at 2, or write down an \f$ X^k \f$ corresponding to each `1 << k` the number is + * composed of. + * - The message bits `m{L}m{L-1}...m{1}m{0}` correspond to a polynomial \f$ m(X) = m_L X^L + m_{L-1} + * X^{L-1} + \dotsb + m_1 X^1 + m_0 X^0 \f$. We multiply this by \f$ X^n \f$ to make a space to insert + * the remainder at the end; this new polynomial will be the dividend. + * - The generator `p{n-1}p{n-2}...p{1}p{0}` corresponds to a polynomial \f$ p(X) = X^n + p_{n-1} + * X^{n-1} + \dotsb + p_1 X^1 + p_0 X^0 \f$: the leading term is omitted in the binary description + * because it is always \f$ X^n \f$. The generator polynomial is the divisor. + * - The usual division algorithm is followed: we look along the dividend until we see a nonzero + * coefficient, then subtract an appropriate multiple of the divisor to cancel it out. We repeat this + * until we reach the end of the number. + * - Arithmetic in the field with two elements is particularly simple: subtraction is identical to + * addition, so also given by XOR, and the only multipliers required for subtracting the divisor are \f$ + * X^k \f$. * - After applying the algorithm, the output is a polynomial \f$ R(X) \f$ so that we have * \f[ m(X) X^n = Q(X) p(X) + R(X) \f] * (\f$ R(X) \f$ is the *remainder after dividing by \f$ p(X) \f$*). - * - Therefore, \f$ m(X) X^n - R(X) \f$ is divisible by the generator polynomial. This means that if we append the - * binary number corresponding to \f$ R(X) \f$ to the message and rerun the algorithm, we will get 0 if no errors have - * been introduced. + * - Therefore, \f$ m(X) X^n - R(X) \f$ is divisible by the generator polynomial. This means that if we + * append the binary number corresponding to \f$ R(X) \f$ to the message and rerun the algorithm, we + * will get 0 if no errors have been introduced. * * * Implementation * === - * - We translate the binary polynomials to binary numbers by evaluating them at 2. The leading term in the generator - * polynomial is always \f$ X^n \f$, so we discard it to save space. In the binary field, subtraction is the same as - * addition, and given by XOR. Multiplication by \f$ X \f$ is given by shifting left. - * - Instead of fixing the message and moving the divisor polynomial right, we scan the message from the most - * significant digit, adding it to the end of the return value, (that is, for 1s, we shift and add 1, for 0s we just - * shift, effectively using the return value as a shift register). - * - When the return value has a 1 in the nth position (corresponding to the leading term in the generator polynomial), - * we binary-subtract (i.e. XOR) the return value with the generator polynomial's number. + * - We translate the binary polynomials to binary numbers by evaluating them at 2. The leading term in + * the generator polynomial is always \f$ X^n \f$, so we discard it to save space. In the binary field, + * subtraction is the same as addition, and given by XOR. Multiplication by \f$ X \f$ is given by + * shifting left. + * - Instead of fixing the message and moving the divisor polynomial right, we scan the message from the + * most significant digit, adding it to the end of the return value, (that is, for 1s, we shift and add + * 1, for 0s we just shift, effectively using the return value as a shift register). + * - When the return value has a 1 in the nth position (corresponding to the leading term in the + * generator polynomial), we binary-subtract (i.e. XOR) the return value with the generator polynomial's + * number. * - This is repeated until we reach the end of the message. - * - Finally, to take into account the final multiplication by \f$ X^n \f$, we run another loop, which acts like we - * passed \f$ n \f$ more digits in the message that are all zero. Remember this gives us the extra space at the end for - * the check digits to be added. + * - Finally, to take into account the final multiplication by \f$ X^n \f$, we run another loop, which + * acts like we passed \f$ n \f$ more digits in the message that are all zero. Remember this gives us + * the extra space at the end for the check digits to be added. * * - * - To specify a CRC, at minimum we need the length of the check (i.e. the degree of the generator polynomial), \f$ n - * \f$, and the rest of the generator polynomial. This is usually expressed in the binary form, written as hex for - * compactness. Algorithms may also reverse or invert certain parts of the data or check to improve particular aspects - * of the algorithm, but the libultra functions use the simplest version. + * - To specify a CRC, at minimum we need the length of the check (i.e. the degree of the generator + * polynomial), \f$ n + * \f$, and the rest of the generator polynomial. This is usually expressed in the binary form, written + * as hex for compactness. Algorithms may also reverse or invert certain parts of the data or check to + * improve particular aspects of the algorithm, but the libultra functions use the simplest version. * * * Resources * === - * - Wikipedia: [Cyclic redundancy check](https://en.wikipedia.org/wiki/Cyclic_redundancy_check), and more specifically - * [Computation of cyclic redundancy checks](https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks) - * - Ben Eater has two videos on CRCs, the last two linked on [Error Detection | Ben Eater](https://eater.net/crc) - * - A page that specifically describes the same shift-register-style algorithms as libultra uses: [Understanding and - * implementing CRC (Cyclic Redundancy Check) calculation + * - Wikipedia: [Cyclic redundancy check](https://en.wikipedia.org/wiki/Cyclic_redundancy_check), and + * more specifically [Computation of cyclic redundancy + * checks](https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks) + * - Ben Eater has two videos on CRCs, the last two linked on [Error Detection | Ben + * Eater](https://eater.net/crc) + * - A page that specifically describes the same shift-register-style algorithms as libultra uses: + * [Understanding and implementing CRC (Cyclic Redundancy Check) calculation * ](http://www.sunshine2k.de/articles/coding/crc/understanding_crc.html) */ #include "PR/os_internal.h" @@ -74,16 +83,16 @@ #if BUILD_VERSION >= VERSION_J #define ADDRESS_CRC_MESSAGE_LENGTH 10 -#define ADDRESS_CRC_LENGTH 5 -#define ADDRESS_CRC_GENERATOR 0x15 -#define ADDRESS_CRC_MASK ((1 << ADDRESS_CRC_LENGTH) - 1) +#define ADDRESS_CRC_LENGTH 5 +#define ADDRESS_CRC_GENERATOR 0x15 +#define ADDRESS_CRC_MASK ((1 << ADDRESS_CRC_LENGTH) - 1) /** * CRC-5 with the generating polynomial \f$ x^5 + x^4 + x^2 + 1 \f$, AKA 0x15 = 0b(1)1 0101. * It only works on the bits from 0x7FF = 11 11111111, i.e. 10 bits. * - * Usually used as __osContAddressCrc(addr) | (addr << 5) to add the CRC to the end. The overall length of 10 + 5 bits - * allows the address + CRC to fit into one s16. + * Usually used as __osContAddressCrc(addr) | (addr << 5) to add the CRC to the end. The overall length + * of 10 + 5 bits allows the address + CRC to fit into one s16. * * `addr` is the address of a block in the mempak, only valid up to 0x7FF. */ @@ -123,8 +132,8 @@ u8 __osContAddressCrc(u16 addr) { } #define DATA_CRC_MESSAGE_BYTES 32 -#define DATA_CRC_LENGTH 8 -#define DATA_CRC_GENERATOR 0x85 +#define DATA_CRC_LENGTH 8 +#define DATA_CRC_GENERATOR 0x85 /** * CRC-8 with generating polynomial \f$ x^8 + x^7 + x^2 + 1 \f$, AKA 0x85 = 0b(1) 1000 0101. @@ -171,7 +180,7 @@ u8 __osContAddressCrc(u16 addr) { u8 temp = 0; u8 temp2; int i; - + for (i = 0; i < 16; i++) { temp2 = (temp & 0x10) ? 0x15 : 0; @@ -180,28 +189,28 @@ u8 __osContAddressCrc(u16 addr) { addr <<= 1; temp ^= temp2; } - + return temp & 0x1f; } -u8 __osContDataCrc(u8 *data) { +u8 __osContDataCrc(u8* data) { u8 temp = 0; u8 temp2; int i; int j; - + for (i = 0; i <= 32; i++) { for (j = 7; j > -1; j--) { temp2 = (temp & 0x80) ? 0x85 : 0; - + temp <<= 1; - + if (i == 32) { temp &= -1; } else { temp |= ((*data & (1 << j)) ? 1 : 0); } - + temp ^= temp2; } data++; diff --git a/src/io/devmgr.c b/src/io/devmgr.c index 70b26cc..c0d78bb 100644 --- a/src/io/devmgr.c +++ b/src/io/devmgr.c @@ -17,9 +17,9 @@ void __osDevMgrMain(void* args) { while (TRUE) { osRecvMesg(dm->cmdQueue, (OSMesg)&mb, OS_MESG_BLOCK); - if (mb->piHandle != NULL && mb->piHandle->type == DEVICE_TYPE_64DD && - (mb->piHandle->transferInfo.cmdType == LEO_CMD_TYPE_0 || - mb->piHandle->transferInfo.cmdType == LEO_CMD_TYPE_1)) { + if (mb->piHandle != NULL && mb->piHandle->type == DEVICE_TYPE_64DD + && (mb->piHandle->transferInfo.cmdType == LEO_CMD_TYPE_0 + || mb->piHandle->transferInfo.cmdType == LEO_CMD_TYPE_1)) { __OSBlockInfo* blockInfo; __OSTranxInfo* info; info = &mb->piHandle->transferInfo; diff --git a/src/io/driverominit.c b/src/io/driverominit.c index d3e1bcf..bfa9f76 100644 --- a/src/io/driverominit.c +++ b/src/io/driverominit.c @@ -4,7 +4,7 @@ OSPiHandle DriveRomHandle ALIGNED(0x8); -OSPiHandle *osDriveRomInit(void) { +OSPiHandle* osDriveRomInit(void) { u32 saveMask; if (DriveRomHandle.baseAddress == PHYS_TO_K1(PI_DOM1_ADDR1)) { diff --git a/src/io/epirawread.c b/src/io/epirawread.c index f6d446c..758da2d 100644 --- a/src/io/epirawread.c +++ b/src/io/epirawread.c @@ -2,25 +2,6 @@ #include "PR/ultraerror.h" #include "assert.h" - - - - - - - - - - - - - - - - - - - // Adjust line numbers to match assert #if BUILD_VERSION < VERSION_J #line 28 diff --git a/src/io/leodiskinit.c b/src/io/leodiskinit.c index cd74e77..81c67b9 100644 --- a/src/io/leodiskinit.c +++ b/src/io/leodiskinit.c @@ -5,9 +5,9 @@ #include "PRinternal/macros.h" OSPiHandle LeoDiskHandle ALIGNED(0x8); -OSPiHandle *__osDiskHandle; +OSPiHandle* __osDiskHandle; -OSPiHandle *osLeoDiskInit(void) { +OSPiHandle* osLeoDiskInit(void) { u32 saveMask; LeoDiskHandle.type = DEVICE_TYPE_64DD; diff --git a/src/io/leointerrupt.c b/src/io/leointerrupt.c index a94146e..651607b 100644 --- a/src/io/leointerrupt.c +++ b/src/io/leointerrupt.c @@ -4,7 +4,7 @@ #include "PRinternal/piint.h" #include "PRinternal/macros.h" -extern OSPiHandle *__osDiskHandle; +extern OSPiHandle* __osDiskHandle; u8 leoDiskStack[OS_PIM_STACKSIZE] ALIGNED(0x10); @@ -15,12 +15,12 @@ s32 __osLeoInterrupt(void) { u32 stat = 0; volatile u32 pi_stat; u32 bm_stat; - __OSTranxInfo *info = &__osDiskHandle->transferInfo; - __OSBlockInfo *blockInfo = &info->block[info->blockNum]; + __OSTranxInfo* info = &__osDiskHandle->transferInfo; + __OSBlockInfo* blockInfo = &info->block[info->blockNum]; pi_stat = IO_READ(PI_STATUS_REG); if (pi_stat & PI_STATUS_DMA_BUSY) { - __OSGlobalIntMask = __OSGlobalIntMask & ~SR_IBIT4; //cart interrupt + __OSGlobalIntMask = __OSGlobalIntMask & ~SR_IBIT4; // cart interrupt blockInfo->errStatus = LEO_ERROR_29; __osLeoResume(); return 1; @@ -63,7 +63,7 @@ s32 __osLeoInterrupt(void) { __osLeoResume(); return 1; } else { - blockInfo->dramAddr = (void *)((u32)blockInfo->dramAddr + blockInfo->sectorSize); + blockInfo->dramAddr = (void*)((u32)blockInfo->dramAddr + blockInfo->sectorSize); info->sectorNum++; __osEPiRawStartDma(__osDiskHandle, OS_WRITE, LEO_SECTOR_BUFF, blockInfo->dramAddr, blockInfo->sectorSize); return 1; @@ -82,7 +82,7 @@ s32 __osLeoInterrupt(void) { return 1; } } else { - blockInfo->dramAddr = (void *)((u32)blockInfo->dramAddr + blockInfo->sectorSize); + blockInfo->dramAddr = (void*)((u32)blockInfo->dramAddr + blockInfo->sectorSize); } bm_stat = IO_READ(LEO_BM_STATUS); @@ -110,7 +110,7 @@ s32 __osLeoInterrupt(void) { if (info->transferMode == LEO_TRACK_MODE && info->blockNum == 0) { info->blockNum = 1; info->sectorNum = -1; - info->block[1].dramAddr = (void *)((u32)info->block[1].dramAddr - info->block[1].sectorSize); + info->block[1].dramAddr = (void*)((u32)info->block[1].dramAddr - info->block[1].sectorSize); blockInfo->errStatus = LEO_ERROR_22; } else { @@ -125,9 +125,10 @@ s32 __osLeoInterrupt(void) { } if (info->sectorNum == -1 && info->transferMode == LEO_TRACK_MODE && info->blockNum == 1) { - __OSBlockInfo *bptr = &info->block[0]; + __OSBlockInfo* bptr = &info->block[0]; if (bptr->C1ErrNum == 0) { - if (((u32 *)bptr->C2Addr)[0] | ((u32 *)bptr->C2Addr)[1] | ((u32 *)bptr->C2Addr)[2] | ((u32 *)bptr->C2Addr)[3]) { + if (((u32*)bptr->C2Addr)[0] | ((u32*)bptr->C2Addr)[1] | ((u32*)bptr->C2Addr)[2] + | ((u32*)bptr->C2Addr)[3]) { bptr->errStatus = LEO_ERROR_24; __osLeoAbnormalResume(); return 1; @@ -163,9 +164,9 @@ s32 __osLeoInterrupt(void) { } static void __osLeoAbnormalResume(void) { - __OSTranxInfo *info = &__osDiskHandle->transferInfo; + __OSTranxInfo* info = &__osDiskHandle->transferInfo; u32 pi_stat; - + WAIT_ON_IOBUSY(pi_stat); IO_WRITE(LEO_BM_CTL, info->bmCtlShadow | LEO_BM_CTL_RESET); WAIT_ON_IOBUSY(pi_stat); @@ -176,10 +177,10 @@ static void __osLeoAbnormalResume(void) { } static void __osLeoResume(void) { - __OSEventState *es = &__osEventStateTab[OS_EVENT_PI]; - OSMesgQueue *mq = es->messageQueue; + __OSEventState* es = &__osEventStateTab[OS_EVENT_PI]; + OSMesgQueue* mq = es->messageQueue; s32 last; - + if (mq == NULL || MQ_IS_FULL(mq)) { return; } @@ -187,7 +188,7 @@ static void __osLeoResume(void) { last = (mq->first + mq->validCount) % mq->msgCount; mq->msg[last] = es->message; mq->validCount++; - + if (mq->mtqueue->next != NULL) { __osEnqueueThread(&__osRunQueue, __osPopThread(&mq->mtqueue)); } diff --git a/src/io/motor.c b/src/io/motor.c index b859aaf..61eadf9 100644 --- a/src/io/motor.c +++ b/src/io/motor.c @@ -138,15 +138,15 @@ OSPifRam _MotorStopData[MAXCONTROLLERS] ALIGNED(0x8); OSPifRam _MotorStartData[MAXCONTROLLERS] ALIGNED(0x8); u8 _motorstopbuf[32] ALIGNED(0x8); u8 _motorstartbuf[32] ALIGNED(0x8); -u32 __osMotorinitialized[MAXCONTROLLERS] = {0, 0, 0, 0}; +u32 __osMotorinitialized[MAXCONTROLLERS] = { 0, 0, 0, 0 }; -s32 osMotorStop(OSPfs *pfs) { +s32 osMotorStop(OSPfs* pfs) { int i; s32 ret; - u8 *ptr; + u8* ptr; __OSContRamReadFormat ramreadformat; - ptr = (u8 *)&__osPfsPifRam; + ptr = (u8*)&__osPfsPifRam; if (!__osMotorinitialized[pfs->channel]) { return PFS_ERR_INVALID; @@ -159,7 +159,7 @@ s32 osMotorStop(OSPfs *pfs) { osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK); ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam); osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK); - ptr = (u8 *)&__osPfsPifRam; + ptr = (u8*)&__osPfsPifRam; if (pfs->channel != 0) { for (i = 0; i < pfs->channel; i++) { @@ -167,7 +167,7 @@ s32 osMotorStop(OSPfs *pfs) { } } - ramreadformat = *(__OSContRamReadFormat *)ptr; + ramreadformat = *(__OSContRamReadFormat*)ptr; ret = CHNL_ERR(ramreadformat); if (ret == 0 && __osContDataCrc((u8*)&_motorstopbuf) != ramreadformat.datacrc) { @@ -178,14 +178,14 @@ s32 osMotorStop(OSPfs *pfs) { return ret; } -s32 osMotorStart(OSPfs *pfs) { +s32 osMotorStart(OSPfs* pfs) { int i; s32 ret; - u8 *ptr; + u8* ptr; __OSContRamReadFormat ramreadformat; - ptr = (u8 *)&__osPfsPifRam; + ptr = (u8*)&__osPfsPifRam; if (!__osMotorinitialized[pfs->channel]) { return PFS_ERR_INVALID; @@ -198,7 +198,7 @@ s32 osMotorStart(OSPfs *pfs) { osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK); ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam); osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK); - ptr = (u8 *)&__osPfsPifRam; + ptr = (u8*)&__osPfsPifRam; if (pfs->channel != 0) { for (i = 0; i < pfs->channel; i++) { @@ -206,7 +206,7 @@ s32 osMotorStart(OSPfs *pfs) { } } - ramreadformat = *(__OSContRamReadFormat *)ptr; + ramreadformat = *(__OSContRamReadFormat*)ptr; ret = CHNL_ERR(ramreadformat); if (ret == 0 && __osContDataCrc((u8*)&_motorstartbuf) != ramreadformat.datacrc) { @@ -217,16 +217,15 @@ s32 osMotorStart(OSPfs *pfs) { return ret; } -static void _MakeMotorData(int channel, u16 address, u8 *buffer, OSPifRam *mdata) -{ - u8 *ptr = (u8 *)mdata->ramarray; +static void _MakeMotorData(int channel, u16 address, u8* buffer, OSPifRam* mdata) { + u8* ptr = (u8*)mdata->ramarray; __OSContRamReadFormat ramreadformat; int i; - + for (i = 0; i < ARRLEN(mdata->ramarray); i++) { mdata->ramarray[i] = 0; } - + mdata->pifstatus = CONT_CMD_EXE; ramreadformat.dummy = CONT_CMD_NOP; ramreadformat.txsize = CONT_CMD_WRITE_PAK_TX; @@ -246,7 +245,7 @@ static void _MakeMotorData(int channel, u16 address, u8 *buffer, OSPifRam *mdata } } - *(__OSContRamReadFormat *)ptr = ramreadformat; + *(__OSContRamReadFormat*)ptr = ramreadformat; ptr += sizeof(__OSContRamReadFormat); ptr[0] = CONT_CMD_END; } @@ -260,7 +259,7 @@ s32 osMotorInit(OSMesgQueue* mq, OSPfs* pfs, int channel) { pfs->channel = channel; pfs->status = 0; pfs->activebank = 128; - + for (i = 0; i < ARRLEN(temp); i++) { temp[i] = 254; } @@ -284,7 +283,7 @@ s32 osMotorInit(OSMesgQueue* mq, OSPfs* pfs, int channel) { if (ret != 0) { return ret; } - + if (temp[31] == 254) { return PFS_ERR_DEVICE; } @@ -311,7 +310,7 @@ s32 osMotorInit(OSMesgQueue* mq, OSPfs* pfs, int channel) { if (ret != 0) { return ret; } - + if (temp[31] != 0x80) { return PFS_ERR_DEVICE; } diff --git a/src/io/pfsallocatefile.c b/src/io/pfsallocatefile.c index c31396e..d84dd82 100644 --- a/src/io/pfsallocatefile.c +++ b/src/io/pfsallocatefile.c @@ -3,7 +3,7 @@ #include "PRinternal/controller.h" #include "PR/rmon.h" -#define ROUND_UP_DIVIDE(numerator, denominator) (((numerator) + (denominator)-1) / (denominator)) +#define ROUND_UP_DIVIDE(numerator, denominator) (((numerator) + (denominator) - 1) / (denominator)) #if BUILD_VERSION >= VERSION_J @@ -30,8 +30,8 @@ s32 osPfsAllocateFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name file_size_in_pages = ROUND_UP_DIVIDE(file_size_in_bytes, BLOCKSIZE * PFS_ONE_PAGE); - if (((ret = osPfsFindFile(pfs, company_code, game_code, game_name, ext_name, file_no)) != 0) && - ret != PFS_ERR_INVALID) { + if (((ret = osPfsFindFile(pfs, company_code, game_code, game_name, ext_name, file_no)) != 0) + && ret != PFS_ERR_INVALID) { return ret; } @@ -149,7 +149,7 @@ s32 __osPfsDeclearPage(OSPfs* pfs, __OSInode* inode, int file_size_in_pages, int #else -static s32 __osClearPage(OSPfs *pfs, int page_num, u8 *data, u8 bank); +static s32 __osClearPage(OSPfs* pfs, int page_num, u8* data, u8 bank); s32 osPfsAllocateFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name, u8* ext_name, int file_size_in_bytes, s32* file_no) { @@ -181,8 +181,8 @@ s32 osPfsAllocateFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name PFS_CHECK_ID(); - if (((ret = osPfsFindFile(pfs, company_code, game_code, game_name, ext_name, file_no)) != 0) && - ret != PFS_ERR_INVALID) { + if (((ret = osPfsFindFile(pfs, company_code, game_code, game_name, ext_name, file_no)) != 0) + && ret != PFS_ERR_INVALID) { return ret; } @@ -238,7 +238,7 @@ s32 osPfsAllocateFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name if (file_size_in_pages > 0 || start_page == -1) { return PFS_ERR_INCONSISTENT; } - + backup_inode.inode_page[old_last_page].inode_t.bank = bank; backup_inode.inode_page[old_last_page].inode_t.page = start_page; ERRCK(__osPfsRWInode(pfs, &backup_inode, PFS_WRITE, old_bank)); @@ -280,7 +280,7 @@ s32 __osPfsDeclearPage(OSPfs* pfs, __OSInode* inode, int file_size_in_pages, int *first_page = -1; return ret; } - + for (i = 0; i < ARRLEN(tmp_data); i++) { tmp_data[i] = 0; } @@ -314,8 +314,7 @@ s32 __osPfsDeclearPage(OSPfs* pfs, __OSInode* inode, int file_size_in_pages, int } } -static s32 __osClearPage(OSPfs *pfs, int page_no, u8 *data, u8 bank) -{ +static s32 __osClearPage(OSPfs* pfs, int page_no, u8* data, u8 bank) { int i; s32 ret; ret = 0; diff --git a/src/io/pfschecker.c b/src/io/pfschecker.c index 77b691a..d73b4e6 100644 --- a/src/io/pfschecker.c +++ b/src/io/pfschecker.c @@ -5,9 +5,9 @@ s32 corrupted_init(OSPfs* pfs, __OSInodeCache* cache); s32 corrupted(OSPfs* pfs, __OSInodeUnit fpage, __OSInodeCache* cache); -#define CHECK_IPAGE(p) \ - (((p).ipage >= pfs->inode_start_page) && ((p).inode_t.bank < pfs->banks) && ((p).inode_t.page >= 0x01) && \ - ((p).inode_t.page < 0x80)) +#define CHECK_IPAGE(p) \ + (((p).ipage >= pfs->inode_start_page) && ((p).inode_t.bank < pfs->banks) && ((p).inode_t.page >= 0x01) \ + && ((p).inode_t.page < 0x80)) s32 osPfsChecker(OSPfs* pfs) { int j; @@ -96,7 +96,7 @@ s32 osPfsChecker(OSPfs* pfs) { return ret; } } - + if ((cc = corrupted(pfs, next_page, &cache) - cl) != 0) { break; } @@ -134,8 +134,8 @@ s32 osPfsChecker(OSPfs* pfs) { for (j = 0; j < pfs->dir_size; j++) { ERRCK(__osContRamRead(pfs->queue, pfs->channel, pfs->dir_table + j, (u8*)&tmp_dir)); - if (tmp_dir.company_code != 0 && tmp_dir.game_code != 0 && - tmp_dir.start_page.ipage >= (u16)pfs->inode_start_page) { + if (tmp_dir.company_code != 0 && tmp_dir.game_code != 0 + && tmp_dir.start_page.ipage >= (u16)pfs->inode_start_page) { file_next_node[j].ipage = tmp_dir.start_page.ipage; } else { file_next_node[j].ipage = 0; @@ -205,11 +205,10 @@ s32 corrupted_init(OSPfs* pfs, __OSInodeCache* cache) { if (tpage.ipage >= pfs->inode_start_page && tpage.inode_t.bank != bank) { #if BUILD_VERSION >= VERSION_J - n = ((tpage.inode_t.page & 0x7F) / PFS_SECTOR_SIZE) + - ((tpage.inode_t.bank % PFS_BANK_LAPPED_BY) * BLOCKSIZE); + n = ((tpage.inode_t.page & 0x7F) / PFS_SECTOR_SIZE) + + ((tpage.inode_t.bank % PFS_BANK_LAPPED_BY) * BLOCKSIZE); #else - n = ((tpage.inode_t.page) / PFS_SECTOR_SIZE) + - ((tpage.inode_t.bank % PFS_BANK_LAPPED_BY) * BLOCKSIZE); + n = ((tpage.inode_t.page) / PFS_SECTOR_SIZE) + ((tpage.inode_t.bank % PFS_BANK_LAPPED_BY) * BLOCKSIZE); #endif cache->map[n] |= 1 << (bank % PFS_BANK_LAPPED_BY); } diff --git a/src/io/pfsdeletefile.c b/src/io/pfsdeletefile.c index c8cc537..c91a1d5 100644 --- a/src/io/pfsdeletefile.c +++ b/src/io/pfsdeletefile.c @@ -29,7 +29,7 @@ s32 osPfsDeleteFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name, PFS_CHECK_ID(); SET_ACTIVEBANK_TO_ZERO(); ERRCK(osPfsFindFile(pfs, company_code, game_code, game_name, ext_name, &file_no)); - + if (file_no == -1) { return PFS_ERR_INVALID; } @@ -66,12 +66,10 @@ s32 osPfsDeleteFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name, dir.company_code = 0; dir.start_page.ipage = 0; dir.data_sum = 0; - for (k = 0; k < ARRLEN(dir.game_name); k++) - { + for (k = 0; k < ARRLEN(dir.game_name); k++) { dir.game_name[k] = 0; } - for (k = 0; k < ARRLEN(dir.ext_name); k++) - { + for (k = 0; k < ARRLEN(dir.ext_name); k++) { dir.ext_name[k] = 0; } dir.status = DIR_STATUS_EMPTY; @@ -104,8 +102,8 @@ s32 __osPfsReleasePages(OSPfs* pfs, __OSInode* inode, u8 start_page, u8 bank, __ #else -s32 __osPfsReleasePages(OSPfs *pfs, __OSInode *inode, u8 start_page, u16 *sum, u8 bank, __OSInodeUnit *last_page, int flag) -{ +s32 __osPfsReleasePages(OSPfs* pfs, __OSInode* inode, u8 start_page, u16* sum, u8 bank, __OSInodeUnit* last_page, + int flag) { __OSInodeUnit next_page; __OSInodeUnit old_page; s32 ret; @@ -124,13 +122,13 @@ s32 __osPfsReleasePages(OSPfs *pfs, __OSInode *inode, u8 start_page, u16 *sum, u } *last_page = next_page; - + if (flag == TRUE) { inode->inode_page[start_page].ipage = 3; } ERRCK(__osBlockSum(pfs, start_page, sum, bank)); - + if (next_page.ipage == 1) { return 0; } @@ -141,7 +139,7 @@ s32 __osPfsReleasePages(OSPfs *pfs, __OSInode *inode, u8 start_page, u16 *sum, u inode->inode_page[old_page.inode_t.page].ipage = 3; ERRCK(__osBlockSum(pfs, old_page.inode_t.page, sum, bank)); - + if (next_page.inode_t.bank != bank) { break; } @@ -154,19 +152,16 @@ s32 __osPfsReleasePages(OSPfs *pfs, __OSInode *inode, u8 start_page, u16 *sum, u *last_page = next_page; return 0; } -s32 __osBlockSum(OSPfs *pfs, u8 page_no, u16 *sum, u8 bank) -{ +s32 __osBlockSum(OSPfs* pfs, u8 page_no, u16* sum, u8 bank) { int i; s32 ret; u8 data[32]; ret = 0; pfs->activebank = bank; ERRCK(__osPfsSelectBank(pfs)); - for (i = 0; i < PFS_ONE_PAGE; i++) - { + for (i = 0; i < PFS_ONE_PAGE; i++) { ret = __osContRamRead(pfs->queue, pfs->channel, page_no * PFS_ONE_PAGE + i, data); - if (ret != 0) - { + if (ret != 0) { pfs->activebank = 0; __osPfsSelectBank(pfs); return ret; diff --git a/src/io/pfsfilestate.c b/src/io/pfsfilestate.c index 78b9f4a..7a39101 100644 --- a/src/io/pfsfilestate.c +++ b/src/io/pfsfilestate.c @@ -91,7 +91,7 @@ s32 osPfsFileState(OSPfs* pfs, s32 file_no, OSPfsState* state) { break; } } - + if (next_page.ipage != PFS_EOF) { return PFS_ERR_INCONSISTENT; } diff --git a/src/io/pfsinitpak.c b/src/io/pfsinitpak.c index 65f2684..06f301c 100644 --- a/src/io/pfsinitpak.c +++ b/src/io/pfsinitpak.c @@ -50,7 +50,7 @@ s32 osPfsInitPak(OSMesgQueue* queue, OSPfs* pfs, int channel) { #endif return ret; } - + #if BUILD_VERSION < VERSION_J // Duplicated check else if (ret != 0) { @@ -82,7 +82,7 @@ s32 osPfsInitPak(OSMesgQueue* queue, OSPfs* pfs, int channel) { bcopy(id, pfs->id, BLOCKSIZE); #else for (k = 0; k < ARRLEN(pfs->id); k++) { - pfs->id[k] = ((u8 *)id)[k]; + pfs->id[k] = ((u8*)id)[k]; } #endif diff --git a/src/io/pfsreadwritefile.c b/src/io/pfsreadwritefile.c index ec35da3..5d1a16d 100644 --- a/src/io/pfsreadwritefile.c +++ b/src/io/pfsreadwritefile.c @@ -2,9 +2,9 @@ #include "PR/os_internal.h" #include "PRinternal/controller.h" -#define CHECK_IPAGE(p) \ - (((p).ipage >= pfs->inode_start_page) && ((p).inode_t.bank < pfs->banks) && ((p).inode_t.page >= 0x01) && \ - ((p).inode_t.page < 0x80)) +#define CHECK_IPAGE(p) \ + (((p).ipage >= pfs->inode_start_page) && ((p).inode_t.bank < pfs->banks) && ((p).inode_t.page >= 0x01) \ + && ((p).inode_t.page < 0x80)) static s32 __osPfsGetNextPage(OSPfs* pfs, u8* bank, __OSInode* inode, __OSInodeUnit* page) { s32 ret; diff --git a/src/io/pfsrepairid.c b/src/io/pfsrepairid.c index 4ad6b0a..f51804f 100644 --- a/src/io/pfsrepairid.c +++ b/src/io/pfsrepairid.c @@ -22,20 +22,20 @@ s32 osPfsRepairId(OSPfs* pfs) { #else -s32 osPfsRepairId(OSPfs *pfs) { +s32 osPfsRepairId(OSPfs* pfs) { int k; u16 sum; u16 isum; u8 temp[32]; __OSPackId newid; s32 ret; - __OSPackId *id; + __OSPackId* id; SET_ACTIVEBANK_TO_ZERO(); ERRCK(__osContRamRead(pfs->queue, pfs->channel, 1, (u8*)&temp)); __osIdCheckSum((u16*)&temp, &sum, &isum); id = (__OSPackId*)&temp; - + if (id->checksum != sum || id->inverted_checksum != isum) { ret = __osCheckPackId(pfs, id); @@ -55,7 +55,7 @@ s32 osPfsRepairId(OSPfs *pfs) { return PFS_ERR_DEVICE; } } - + for (k = 0; k < ARRLEN(pfs->id); k++) { pfs->id[k] = ((u8*)id)[k]; } diff --git a/src/io/pirawread.c b/src/io/pirawread.c index 0040bb3..7db0af2 100644 --- a/src/io/pirawread.c +++ b/src/io/pirawread.c @@ -2,43 +2,6 @@ #include "assert.h" #include "PR/ultraerror.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Adjust line numbers to match assert #if BUILD_VERSION < VERSION_J #line 46 diff --git a/src/io/sirawdma.c b/src/io/sirawdma.c index ea2c228..143aa7c 100644 --- a/src/io/sirawdma.c +++ b/src/io/sirawdma.c @@ -2,46 +2,6 @@ #include "assert.h" #include "PRinternal/siint.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Adjust line numbers to match assert #if BUILD_VERSION < VERSION_J #line 47 diff --git a/src/io/sirawread.c b/src/io/sirawread.c index c182ff0..00bf043 100644 --- a/src/io/sirawread.c +++ b/src/io/sirawread.c @@ -2,45 +2,6 @@ #include "assert.h" #include "PRinternal/siint.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Adjust line numbers to match assert #if BUILD_VERSION < VERSION_J #line 45 @@ -52,7 +13,7 @@ s32 __osSiRawReadIo(u32 devAddr, u32* data) { assert((devAddr & 0x3) == 0); assert(data != NULL); - + if (__osSiDeviceBusy()) { return -1; } diff --git a/src/io/sirawwrite.c b/src/io/sirawwrite.c index ece13a5..54cd2e9 100644 --- a/src/io/sirawwrite.c +++ b/src/io/sirawwrite.c @@ -2,45 +2,6 @@ #include "PRinternal/siint.h" #include "assert.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Adjust line numbers to match assert #if BUILD_VERSION < VERSION_J #line 46 diff --git a/src/io/sprawdma.c b/src/io/sprawdma.c index 05d9b7a..380b0b2 100644 --- a/src/io/sprawdma.c +++ b/src/io/sprawdma.c @@ -3,50 +3,6 @@ #include "PRinternal/osint.h" #include "assert.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Adjust line numbers to match assert #if BUILD_VERSION < VERSION_J #line 52 diff --git a/src/io/sprawread.c b/src/io/sprawread.c index 180b440..0f5dc82 100644 --- a/src/io/sprawread.c +++ b/src/io/sprawread.c @@ -3,43 +3,6 @@ #include "PRinternal/osint.h" #include "assert.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Adjust line numbers to match assert #if BUILD_VERSION < VERSION_J #line 45 @@ -51,7 +14,7 @@ s32 __osSpRawReadIo(u32 devAddr, u32* data) { assert((devAddr & 0x3) == 0); assert(data != NULL); - + if (__osSpDeviceBusy()) { return -1; } diff --git a/src/io/sprawwrite.c b/src/io/sprawwrite.c index c0f83cf..e55ad81 100644 --- a/src/io/sprawwrite.c +++ b/src/io/sprawwrite.c @@ -3,44 +3,6 @@ #include "PRinternal/osint.h" #include "assert.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Adjust line numbers to match assert #if BUILD_VERSION < VERSION_J #line 45 diff --git a/src/io/sptask.c b/src/io/sptask.c index 3c3ef15..710126a 100644 --- a/src/io/sptask.c +++ b/src/io/sptask.c @@ -8,10 +8,11 @@ #ident "$Revision: 1.4 $" #endif -#define _osVirtualToPhysical(ptr) \ - if (ptr != NULL) { \ - ptr = (void*)osVirtualToPhysical(ptr); \ - } (void)0 +#define _osVirtualToPhysical(ptr) \ + if (ptr != NULL) { \ + ptr = (void*)osVirtualToPhysical(ptr); \ + } \ + (void)0 static OSTask tmp_task; @@ -66,17 +67,22 @@ void osSpTaskLoad(OSTask* intp) { osWritebackDCache(tp, sizeof(OSTask)); __osSpSetStatus(SP_CLR_YIELD | SP_CLR_YIELDED | SP_CLR_TASKDONE | SP_SET_INTR_BREAK); - while (__osSpSetPc(SP_IMEM_START) == -1) {} + while (__osSpSetPc(SP_IMEM_START) == -1) { + } - while (__osSpRawStartDma(1, (SP_IMEM_START - sizeof(*tp)), tp, sizeof(OSTask)) == -1) {} + while (__osSpRawStartDma(1, (SP_IMEM_START - sizeof(*tp)), tp, sizeof(OSTask)) == -1) { + } - while (__osSpDeviceBusy()) {} + while (__osSpDeviceBusy()) { + } - while (__osSpRawStartDma(1, SP_IMEM_START, tp->t.ucode_boot, tp->t.ucode_boot_size) == -1) {} + while (__osSpRawStartDma(1, SP_IMEM_START, tp->t.ucode_boot, tp->t.ucode_boot_size) == -1) { + } } void osSpTaskStartGo(OSTask* tp) { - while (__osSpDeviceBusy()) {} + while (__osSpDeviceBusy()) { + } __osSpSetStatus(SP_SET_INTR_BREAK | SP_CLR_SSTEP | SP_CLR_BROKE | SP_CLR_HALT); } diff --git a/src/io/visetevent.c b/src/io/visetevent.c index b771403..012a5e0 100644 --- a/src/io/visetevent.c +++ b/src/io/visetevent.c @@ -3,49 +3,6 @@ #include "assert.h" #include "PRinternal/viint.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // TODO: this comes from a header #ident "$Revision: 1.17 $" diff --git a/src/io/visetmode.c b/src/io/visetmode.c index 114403e..a6d481a 100644 --- a/src/io/visetmode.c +++ b/src/io/visetmode.c @@ -3,46 +3,6 @@ #include "assert.h" #include "PRinternal/viint.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // TODO: this comes from a header #ident "$Revision: 1.17 $" diff --git a/src/io/visetspecial.c b/src/io/visetspecial.c index 24b4367..c554107 100644 --- a/src/io/visetspecial.c +++ b/src/io/visetspecial.c @@ -8,9 +8,9 @@ // This value was incorrectly calculated until being fixed in 2.0J #if BUILD_VERSION >= VERSION_J -#define OS_VI_SPECIAL_MAX \ - (OS_VI_GAMMA_ON | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_ON | OS_VI_GAMMA_DITHER_OFF | OS_VI_DIVOT_ON | \ - OS_VI_DIVOT_OFF | OS_VI_DITHER_FILTER_ON | OS_VI_DITHER_FILTER_OFF) +#define OS_VI_SPECIAL_MAX \ + (OS_VI_GAMMA_ON | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_ON | OS_VI_GAMMA_DITHER_OFF | OS_VI_DIVOT_ON \ + | OS_VI_DIVOT_OFF | OS_VI_DITHER_FILTER_ON | OS_VI_DITHER_FILTER_OFF) #else #define OS_VI_SPECIAL_MAX OS_VI_DITHER_FILTER_OFF #endif @@ -18,13 +18,14 @@ /** * Configures VI "special features" to be applied on the next context swap. * - * "Special features" refer to the mode bits in the Video Interface control register that enable effects such as gamma - * correction, gamma dither, dither filtering, anti-aliasing filtering and divot filtering. Configuring the same - * setting ON and OFF in the same call will result in OFF taking precedence. + * "Special features" refer to the mode bits in the Video Interface control register that enable effects + * such as gamma correction, gamma dither, dither filtering, anti-aliasing filtering and divot + * filtering. Configuring the same setting ON and OFF in the same call will result in OFF taking + * precedence. * - * Any unrecognized bits will be ignored. Note that this is very intentional as in early revisions of retail N64 - * hardware setting bit 5 in the `features` field of OSViContext may cause physical damage to the console once it is - * fed to VI_CONTROL_REG on next context swap. + * Any unrecognized bits will be ignored. Note that this is very intentional as in early revisions of + * retail N64 hardware setting bit 5 in the `features` field of OSViContext may cause physical damage to + * the console once it is fed to VI_CONTROL_REG on next context swap. * * @param func OS_VI_*_ON / OS_VI_*_OFF bits to enable or disable a setting. */ diff --git a/src/io/viswapbuf.c b/src/io/viswapbuf.c index ec5016d..e0f1c55 100644 --- a/src/io/viswapbuf.c +++ b/src/io/viswapbuf.c @@ -3,50 +3,6 @@ #include "assert.h" #include "PRinternal/viint.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // TODO: this comes from a header #ident "$Revision: 1.17 $" diff --git a/src/io/vitbl.c b/src/io/vitbl.c index a728c2c..058df52 100644 --- a/src/io/vitbl.c +++ b/src/io/vitbl.c @@ -6,16 +6,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_LPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(525), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -37,16 +37,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_LPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -68,16 +68,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_LAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(525), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -99,16 +99,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_LAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -130,16 +130,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_LPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(525), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -161,16 +161,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_LPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -192,16 +192,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_LAN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(525), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -223,16 +223,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_LAF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -254,16 +254,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_HPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -285,16 +285,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_HPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -316,16 +316,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_HAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -347,16 +347,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_HAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -378,16 +378,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_HPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -409,16 +409,16 @@ OSViMode osViModeTable[] = { { OS_VI_NTSC_HPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -440,16 +440,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_LPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -471,16 +471,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_LPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -502,16 +502,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_LAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -533,16 +533,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_LAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -564,16 +564,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_LPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -595,16 +595,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_LPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -626,16 +626,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_LAN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -657,16 +657,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_LAF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -688,16 +688,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_HPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -719,16 +719,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_HPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -750,16 +750,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_HAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -781,16 +781,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_HAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -812,16 +812,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_HPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -843,16 +843,16 @@ OSViMode osViModeTable[] = { { OS_VI_PAL_HPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -874,16 +874,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_LPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(525), // vSync - HSYNC(3089, 4), // hSync - LEAP(3097, 3098), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -905,16 +905,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_LPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -936,16 +936,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_LAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(525), // vSync - HSYNC(3089, 4), // hSync - LEAP(3097, 3098), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -967,16 +967,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_LAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -998,16 +998,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_LPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(525), // vSync - HSYNC(3089, 4), // hSync - LEAP(3097, 3098), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1029,16 +1029,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_LPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1060,16 +1060,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_LAN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(525), // vSync - HSYNC(3089, 4), // hSync - LEAP(3097, 3098), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1091,16 +1091,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_LAF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1122,16 +1122,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_HPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1153,16 +1153,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_HPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1184,16 +1184,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_HAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1215,16 +1215,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_HAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1246,16 +1246,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_HPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1277,16 +1277,16 @@ OSViMode osViModeTable[] = { { OS_VI_MPAL_HPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1309,16 +1309,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_LPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1340,16 +1340,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_LPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1371,16 +1371,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_LAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1402,16 +1402,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_LAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1433,16 +1433,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_LPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1464,16 +1464,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_LPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1495,16 +1495,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_LAN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1526,16 +1526,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_LAF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1557,16 +1557,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_HPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1588,16 +1588,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_HPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1619,16 +1619,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_HAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1650,16 +1650,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_HAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1681,16 +1681,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_HPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { @@ -1712,16 +1712,16 @@ OSViMode osViModeTable[] = { { OS_VI_FPAL_HPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/libc/syncprintf.c b/src/libc/syncprintf.c index 75f858e..f0d088d 100644 --- a/src/libc/syncprintf.c +++ b/src/libc/syncprintf.c @@ -31,7 +31,7 @@ static void rmonPutchar(char c) { while (!(*stat & 4)) { } - + *wport = c; } diff --git a/src/libc/xldtob.c b/src/libc/xldtob.c index f291e23..c2703db 100644 --- a/src/libc/xldtob.c +++ b/src/libc/xldtob.c @@ -12,40 +12,40 @@ static short _Ldunscale(short* pex, ldouble* px); static void _Genld(_Pft* px, char code, unsigned char* p, short nsig, short xexp); -static const ldouble pows[] = {10e0L, 10e1L, 10e3L, 10e7L, 10e15L, 10e31L, 10e63L, 10e127L, 10e255L}; +static const ldouble pows[] = { 10e0L, 10e1L, 10e3L, 10e7L, 10e15L, 10e31L, 10e63L, 10e127L, 10e255L }; // float properties -#define _D0 0 +#define _D0 0 #define _DBIAS 0x3ff #define _DLONG 1 -#define _DOFF 4 +#define _DOFF 4 #define _FBIAS 0x7e -#define _FOFF 7 -#define _FRND 1 +#define _FOFF 7 +#define _FRND 1 #define _LBIAS 0x3ffe -#define _LOFF 15 +#define _LOFF 15 // integer properties -#define _C2 1 +#define _C2 1 #define _CSIGN 1 #define _ILONG 0 #define _MBMAX 8 -#define NAN 2 -#define INF 1 +#define NAN 2 +#define INF 1 #define FINITE -1 #define _DFRAC ((1 << _DOFF) - 1) #define _DMASK (0x7fff & ~_DFRAC) -#define _DMAX ((1 << (15 - _DOFF)) - 1) -#define _DNAN (0x8000 | _DMAX << _DOFF | 1 << (_DOFF - 1)) +#define _DMAX ((1 << (15 - _DOFF)) - 1) +#define _DNAN (0x8000 | _DMAX << _DOFF | 1 << (_DOFF - 1)) #define _DSIGN 0x8000 -#define _D1 1 // big-endian order -#define _D2 2 -#define _D3 3 +#define _D1 1 // big-endian order +#define _D2 2 +#define _D3 3 -#define ALIGN(s, align) (((unsigned int)(s) + ((align)-1)) & ~((align)-1)) +#define ALIGN(s, align) (((unsigned int)(s) + ((align) - 1)) & ~((align) - 1)) void _Ldtob(_Pft* px, char code) { char buff[BUFF_LEN]; - char *p; + char* p; ldouble ldval; short err; short nsig; @@ -87,9 +87,9 @@ void _Ldtob(_Pft* px, char code) { } } else if (xexp > 0) { ldouble factor = 1; - + xexp &= ~3; - + for (n = xexp, i = 0; n > 0; n >>= 1, i++) { if (n & 1) { factor *= pows[i]; @@ -101,15 +101,15 @@ void _Ldtob(_Pft* px, char code) { } { int gen = px->prec + ((code == 'f') ? 10 + xexp : 6); - + if (gen > 0x13) { gen = 0x13; } - + for (*p++ = '0'; gen > 0 && 0 < ldval; p += 8) { int j; long lo = ldval; - + if ((gen -= 8) > 0) { ldval = (ldval - lo) * 1e8; } @@ -119,7 +119,7 @@ void _Ldtob(_Pft* px, char code) { qr = ldiv(lo, 10); *--p = qr.rem + '0', lo = qr.quot; } - + while (--j >= 0) { *--p = '0'; } @@ -132,7 +132,7 @@ void _Ldtob(_Pft* px, char code) { } nsig = px->prec + ((code == 'f') ? xexp + 1 : ((code == 'e' || code == 'E') ? 1 : 0)); - + if (gen < nsig) { nsig = gen; } @@ -148,7 +148,7 @@ void _Ldtob(_Pft* px, char code) { if (drop == '9') { ++p[n]; } - + if (n < 0) { --p, ++nsig, ++xexp; } @@ -163,7 +163,6 @@ short _Ldunscale(short* pex, ldouble* px) { unsigned short* ps = (unsigned short*)px; short xchar = (ps[_D0] & _DMASK) >> _DOFF; - if (xchar == _DMAX) { *pex = 0; @@ -305,4 +304,3 @@ void _Genld(_Pft* px, char code, unsigned char* p, short nsig, short xexp) { } } } - diff --git a/src/libc/xlitob.c b/src/libc/xlitob.c index 608e35f..e3ac06f 100644 --- a/src/libc/xlitob.c +++ b/src/libc/xlitob.c @@ -12,9 +12,9 @@ static char ldigs[] = "0123456789abcdef"; static char udigs[] = "0123456789ABCDEF"; -void _Litob(_Pft *px, char code) { +void _Litob(_Pft* px, char code) { char buff[BUFF_LEN]; - const char *digs; + const char* digs; int base; int i; unsigned long long ullval; @@ -37,7 +37,7 @@ void _Litob(_Pft *px, char code) { while (px->v.ll > 0 && i > 0) { lldiv_t qr = lldiv(px->v.ll, base); - + px->v.ll = qr.quot; buff[--i] = digs[qr.rem]; } diff --git a/src/libc/xprintf.c b/src/libc/xprintf.c index 9191e1c..219fc68 100644 --- a/src/libc/xprintf.c +++ b/src/libc/xprintf.c @@ -9,65 +9,61 @@ #ident "$Revision: 1.23 $" #define isdigit(x) ((x >= '0' && x <= '9')) -#define LDSIGN(x) (((unsigned short *)&(x))[0] & 0x8000) +#define LDSIGN(x) (((unsigned short*)&(x))[0] & 0x8000) -#define ATOI(dst, src) \ - for (dst = 0; isdigit(*src); ++src) \ - { \ - if (dst < 999) \ - dst = dst * 10 + *src - '0'; \ +#define ATOI(dst, src) \ + for (dst = 0; isdigit(*src); ++src) { \ + if (dst < 999) \ + dst = dst * 10 + *src - '0'; \ } #define MAX_PAD ((sizeof(spaces) - 1)) -#define PAD(s, n) \ - if (0 < (n)) \ - { \ - int i, j = (n); \ - for (; 0 < j; j -= i) \ - { \ - i = MAX_PAD < (unsigned int)j ? (int)MAX_PAD : j; \ - PUT(s, i); \ - } \ +#define PAD(s, n) \ + if (0 < (n)) { \ + int i, j = (n); \ + for (; 0 < j; j -= i) { \ + i = MAX_PAD < (unsigned int)j ? (int)MAX_PAD : j; \ + PUT(s, i); \ + } \ } -#define PUT(s, n) \ - if (0 < (n)) \ - { \ - if ((arg = (*pfn)(arg, s, n)) != NULL) \ - x.nchar += (n); \ - else \ - return x.nchar; \ +#define PUT(s, n) \ + if (0 < (n)) { \ + if ((arg = (*pfn)(arg, s, n)) != NULL) \ + x.nchar += (n); \ + else \ + return x.nchar; \ } static char spaces[] = " "; static char zeroes[] = "00000000000000000000000000000000"; -static void _Putfld(_Pft *px, va_list *pap, char code, char *ac); +static void _Putfld(_Pft* px, va_list* pap, char code, char* ac); -int _Printf(void* pfn(void*,const char*,size_t), void *arg, const char *fmt, va_list ap) { +int _Printf(void* pfn(void*, const char*, size_t), void* arg, const char* fmt, va_list ap) { _Pft x; - + x.nchar = 0; while (1) { - const char *s; + const char* s; char c; - const char *t; - static const char fchar[] = {' ', '+', '-', '#', '0', '\0'}; - static const unsigned int fbit[] = {FLAGS_SPACE, FLAGS_PLUS, FLAGS_MINUS, FLAGS_HASH, FLAGS_ZERO, 0}; + const char* t; + static const char fchar[] = { ' ', '+', '-', '#', '0', '\0' }; + static const unsigned int fbit[] = { FLAGS_SPACE, FLAGS_PLUS, FLAGS_MINUS, FLAGS_HASH, FLAGS_ZERO, 0 }; char ac[32]; s = fmt; for (c = *s; c != 0 && c != '%';) { c = *++s; } - + PUT(fmt, s - fmt); - + if (c == 0) { return x.nchar; } - + fmt = ++s; - + for (x.flags = 0; (t = strchr(fchar, *s)) != NULL; s++) { x.flags |= fbit[t - fchar]; } @@ -80,24 +76,22 @@ int _Printf(void* pfn(void*,const char*,size_t), void *arg, const char *fmt, va_ x.flags |= FLAGS_MINUS; } s++; - } else + } else ATOI(x.width, s); - if (*s != '.') { x.prec = -1; } else if (*++s == '*') { x.prec = va_arg(ap, int); ++s; - } else - for (x.prec = 0; isdigit(*s); s++) { - if (x.prec < 999) - x.prec = x.prec * 10 + *s - '0'; + } else + for (x.prec = 0; isdigit(*s); s++) { + if (x.prec < 999) + x.prec = x.prec * 10 + *s - '0'; } - x.qual = strchr("hlL", *s) ? *s++ : '\0'; - + if (x.qual == 'l' && *s == 'l') { x.qual = 'L'; ++s; @@ -106,15 +100,13 @@ int _Printf(void* pfn(void*,const char*,size_t), void *arg, const char *fmt, va_ _Putfld(&x, &ap, *s, ac); x.width -= x.n0 + x.nz0 + x.n1 + x.nz1 + x.n2 + x.nz2; - { + { if (!(x.flags & FLAGS_MINUS)) { int i, j; - if (0 < (x.width)) - { + if (0 < (x.width)) { i, j = x.width; - for (; 0 < j; j -= i) - { + for (; 0 < j; j -= i) { i = MAX_PAD < (unsigned int)j ? (int)MAX_PAD : j; PUT(spaces, i); } @@ -139,9 +131,8 @@ int _Printf(void* pfn(void*,const char*,size_t), void *arg, const char *fmt, va_ return 0; } -static void _Putfld(_Pft *px, va_list *pap, char code, char *ac) { - px->n0 = px->nz0 = px->n1 = px->nz1 = px->n2 = - px->nz2 = 0; +static void _Putfld(_Pft* px, va_list* pap, char code, char* ac) { + px->n0 = px->nz0 = px->n1 = px->nz1 = px->n2 = px->nz2 = 0; switch (code) { case 'c': @@ -169,7 +160,7 @@ static void _Putfld(_Pft *px, va_list *pap, char code, char *ac) { ac[px->n0++] = ' '; } - px->s = (char *)&ac[px->n0]; + px->s = (char*)&ac[px->n0]; _Litob(px, code); break; @@ -199,7 +190,7 @@ static void _Putfld(_Pft *px, va_list *pap, char code, char *ac) { } } - px->s = (char *)&ac[px->n0]; + px->s = (char*)&ac[px->n0]; _Litob(px, code); break; case 'e': @@ -216,35 +207,35 @@ static void _Putfld(_Pft *px, va_list *pap, char code, char *ac) { else if (px->flags & FLAGS_SPACE) ac[px->n0++] = ' '; - px->s = (char *)&ac[px->n0]; + px->s = (char*)&ac[px->n0]; _Ldtob(px, code); break; case 'n': if (px->qual == 'h') { - *va_arg(*pap, unsigned short *) = px->nchar; + *va_arg(*pap, unsigned short*) = px->nchar; } else if (px->qual == 'l') { - *va_arg(*pap, unsigned long *) = px->nchar; + *va_arg(*pap, unsigned long*) = px->nchar; } else if (px->qual == 'L') { - *va_arg(*pap, unsigned long long *) = px->nchar; + *va_arg(*pap, unsigned long long*) = px->nchar; } else { - *va_arg(*pap, unsigned int *) = px->nchar; + *va_arg(*pap, unsigned int*) = px->nchar; } break; case 'p': - px->v.ll = (long)va_arg(*pap, void *); - px->s = (char *)&ac[px->n0]; + px->v.ll = (long)va_arg(*pap, void*); + px->s = (char*)&ac[px->n0]; _Litob(px, 'x'); break; case 's': - px->s = va_arg(*pap, char *); + px->s = va_arg(*pap, char*); px->n1 = strlen(px->s); - + if (px->prec >= 0 && px->prec < px->n1) { px->n1 = px->prec; } - + break; case '%': ac[px->n0++] = '%'; diff --git a/src/libc/xstdio.h b/src/libc/xstdio.h index fd55177..b9f5e83 100644 --- a/src/libc/xstdio.h +++ b/src/libc/xstdio.h @@ -30,13 +30,13 @@ typedef struct { } _Pft; #define FLAGS_SPACE 1 -#define FLAGS_PLUS 2 +#define FLAGS_PLUS 2 #define FLAGS_MINUS 4 -#define FLAGS_HASH 8 -#define FLAGS_ZERO 16 +#define FLAGS_HASH 8 +#define FLAGS_ZERO 16 -int _Printf(void* pfn(void*,const char*,size_t), void *arg, const char *fmt, va_list ap); -void _Litob(_Pft *px, char code); +int _Printf(void* pfn(void*, const char*, size_t), void* arg, const char* fmt, va_list ap); +void _Litob(_Pft* px, char code); void _Ldtob(_Pft* px, char code); #endif diff --git a/src/mgu/asm.h b/src/mgu/asm.h index 0c417fa..54feda6 100644 --- a/src/mgu/asm.h +++ b/src/mgu/asm.h @@ -1,12 +1,12 @@ /************************************************************************ Copyright (C) 1998,1999 NINTENDO Co,Ltd, Copyright (C) 1998,1999 MONEGI CORPORATION, - All Rights Reserved -This program is a trade secret of NINTENDO Co,Ltd and MONEGI Corp. + All Rights Reserved +This program is a trade secret of NINTENDO Co,Ltd and MONEGI Corp. and it is not to be reproduced, published, disclosed to others, copied, -adapted, distributed, or displayed without the prior authorization of -NINTENDO Co,Ltd. and MONEGI Corp. Licensee agrees to attach or embed -this Notice on all copies of the program, including partial copies or +adapted, distributed, or displayed without the prior authorization of +NINTENDO Co,Ltd. and MONEGI Corp. Licensee agrees to attach or embed +this Notice on all copies of the program, including partial copies or modified versions thereof. *************************************************************************/ /************************************************************************ @@ -22,25 +22,23 @@ modified versions thereof. extern "C" { #endif -#define _MIPS_ISA_MIPS1 1 /* R2/3K */ -#define _MIPS_ISA_MIPS2 2 /* R4K/6K */ -#define _MIPS_ISA_MIPS3 3 /* R4K */ -#define _MIPS_ISA_MIPS4 4 /* TFP */ +#define _MIPS_ISA_MIPS1 1 /* R2/3K */ +#define _MIPS_ISA_MIPS2 2 /* R4K/6K */ +#define _MIPS_ISA_MIPS3 3 /* R4K */ +#define _MIPS_ISA_MIPS4 4 /* TFP */ -#define _MIPS_SIM_ABI32 1 /* MIPS MSIG calling convention */ -#define _MIPS_SIM_NABI32 2 /* MIPS new 32-bit abi */ - /* NABI32 is 64bit calling convention but 32bit type sizes) */ -#define _MIPS_SIM_ABI64 3 /* MIPS 64 calling convention */ +#define _MIPS_SIM_ABI32 1 /* MIPS MSIG calling convention */ +#define _MIPS_SIM_NABI32 2 /* MIPS new 32-bit abi */ + /* NABI32 is 64bit calling convention but 32bit type sizes) */ +#define _MIPS_SIM_ABI64 3 /* MIPS 64 calling convention */ -#define LEAF(x) \ - .globl x; \ - .ent x,0; \ -x:; \ - .frame sp,0,ra - -#define END(proc) \ - .end proc +#define LEAF(x) \ + .globl x; \ + .ent x, 0; \ + x:; \ + .frame sp, 0, ra +#define END(proc) .end proc #ifdef __cplusplus } diff --git a/src/mgu/mtxcatl.c b/src/mgu/mtxcatl.c index 6054972..504fa11 100644 --- a/src/mgu/mtxcatl.c +++ b/src/mgu/mtxcatl.c @@ -1,12 +1,12 @@ /************************************************************************ Copyright (C) 1998,1999 NINTENDO CO,Ltd, Copyright (C) 1998,1999 MONEGI CORPORATION, - All Rights Reserved -This program is a trade secret of NINTENDO CO,Ltd and MONEGI Corp. + All Rights Reserved +This program is a trade secret of NINTENDO CO,Ltd and MONEGI Corp. and it is not to be reproduced, published, disclosed to others, copied, -adapted, distributed, or displayed without the prior authorization of -NINTENDO CO,Ltd. and MONEGI Corp. Licensee agrees to attach or embed -this Notice on all copies of the program, including partial copies or +adapted, distributed, or displayed without the prior authorization of +NINTENDO CO,Ltd. and MONEGI Corp. Licensee agrees to attach or embed +this Notice on all copies of the program, including partial copies or modified versions thereof. *************************************************************************/ /************************************************************************ @@ -19,26 +19,24 @@ modified versions thereof. #include "../gu/guint.h" #include "gu.h" -void guMtxCatL(Mtx *m, Mtx *n, Mtx *res) -{ - float mf[4][4], nf[4][4], resf[4][4]; +void guMtxCatL(Mtx* m, Mtx* n, Mtx* res) { + float mf[4][4], nf[4][4], resf[4][4]; - guMtxL2F(mf, m); - guMtxL2F(nf, n); + guMtxL2F(mf, m); + guMtxL2F(nf, n); - guMtxCatF(mf, nf, resf); + guMtxCatF(mf, nf, resf); - guMtxF2L(resf, res); + guMtxF2L(resf, res); } #if BUILD_VERSION < VERSION_K -void guMtxXFML(Mtx *m, float x, float y, float z, float *ox, float *oy, float *oz) -{ - float mf[4][4]; +void guMtxXFML(Mtx* m, float x, float y, float z, float* ox, float* oy, float* oz) { + float mf[4][4]; - guMtxL2F(mf, m); + guMtxL2F(mf, m); - guMtxXFMF(mf, x, y, z, ox, oy, oz); + guMtxXFMF(mf, x, y, z, ox, oy, oz); } #endif /* End of file */ diff --git a/src/mgu/mtxxfmf.c b/src/mgu/mtxxfmf.c index 58c6772..f846a8b 100644 --- a/src/mgu/mtxxfmf.c +++ b/src/mgu/mtxxfmf.c @@ -31,10 +31,8 @@ #include "../gu/guint.h" -void guMtxXFMF(float mf[4][4], float x, float y, float z, float *ox, float *oy, float *oz) -{ - *ox = mf[0][0]*x + mf[1][0]*y + mf[2][0]*z + mf[3][0]; - *oy = mf[0][1]*x + mf[1][1]*y + mf[2][1]*z + mf[3][1]; - *oz = mf[0][2]*x + mf[1][2]*y + mf[2][2]*z + mf[3][2]; +void guMtxXFMF(float mf[4][4], float x, float y, float z, float* ox, float* oy, float* oz) { + *ox = mf[0][0] * x + mf[1][0] * y + mf[2][0] * z + mf[3][0]; + *oy = mf[0][1] * x + mf[1][1] * y + mf[2][1] * z + mf[3][1]; + *oz = mf[0][2] * x + mf[1][2] * y + mf[2][2] * z + mf[3][2]; } - diff --git a/src/mgu/mtxxfml.c b/src/mgu/mtxxfml.c index 1dfa871..d209b5e 100644 --- a/src/mgu/mtxxfml.c +++ b/src/mgu/mtxxfml.c @@ -31,11 +31,10 @@ #include "../gu/guint.h" -void guMtxXFML(Mtx *m, float x, float y, float z, float *ox, float *oy, float *oz) -{ - float mf[4][4]; +void guMtxXFML(Mtx* m, float x, float y, float z, float* ox, float* oy, float* oz) { + float mf[4][4]; - guMtxL2F(mf, m); + guMtxL2F(mf, m); - guMtxXFMF(mf, x, y, z, ox, oy, oz); + guMtxXFMF(mf, x, y, z, ox, oy, oz); } diff --git a/src/mgu/regdef.h b/src/mgu/regdef.h index ac9c109..32b85c0 100644 --- a/src/mgu/regdef.h +++ b/src/mgu/regdef.h @@ -1,12 +1,12 @@ /************************************************************************ Copyright (C) 1998,1999 NINTENDO Co,Ltd, Copyright (C) 1998,1999 MONEGI CORPORATION, - All Rights Reserved -This program is a trade secret of NINTENDO Co,Ltd and MONEGI Corp. + All Rights Reserved +This program is a trade secret of NINTENDO Co,Ltd and MONEGI Corp. and it is not to be reproduced, published, disclosed to others, copied, -adapted, distributed, or displayed without the prior authorization of -NINTENDO Co,Ltd. and MONEGI Corp. Licensee agrees to attach or embed -this Notice on all copies of the program, including partial copies or +adapted, distributed, or displayed without the prior authorization of +NINTENDO Co,Ltd. and MONEGI Corp. Licensee agrees to attach or embed +this Notice on all copies of the program, including partial copies or modified versions thereof. *************************************************************************/ /************************************************************************ @@ -25,158 +25,158 @@ extern "C" { #ifdef mips #if (_MIPS_SIM == _MIPS_SIM_ABI32) -#define zero $0 -#define AT $at -#define v0 $2 -#define v1 $3 -#define a0 $4 -#define a1 $5 -#define a2 $6 -#define a3 $7 -#define t0 $8 -#define t1 $9 -#define t2 $10 -#define t3 $11 -#define t4 $12 -#define ta0 $12 -#define t5 $13 -#define ta1 $13 -#define t6 $14 -#define ta2 $14 -#define t7 $15 -#define ta3 $15 -#define s0 $16 -#define s1 $17 -#define s2 $18 -#define s3 $19 -#define s4 $20 -#define s5 $21 -#define s6 $22 -#define s7 $23 -#define t8 $24 -#define t9 $25 -#define jp $25 -#define k0 $26 -#define k1 $27 -#define gp $28 -#define sp $29 -#define fp $30 -#define s8 $30 -#define ra $31 +#define zero $0 +#define AT $at +#define v0 $2 +#define v1 $3 +#define a0 $4 +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define t0 $8 +#define t1 $9 +#define t2 $10 +#define t3 $11 +#define t4 $12 +#define ta0 $12 +#define t5 $13 +#define ta1 $13 +#define t6 $14 +#define ta2 $14 +#define t7 $15 +#define ta3 $15 +#define s0 $16 +#define s1 $17 +#define s2 $18 +#define s3 $19 +#define s4 $20 +#define s5 $21 +#define s6 $22 +#define s7 $23 +#define t8 $24 +#define t9 $25 +#define jp $25 +#define k0 $26 +#define k1 $27 +#define gp $28 +#define sp $29 +#define fp $30 +#define s8 $30 +#define ra $31 #endif #if (_MIPS_SIM == _MIPS_SIM_ABI64) -#define zero $0 -#define AT $at -#define v0 $2 -#define v1 $3 -#define a0 $4 -#define a1 $5 -#define a2 $6 -#define a3 $7 -#define a4 $8 -#define ta0 $8 -#define a5 $9 -#define ta1 $9 -#define a6 $10 -#define ta2 $10 -#define a7 $11 -#define ta3 $11 -#define t0 $12 -#define t1 $13 -#define t2 $14 -#define t3 $15 -#define s0 $16 -#define s1 $17 -#define s2 $18 -#define s3 $19 -#define s4 $20 -#define s5 $21 -#define s6 $22 -#define s7 $23 -#define t8 $24 -#define t9 $25 -#define jp $25 -#define k0 $26 -#define k1 $27 -#define gp $28 -#define sp $29 -#define fp $30 -#define s8 $30 -#define ra $31 +#define zero $0 +#define AT $at +#define v0 $2 +#define v1 $3 +#define a0 $4 +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define a4 $8 +#define ta0 $8 +#define a5 $9 +#define ta1 $9 +#define a6 $10 +#define ta2 $10 +#define a7 $11 +#define ta3 $11 +#define t0 $12 +#define t1 $13 +#define t2 $14 +#define t3 $15 +#define s0 $16 +#define s1 $17 +#define s2 $18 +#define s3 $19 +#define s4 $20 +#define s5 $21 +#define s6 $22 +#define s7 $23 +#define t8 $24 +#define t9 $25 +#define jp $25 +#define k0 $26 +#define k1 $27 +#define gp $28 +#define sp $29 +#define fp $30 +#define s8 $30 +#define ra $31 #endif #if (_MIPS_SIM == _MIPS_SIM_ABI32) -#define fv0 $f0 -#define fv0f $f1 -#define fv1 $f2 -#define fv1f $f3 -#define fa0 $f12 -#define fa0f $f13 -#define fa1 $f14 -#define fa1f $f15 -#define ft0 $f4 -#define ft0f $f5 -#define ft1 $f6 -#define ft1f $f7 -#define ft2 $f8 -#define ft2f $f9 -#define ft3 $f10 -#define ft3f $f11 -#define ft4 $f16 -#define ft4f $f17 -#define ft5 $f18 -#define ft5f $f19 -#define fs0 $f20 -#define fs0f $f21 -#define fs1 $f22 -#define fs1f $f23 -#define fs2 $f24 -#define fs2f $f25 -#define fs3 $f26 -#define fs3f $f27 -#define fs4 $f28 -#define fs4f $f29 -#define fs5 $f30 -#define fs5f $f31 +#define fv0 $f0 +#define fv0f $f1 +#define fv1 $f2 +#define fv1f $f3 +#define fa0 $f12 +#define fa0f $f13 +#define fa1 $f14 +#define fa1f $f15 +#define ft0 $f4 +#define ft0f $f5 +#define ft1 $f6 +#define ft1f $f7 +#define ft2 $f8 +#define ft2f $f9 +#define ft3 $f10 +#define ft3f $f11 +#define ft4 $f16 +#define ft4f $f17 +#define ft5 $f18 +#define ft5f $f19 +#define fs0 $f20 +#define fs0f $f21 +#define fs1 $f22 +#define fs1f $f23 +#define fs2 $f24 +#define fs2f $f25 +#define fs3 $f26 +#define fs3f $f27 +#define fs4 $f28 +#define fs4f $f29 +#define fs5 $f30 +#define fs5f $f31 #endif #if (_MIPS_SIM == _MIPS_SIM_ABI64) -#define fv0 $f0 -#define fv1 $f2 -#define fa0 $f12 -#define fa1 $f13 -#define fa2 $f14 -#define fa3 $f15 -#define fa4 $f16 -#define fa5 $f17 -#define fa6 $f18 -#define fa7 $f19 -#define ft0 $f4 -#define ft1 $f5 -#define ft2 $f6 -#define ft3 $f7 -#define ft4 $f8 -#define ft5 $f9 -#define ft6 $f10 -#define ft7 $f11 -#define ft8 $f20 -#define ft9 $f21 -#define ft10 $f22 -#define ft11 $f23 -#define ft12 $f1 -#define ft13 $f3 -#define fs0 $f24 -#define fs1 $f25 -#define fs2 $f26 -#define fs3 $f27 -#define fs4 $f28 -#define fs5 $f29 -#define fs6 $f30 -#define fs7 $f31 +#define fv0 $f0 +#define fv1 $f2 +#define fa0 $f12 +#define fa1 $f13 +#define fa2 $f14 +#define fa3 $f15 +#define fa4 $f16 +#define fa5 $f17 +#define fa6 $f18 +#define fa7 $f19 +#define ft0 $f4 +#define ft1 $f5 +#define ft2 $f6 +#define ft3 $f7 +#define ft4 $f8 +#define ft5 $f9 +#define ft6 $f10 +#define ft7 $f11 +#define ft8 $f20 +#define ft9 $f21 +#define ft10 $f22 +#define ft11 $f23 +#define ft12 $f1 +#define ft13 $f3 +#define fs0 $f24 +#define fs1 $f25 +#define fs2 $f26 +#define fs3 $f27 +#define fs4 $f28 +#define fs5 $f29 +#define fs6 $f30 +#define fs7 $f31 #endif -#define fcr31 $31 +#define fcr31 $31 #endif /* mips */ diff --git a/src/mgu/rotate.c b/src/mgu/rotate.c index 1c09bd8..9666284 100644 --- a/src/mgu/rotate.c +++ b/src/mgu/rotate.c @@ -14,60 +14,58 @@ #include "gu.h" #include "os_version.h" -void guRotateF(float mf[4][4], float a, float x, float y, float z) -{ - static float dtor = 3.1415926 / 180.0; - float sine; - float cosine; - float ab, bc, ca, t; +void guRotateF(float mf[4][4], float a, float x, float y, float z) { + static float dtor = 3.1415926 / 180.0; + float sine; + float cosine; + float ab, bc, ca, t; #if BUILD_VERSION >= VERSION_K - float xxsine; - float yxsine; - float zxsine; + float xxsine; + float yxsine; + float zxsine; #endif - guNormalize(&x, &y, &z); - a *= dtor; - sine = sinf(a); - cosine = cosf(a); - t = (1-cosine); - ab = x*y*t; - bc = y*z*t; - ca = z*x*t; + guNormalize(&x, &y, &z); + a *= dtor; + sine = sinf(a); + cosine = cosf(a); + t = (1 - cosine); + ab = x * y * t; + bc = y * z * t; + ca = z * x * t; - guMtxIdentF(mf); + guMtxIdentF(mf); #if BUILD_VERSION >= VERSION_K xxsine = x * sine; yxsine = y * sine; zxsine = z * sine; #else - #define xxsine (x * sine) - #define yxsine (y * sine) - #define zxsine (z * sine) +#define xxsine (x * sine) +#define yxsine (y * sine) +#define zxsine (z * sine) #endif - t = x*x; - mf[0][0] = t+cosine*(1-t); - mf[2][1] = bc-xxsine; - mf[1][2] = bc+xxsine; + t = x * x; + mf[0][0] = t + cosine * (1 - t); + mf[2][1] = bc - xxsine; + mf[1][2] = bc + xxsine; - t = y*y; - mf[1][1] = t+cosine*(1-t); - mf[2][0] = ca+yxsine; - mf[0][2] = ca-yxsine; + t = y * y; + mf[1][1] = t + cosine * (1 - t); + mf[2][0] = ca + yxsine; + mf[0][2] = ca - yxsine; - t = z*z; - mf[2][2] = t+cosine*(1-t); - mf[1][0] = ab-zxsine; - mf[0][1] = ab+zxsine; + t = z * z; + mf[2][2] = t + cosine * (1 - t); + mf[1][0] = ab - zxsine; + mf[0][1] = ab + zxsine; } -void guRotate(Mtx *m, float a, float x, float y, float z) -{ - Matrix mf; +void guRotate(Mtx* m, float a, float x, float y, float z) { + Matrix mf; - guRotateF(mf, a, x, y, z); + guRotateF(mf, a, x, y, z); - guMtxF2L(mf, m); + guMtxF2L(mf, m); } diff --git a/src/os/exceptasm.h b/src/os/exceptasm.h index 0d7def5..f74630d 100644 --- a/src/os/exceptasm.h +++ b/src/os/exceptasm.h @@ -5,15 +5,15 @@ #define MESG(type) (type << 3) -#define MQ_MTQUEUE 0 -#define MQ_FULLQUEUE 4 +#define MQ_MTQUEUE 0 +#define MQ_FULLQUEUE 4 #define MQ_VALIDCOUNT 8 -#define MQ_FIRST 12 -#define MQ_MSGCOUNT 16 -#define MQ_MSG 20 +#define MQ_FIRST 12 +#define MQ_MSGCOUNT 16 +#define MQ_MSG 20 #define OS_EVENTSTATE_MESSAGE_QUEUE 0 -#define OS_EVENTSTATE_MESSAGE 4 +#define OS_EVENTSTATE_MESSAGE 4 /* __osHwInt struct member offsets */ #define HWINTR_CALLBACK 0x00 @@ -21,9 +21,9 @@ /* __osHwInt struct size */ #if BUILD_VERSION >= VERSION_J -#define HWINTR_SIZE 0x8 +#define HWINTR_SIZE 0x8 #else -#define HWINTR_SIZE 0x4 +#define HWINTR_SIZE 0x4 #endif #endif diff --git a/src/os/getmemsize.c b/src/os/getmemsize.c index 814443d..7bae786 100644 --- a/src/os/getmemsize.c +++ b/src/os/getmemsize.c @@ -2,7 +2,7 @@ #include "PR/rcp.h" #include "PR/R4300.h" -#define STEP 0x100000 +#define STEP 0x100000 #define SIZE_4MB 0x400000 #define SIZE_8MB 0x800000 @@ -45,7 +45,7 @@ u32 osGetMemSize(void) { memsize += STEP; memory = (u32*)(memsize + K1BASE); memory[0] = 0x12345678; - memory[STEP / 4 - 1] = 0x87654321; + memory[STEP / 4 - 1] = 0x87654321; } while (memory[0] == 0x12345678 && memory[STEP / 4 - 1] == 0x87654321); return memsize; } diff --git a/src/os/initialize.c b/src/os/initialize.c index b483ad7..b40ccd9 100644 --- a/src/os/initialize.c +++ b/src/os/initialize.c @@ -29,11 +29,11 @@ void* __printfunc = NULL; #if BUILD_VERSION >= VERSION_K -#define INITIALIZE_FUNC __osInitialize_common +#define INITIALIZE_FUNC __osInitialize_common #define SPEED_PARAM_FUNC __createSpeedParam #else -#define INITIALIZE_FUNC osInitialize +#define INITIALIZE_FUNC osInitialize #define SPEED_PARAM_FUNC createSpeedParam #if BUILD_VERSION >= VERSION_J static void ptstart(void); @@ -69,7 +69,7 @@ void INITIALIZE_FUNC() { __osFinalrom = TRUE; #endif - __osSetSR(__osGetSR() | SR_CU1); // enable fpu + __osSetSR(__osGetSR() | SR_CU1); // enable fpu __osSetFpcCsr(FPCSR_FS | FPCSR_EV | FPCSR_RM_RN); // flush denorm to zero, enable invalid operation #if BUILD_VERSION >= VERSION_K __osSetWatchLo(0x4900000); @@ -95,8 +95,7 @@ void INITIALIZE_FUNC() { osMapTLBRdb(); osPiRawReadIo(4, &clock); // Read clock rate from the ROM header clock &= ~0xf; - if (clock != 0) - { + if (clock != 0) { osClockRate = clock; } #endif @@ -185,11 +184,9 @@ void INITIALIZE_FUNC() { #if !defined(_FINALROM) && BUILD_VERSION < VERSION_J void ptstart(void) { - } #elif !defined(_FINALROM) && BUILD_VERSION < VERSION_K static void ptstart(void) { - } #endif diff --git a/src/os/initialize_emu.c b/src/os/initialize_emu.c index cac68d3..1f0e5f3 100644 --- a/src/os/initialize_emu.c +++ b/src/os/initialize_emu.c @@ -1,5 +1,6 @@ #ifndef _FINALROM +#include "stdlib.h" #include "PR/os_internal.h" #include "PR/rdb.h" #include "PRinternal/osint.h" diff --git a/src/os/initialize_isv.c b/src/os/initialize_isv.c index 035511a..d8d85d2 100644 --- a/src/os/initialize_isv.c +++ b/src/os/initialize_isv.c @@ -17,13 +17,13 @@ extern __osExceptionVector __isExpJP; void MonitorInitBreak(void); -#define ISV_BASE gISVDbgPrnAdrs -#define ISV_MAGIC_ADDR (ISV_BASE + 0x00) -#define ISV_GET_ADDR (ISV_BASE + 0x04) -#define ISV_PUT_ADDR (ISV_BASE + 0x14) -#define ISV_BUFFER (ISV_BASE + 0x20) +#define ISV_BASE gISVDbgPrnAdrs +#define ISV_MAGIC_ADDR (ISV_BASE + 0x00) +#define ISV_GET_ADDR (ISV_BASE + 0x04) +#define ISV_PUT_ADDR (ISV_BASE + 0x14) +#define ISV_BUFFER (ISV_BASE + 0x20) -#define ISV_BUFFER_LEN (0x10000 - 0x20) +#define ISV_BUFFER_LEN (0x10000 - 0x20) #define IS64_MAGIC 'IS64' diff --git a/src/os/stopthread.c b/src/os/stopthread.c index 4047308..399fe2f 100644 --- a/src/os/stopthread.c +++ b/src/os/stopthread.c @@ -5,7 +5,7 @@ void osStopThread(OSThread* t) { register u32 saveMask = __osDisableInt(); register u16 state; - state = (t == NULL) ? OS_STATE_RUNNING: t->state; + state = (t == NULL) ? OS_STATE_RUNNING : t->state; switch (state) { case OS_STATE_RUNNING: diff --git a/src/os/threadasm.h b/src/os/threadasm.h index dfd91b6..852a7a3 100644 --- a/src/os/threadasm.h +++ b/src/os/threadasm.h @@ -2,67 +2,67 @@ #define _THREADASM_H_ /* Offsets of members in the OSThread struct */ -#define THREAD_NEXT 0 -#define THREAD_PRI 4 -#define THREAD_QUEUE 8 -#define THREAD_TLNEXT 12 -#define THREAD_STATE 16 -#define THREAD_FLAGS 18 -#define THREAD_ID 20 -#define THREAD_FP 24 -#define THREAD_GP1 32 -#define THREAD_GP2 40 -#define THREAD_GP3 48 -#define THREAD_GP4 56 -#define THREAD_GP5 64 -#define THREAD_GP6 72 -#define THREAD_GP7 80 -#define THREAD_GP8 88 -#define THREAD_GP9 96 -#define THREAD_GP10 104 -#define THREAD_GP11 112 -#define THREAD_GP12 120 -#define THREAD_GP13 128 -#define THREAD_GP14 136 -#define THREAD_GP15 144 -#define THREAD_GP16 152 -#define THREAD_GP17 160 -#define THREAD_GP18 168 -#define THREAD_GP19 176 -#define THREAD_GP20 184 -#define THREAD_GP21 192 -#define THREAD_GP22 200 -#define THREAD_GP23 208 -#define THREAD_GP24 216 -#define THREAD_GP25 224 +#define THREAD_NEXT 0 +#define THREAD_PRI 4 +#define THREAD_QUEUE 8 +#define THREAD_TLNEXT 12 +#define THREAD_STATE 16 +#define THREAD_FLAGS 18 +#define THREAD_ID 20 +#define THREAD_FP 24 +#define THREAD_GP1 32 +#define THREAD_GP2 40 +#define THREAD_GP3 48 +#define THREAD_GP4 56 +#define THREAD_GP5 64 +#define THREAD_GP6 72 +#define THREAD_GP7 80 +#define THREAD_GP8 88 +#define THREAD_GP9 96 +#define THREAD_GP10 104 +#define THREAD_GP11 112 +#define THREAD_GP12 120 +#define THREAD_GP13 128 +#define THREAD_GP14 136 +#define THREAD_GP15 144 +#define THREAD_GP16 152 +#define THREAD_GP17 160 +#define THREAD_GP18 168 +#define THREAD_GP19 176 +#define THREAD_GP20 184 +#define THREAD_GP21 192 +#define THREAD_GP22 200 +#define THREAD_GP23 208 +#define THREAD_GP24 216 +#define THREAD_GP25 224 /* k0 and k1 are reserved for the kernel */ -#define THREAD_GP28 232 -#define THREAD_GP29 240 -#define THREAD_GP30 248 -#define THREAD_GP31 256 -#define THREAD_LO 264 -#define THREAD_HI 272 -#define THREAD_SR 280 -#define THREAD_PC 284 -#define THREAD_CAUSE 288 -#define THREAD_BADVADDR 292 -#define THREAD_RCP 296 -#define THREAD_FPCSR 300 -#define THREAD_FP0 304 -#define THREAD_FP2 312 -#define THREAD_FP4 320 -#define THREAD_FP6 328 -#define THREAD_FP8 336 -#define THREAD_FP10 344 -#define THREAD_FP12 352 -#define THREAD_FP14 360 -#define THREAD_FP16 368 -#define THREAD_FP18 376 -#define THREAD_FP20 384 -#define THREAD_FP22 392 -#define THREAD_FP24 400 -#define THREAD_FP26 408 -#define THREAD_FP28 416 -#define THREAD_FP30 424 +#define THREAD_GP28 232 +#define THREAD_GP29 240 +#define THREAD_GP30 248 +#define THREAD_GP31 256 +#define THREAD_LO 264 +#define THREAD_HI 272 +#define THREAD_SR 280 +#define THREAD_PC 284 +#define THREAD_CAUSE 288 +#define THREAD_BADVADDR 292 +#define THREAD_RCP 296 +#define THREAD_FPCSR 300 +#define THREAD_FP0 304 +#define THREAD_FP2 312 +#define THREAD_FP4 320 +#define THREAD_FP6 328 +#define THREAD_FP8 336 +#define THREAD_FP10 344 +#define THREAD_FP12 352 +#define THREAD_FP14 360 +#define THREAD_FP16 368 +#define THREAD_FP18 376 +#define THREAD_FP20 384 +#define THREAD_FP22 392 +#define THREAD_FP24 400 +#define THREAD_FP26 408 +#define THREAD_FP28 416 +#define THREAD_FP30 424 #endif diff --git a/src/rg/free.c b/src/rg/free.c index c426000..23fa397 100644 --- a/src/rg/free.c +++ b/src/rg/free.c @@ -4,42 +4,6 @@ #include "PR/os_internal.h" #include "assert.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // TODO: this comes from a header #ident "$Revision: 1.17 $" diff --git a/src/rg/getbufcount.c b/src/rg/getbufcount.c index d4deeba..7b4dd96 100644 --- a/src/rg/getbufcount.c +++ b/src/rg/getbufcount.c @@ -3,43 +3,6 @@ #include "PR/os_internal.h" #include "assert.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // TODO: this comes from a header #ident "$Revision: 1.17 $" diff --git a/src/rg/getsize.c b/src/rg/getsize.c index 2b1fb90..1cbc5be 100644 --- a/src/rg/getsize.c +++ b/src/rg/getsize.c @@ -3,42 +3,6 @@ #include "PR/os_internal.h" #include "assert.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // TODO: this comes from a header #ident "$Revision: 1.17 $" diff --git a/src/rg/malloc.c b/src/rg/malloc.c index 59c0399..e397420 100644 --- a/src/rg/malloc.c +++ b/src/rg/malloc.c @@ -3,48 +3,6 @@ #include "PR/os_internal.h" #include "assert.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // TODO: this comes from a header #ident "$Revision: 1.17 $" diff --git a/src/rg/region.c b/src/rg/region.c index 377ec9e..7d08c8d 100644 --- a/src/rg/region.c +++ b/src/rg/region.c @@ -3,182 +3,6 @@ #include "os_internal_error.h" #include "assert.h" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // TODO: this comes from a header #ident "$Revision: 1.17 $" @@ -190,8 +14,8 @@ void* osCreateRegion(void* startAddress, u32 length, u32 bufferSize, u32 alignSi assert(startAddress != NULL); #ifdef _DEBUG - if ((alignSize != 0) && (alignSize != OS_RG_ALIGN_2B) && (alignSize != OS_RG_ALIGN_4B) && - (alignSize != OS_RG_ALIGN_8B) && (alignSize != OS_RG_ALIGN_16B)) { + if ((alignSize != 0) && (alignSize != OS_RG_ALIGN_2B) && (alignSize != OS_RG_ALIGN_4B) + && (alignSize != OS_RG_ALIGN_8B) && (alignSize != OS_RG_ALIGN_16B)) { __osError(ERR_OSCREATEREGION_ALIGN, 1, alignSize); return 0; } diff --git a/src/rmon/rmonbrk.c b/src/rmon/rmonbrk.c index 0fe4ba2..27f0f96 100644 --- a/src/rmon/rmonbrk.c +++ b/src/rmon/rmonbrk.c @@ -19,7 +19,7 @@ #ident "$Revision: 1.3 $" #endif -#define TMP_BP 0 +#define TMP_BP 0 #define NUM_BREAKPOINTS 16 typedef struct { diff --git a/src/rmon/rmonmain.c b/src/rmon/rmonmain.c index b17434c..7ac7049 100644 --- a/src/rmon/rmonmain.c +++ b/src/rmon/rmonmain.c @@ -103,7 +103,6 @@ void rmonMain(void) { __rmonInit(); __rmonActive = TRUE; - state = 0, newChars = 0, inPointer = (void*)&inbuffer; for (;;) { OSMesg work; diff --git a/src/rmon/rmonmem.c b/src/rmon/rmonmem.c index 3fe11c9..8616576 100644 --- a/src/rmon/rmonmem.c +++ b/src/rmon/rmonmem.c @@ -82,9 +82,9 @@ int __rmonReadMem(KKHeader* req) { } if (req->method == RMON_RSP) { - if (!((request->addr < SP_IMEM_START || (request->addr + request->nbytes) > SP_IMEM_END) ? FALSE : TRUE) && - !((request->addr < SP_DMEM_START || (request->addr + request->nbytes) > SP_DMEM_END) ? FALSE : TRUE)) { - return TV_ERROR_INVALID_ADDRESS; + if (!((request->addr < SP_IMEM_START || (request->addr + request->nbytes) > SP_IMEM_END) ? FALSE : TRUE) + && !((request->addr < SP_DMEM_START || (request->addr + request->nbytes) > SP_DMEM_END) ? FALSE : TRUE)) { + return TV_ERROR_INVALID_ADDRESS; } } else if (osVirtualToPhysical((void*)request->addr) == (u32)-1) { return TV_ERROR_INVALID_ADDRESS; @@ -121,8 +121,10 @@ int __rmonWriteMem(KKHeader* req) { return TV_ERROR_INVALID_CAPABILITY; } - if (((request->writeHeader.addr < SP_DMEM_START || - (request->writeHeader.addr + request->writeHeader.nbytes) > 0x04FFFFFF) ? FALSE : TRUE)) { + if (((request->writeHeader.addr < SP_DMEM_START + || (request->writeHeader.addr + request->writeHeader.nbytes) > 0x04FFFFFF) + ? FALSE + : TRUE)) { int align; u32 word; diff --git a/src/rmon/rmonmisc.c b/src/rmon/rmonmisc.c index 503d422..f13d8dc 100644 --- a/src/rmon/rmonmisc.c +++ b/src/rmon/rmonmisc.c @@ -45,8 +45,7 @@ void __rmonInit(void) { osSetEventMesg(OS_EVENT_SP_BREAK, &__rmonMQ, (OSMesg)RMON_MESG_SP_BREAK); osSetEventMesg(OS_EVENT_FAULT, &__rmonMQ, (OSMesg)RMON_MESG_FAULT); osSetEventMesg(OS_EVENT_THREADSTATUS, &__rmonMQ, NULL); - osCreateThread(&rmonIOThread, 0, (void (*)(void*))__rmonIOhandler, NULL, STACK_START(rmonIOStack), - OS_PRIORITY_MAX); + osCreateThread(&rmonIOThread, 0, (void (*)(void*))__rmonIOhandler, NULL, STACK_START(rmonIOStack), OS_PRIORITY_MAX); osCreatePiManager(OS_PRIORITY_PIMGR, &rmonPiMQ, rmonPiMsgs, ARRLEN(rmonPiMsgs)); osStartThread(&rmonIOThread); } diff --git a/src/rmon/rmonregs.c b/src/rmon/rmonregs.c index 7c56413..fdece90 100644 --- a/src/rmon/rmonregs.c +++ b/src/rmon/rmonregs.c @@ -40,17 +40,17 @@ typedef union { u32 everything; struct { int opcode : 6; - int base : 5; - int rt : 5; + int base : 5; + int rt : 5; int offset : 16; } scalarop; struct { - int opcode : 6; - int base : 5; - int rt : 5; - int size : 5; + int opcode : 6; + int base : 5; + int rt : 5; + int size : 5; int element : 4; - int offset : 7; + int offset : 7; } vectorop; } INSTRUCTION; diff --git a/src/rmon/rmontask.c b/src/rmon/rmontask.c index aa40ea9..b74e562 100644 --- a/src/rmon/rmontask.c +++ b/src/rmon/rmontask.c @@ -236,8 +236,9 @@ int __rmonStopThread(KKHeader* req) { break; } pc--; - /* Check if the RSP is stopped in a branch delay slot, if it is step out of it. The RSP would otherwise - lose information about whether the branch should or should not be taken when reading registers. */ + /* Check if the RSP is stopped in a branch delay slot, if it is step out of it. The RSP + would otherwise lose information about whether the branch should or should not be + taken when reading registers. */ if (__rmonGetBranchTarget(RMON_RSP, RMON_TID_RSP, (void*)((u32)pc + SP_IMEM_START)) % 4 == 0) { __rmonStepRCP(); } @@ -302,11 +303,12 @@ int __rmonRunThread(KKHeader* req) { __rmonWriteWordTo((u32*)SP_PC_REG, request->actions.vaddr - SP_IMEM_START); } if (request->actions.flags & KK_RUN_SSTEP) { - /* If the RSP is stopped at a branch step twice so as to not stop in a branch delay slot. */ + /* If the RSP is stopped at a branch step twice so as to not stop in a branch delay + * slot. */ if (__rmonGetBranchTarget(RMON_RSP, RMON_TID_RSP, - (void*)(__rmonReadWordAt((u32*)SP_PC_REG) + SP_IMEM_START)) % - 4 == - 0) { + (void*)(__rmonReadWordAt((u32*)SP_PC_REG) + SP_IMEM_START)) + % 4 + == 0) { __rmonStepRCP(); } __rmonStepRCP(); diff --git a/src/sched/sched.c b/src/sched/sched.c index 70ebf55..53b3032 100644 --- a/src/sched/sched.c +++ b/src/sched/sched.c @@ -1,5 +1,5 @@ /*==================================================================== - * + * * Copyright 1995, Silicon Graphics, Inc. * All Rights Reserved. * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, @@ -24,103 +24,97 @@ /* * private typedefs and defines */ -#define VIDEO_MSG 666 -#define RSP_DONE_MSG 667 -#define RDP_DONE_MSG 668 -#define PRE_NMI_MSG 669 +#define VIDEO_MSG 666 +#define RSP_DONE_MSG 667 +#define RDP_DONE_MSG 668 +#define PRE_NMI_MSG 669 /* * OSScTask state */ -#define OS_SC_DP 0x0001 /* set if still needs dp */ -#define OS_SC_SP 0x0002 /* set if still needs sp */ -#define OS_SC_YIELD 0x0010 /* set if yield requested */ -#define OS_SC_YIELDED 0x0020 /* set if yield completed */ +#define OS_SC_DP 0x0001 /* set if still needs dp */ +#define OS_SC_SP 0x0002 /* set if still needs sp */ +#define OS_SC_YIELD 0x0010 /* set if yield requested */ +#define OS_SC_YIELDED 0x0020 /* set if yield completed */ /* * OSScTask->flags type identifier */ -#define OS_SC_XBUS (OS_SC_SP | OS_SC_DP) -#define OS_SC_DRAM (OS_SC_SP | OS_SC_DP | OS_SC_DRAM_DLIST) -#define OS_SC_DP_XBUS (OS_SC_SP) -#define OS_SC_DP_DRAM (OS_SC_SP | OS_SC_DRAM_DLIST) -#define OS_SC_SP_XBUS (OS_SC_DP) -#define OS_SC_SP_DRAM (OS_SC_DP | OS_SC_DRAM_DLIST) +#define OS_SC_XBUS (OS_SC_SP | OS_SC_DP) +#define OS_SC_DRAM (OS_SC_SP | OS_SC_DP | OS_SC_DRAM_DLIST) +#define OS_SC_DP_XBUS (OS_SC_SP) +#define OS_SC_DP_DRAM (OS_SC_SP | OS_SC_DRAM_DLIST) +#define OS_SC_SP_XBUS (OS_SC_DP) +#define OS_SC_SP_DRAM (OS_SC_DP | OS_SC_DRAM_DLIST) /* * private functions */ -static void __scMain(void *arg); -static void __scHandleRetrace(OSSched *s); -static void __scHandleRSP(OSSched *s); -static void __scHandleRDP(OSSched *s); - -static void __scAppendList(OSSched *s, OSScTask *t); -OSScTask *__scTaskReady(OSScTask *t); -static s32 __scTaskComplete(OSSched *s,OSScTask *t); -static void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp); -static void __scYield(OSSched *s); -static s32 __scSchedule(OSSched *sc, OSScTask **sp, OSScTask **dp, - s32 availRCP); +static void __scMain(void* arg); +static void __scHandleRetrace(OSSched* s); +static void __scHandleRSP(OSSched* s); +static void __scHandleRDP(OSSched* s); +static void __scAppendList(OSSched* s, OSScTask* t); +OSScTask* __scTaskReady(OSScTask* t); +static s32 __scTaskComplete(OSSched* s, OSScTask* t); +static void __scExec(OSSched* sc, OSScTask* sp, OSScTask* dp); +static void __scYield(OSSched* s); +static s32 __scSchedule(OSSched* sc, OSScTask** sp, OSScTask** dp, s32 availRCP); /* #define SC_LOGGING 1 */ - #ifdef SC_LOGGING -#define SC_LOG_LEN 32*1024 -static OSLog scLog; -static OSLog *l = &scLog; -static u32 logArray[SC_LOG_LEN/sizeof(u32)]; +#define SC_LOG_LEN 32 * 1024 +static OSLog scLog; +static OSLog* l = &scLog; +static u32 logArray[SC_LOG_LEN / sizeof(u32)]; #endif /*********************************************************************** * Scheduler API **********************************************************************/ -void osCreateScheduler(OSSched *sc, void *stack, OSPri priority, - u8 mode, u8 numFields) -{ - sc->curRSPTask = 0; - sc->curRDPTask = 0; - sc->clientList = 0; - sc->frameCount = 0; - sc->audioListHead = 0; - sc->gfxListHead = 0; - sc->audioListTail = 0; - sc->gfxListTail = 0; - sc->retraceMsg.type = OS_SC_RETRACE_MSG; /* sent to apps */ - sc->prenmiMsg.type = OS_SC_PRE_NMI_MSG; - +void osCreateScheduler(OSSched* sc, void* stack, OSPri priority, u8 mode, u8 numFields) { + sc->curRSPTask = 0; + sc->curRDPTask = 0; + sc->clientList = 0; + sc->frameCount = 0; + sc->audioListHead = 0; + sc->gfxListHead = 0; + sc->audioListTail = 0; + sc->gfxListTail = 0; + sc->retraceMsg.type = OS_SC_RETRACE_MSG; /* sent to apps */ + sc->prenmiMsg.type = OS_SC_PRE_NMI_MSG; + osCreateMesgQueue(&sc->interruptQ, sc->intBuf, OS_SC_MAX_MESGS); osCreateMesgQueue(&sc->cmdQ, sc->cmdMsgBuf, OS_SC_MAX_MESGS); /* * Set up video manager, listen for Video, RSP, and RDP interrupts */ - osCreateViManager(OS_PRIORITY_VIMGR); + osCreateViManager(OS_PRIORITY_VIMGR); osViSetMode(&osViModeTable[mode]); osViBlack(TRUE); osSetEventMesg(OS_EVENT_SP, &sc->interruptQ, (OSMesg)RSP_DONE_MSG); - osSetEventMesg(OS_EVENT_DP, &sc->interruptQ, (OSMesg)RDP_DONE_MSG); - osSetEventMesg(OS_EVENT_PRENMI, &sc->interruptQ, (OSMesg)PRE_NMI_MSG); + osSetEventMesg(OS_EVENT_DP, &sc->interruptQ, (OSMesg)RDP_DONE_MSG); + osSetEventMesg(OS_EVENT_PRENMI, &sc->interruptQ, (OSMesg)PRE_NMI_MSG); - osViSetEvent(&sc->interruptQ, (OSMesg)VIDEO_MSG, numFields); + osViSetEvent(&sc->interruptQ, (OSMesg)VIDEO_MSG, numFields); -#ifdef SC_LOGGING +#ifdef SC_LOGGING osCreateLog(l, logArray, sizeof(logArray)); #endif - osCreateThread(&sc->thread, 4, __scMain, (void *)sc, stack, priority); + osCreateThread(&sc->thread, 4, __scMain, (void*)sc, stack, priority); osStartThread(&sc->thread); } /* * Add a client to the scheduler. Clients receive messages at retrace time */ -void osScAddClient(OSSched *sc, OSScClient *c, OSMesgQueue *msgQ) -{ +void osScAddClient(OSSched* sc, OSScClient* c, OSMesgQueue* msgQ) { OSIntMask mask; mask = osSetIntMask(OS_IM_NONE); @@ -132,76 +126,71 @@ void osScAddClient(OSSched *sc, OSScClient *c, OSMesgQueue *msgQ) osSetIntMask(mask); } -void osScRemoveClient(OSSched *sc, OSScClient *c) -{ - OSScClient *client = sc->clientList; - OSScClient *prev = 0; - OSIntMask mask; +void osScRemoveClient(OSSched* sc, OSScClient* c) { + OSScClient* client = sc->clientList; + OSScClient* prev = 0; + OSIntMask mask; mask = osSetIntMask(OS_IM_NONE); - + while (client != 0) { if (client == c) { - if(prev) - prev->next = c->next; - else - sc->clientList = c->next; + if (prev) + prev->next = c->next; + else + sc->clientList = c->next; break; } - prev = client; + prev = client; client = client->next; } osSetIntMask(mask); } -OSMesgQueue *osScGetCmdQ(OSSched *sc) -{ +OSMesgQueue* osScGetCmdQ(OSSched* sc) { return &sc->cmdQ; } /*********************************************************************** * Scheduler implementation **********************************************************************/ -static void __scMain(void *arg) -{ +static void __scMain(void* arg) { OSMesg msg; - OSSched *sc = (OSSched *)arg; - OSScClient *client; + OSSched* sc = (OSSched*)arg; + OSScClient* client; static int count = 0; - - while (1) { - - osRecvMesg(&sc->interruptQ, (OSMesg *)&msg, OS_MESG_BLOCK); -#ifdef SC_LOGGING + while (1) { + + osRecvMesg(&sc->interruptQ, (OSMesg*)&msg, OS_MESG_BLOCK); + +#ifdef SC_LOGGING if (++count % 1024 == 0) osFlushLog(l); #endif - - switch ((int) msg) { - case (VIDEO_MSG): - __scHandleRetrace(sc); - break; + switch ((int)msg) { + case (VIDEO_MSG): + __scHandleRetrace(sc); + break; - case (RSP_DONE_MSG): - __scHandleRSP(sc); - break; + case (RSP_DONE_MSG): + __scHandleRSP(sc); + break; - case (RDP_DONE_MSG): - __scHandleRDP(sc); - break; + case (RDP_DONE_MSG): + __scHandleRDP(sc); + break; - case (PRE_NMI_MSG): - /* - * notify audio and graphics threads to fade out - */ - for (client = sc->clientList;client != 0;client = client->next) { - osSendMesg(client->msgQ, (OSMesg) &sc->prenmiMsg, - OS_MESG_NOBLOCK); - } - break; + case (PRE_NMI_MSG): + /* + * notify audio and graphics threads to fade out + */ + for (client = sc->clientList; client != 0; client = client->next) { + osSendMesg(client->msgQ, (OSMesg)&sc->prenmiMsg, OS_MESG_NOBLOCK); + } + break; } } } @@ -212,17 +201,16 @@ static void __scMain(void *arg) static int dp_busy = 0; static int dpCount = 0; -void __scHandleRetrace(OSSched *sc) -{ - OSScTask *rspTask; - OSScClient *client; - s32 i; - s32 state; - OSScTask *sp = 0; - OSScTask *dp = 0; - +void __scHandleRetrace(OSSched* sc) { + OSScTask* rspTask; + OSScClient* client; + s32 i; + s32 state; + OSScTask* sp = 0; + OSScTask* dp = 0; + sc->frameCount++; - + #ifdef SC_LOGGING osLogEvent(l, 500, 4, sc->frameCount, sc->curRSPTask, sc->curRDPTask); #endif @@ -230,10 +218,10 @@ void __scHandleRetrace(OSSched *sc) /* * Read the task command queue and schedule tasks */ - while (osRecvMesg(&sc->cmdQ, (OSMesg *)&rspTask, OS_MESG_NOBLOCK) != -1) { + while (osRecvMesg(&sc->cmdQ, (OSMesg*)&rspTask, OS_MESG_NOBLOCK) != -1) { __scAppendList(sc, rspTask); } - + if (sc->doAudio && sc->curRSPTask) { /* * Preempt the running gfx task. Note: if the RSP @@ -245,17 +233,17 @@ void __scHandleRetrace(OSSched *sc) __scYield(sc); } else { state = ((sc->curRSPTask == 0) << 1) | (sc->curRDPTask == 0); - if ( __scSchedule (sc, &sp, &dp, state) != state) + if (__scSchedule(sc, &sp, &dp, state) != state) __scExec(sc, sp, dp); } - + /* * notify audio and graphics threads to start building the command * lists for the next frame (client threads may choose not to * build the list in overrun case) */ for (client = sc->clientList; client != 0; client = client->next) { - osSendMesg(client->msgQ, (OSMesg) &sc->retraceMsg, OS_MESG_NOBLOCK); + osSendMesg(client->msgQ, (OSMesg)&sc->retraceMsg, OS_MESG_NOBLOCK); } } @@ -263,25 +251,23 @@ void __scHandleRetrace(OSSched *sc) * __scHandleRSP is called when an RSP task signals that it has * finished or yielded (at the hosts request) */ -void __scHandleRSP(OSSched *sc) -{ +void __scHandleRSP(OSSched* sc) { OSScTask *t, *sp = 0, *dp = 0; s32 state; - assert(sc->curRSPTask); t = sc->curRSPTask; sc->curRSPTask = 0; - -#ifdef SC_LOGGING + +#ifdef SC_LOGGING osLogEvent(l, 510, 3, t, t->state, t->flags); #endif - + if ((t->state & OS_SC_YIELD) && osSpTaskYielded(&t->list)) { t->state |= OS_SC_YIELDED; #ifndef _FINALROM - t->totalTime += osGetTime() - t->startTime; + t->totalTime += osGetTime() - t->startTime; #endif if ((t->flags & OS_SC_TYPE_MASK) == OS_SC_XBUS) { /* push the task back on the list */ @@ -290,18 +276,18 @@ void __scHandleRSP(OSSched *sc) if (sc->gfxListTail == 0) sc->gfxListTail = t; } - + #ifdef SC_LOGGING osLogEvent(l, 521, 1, t); #endif - + } else { t->state &= ~OS_SC_NEEDS_RSP; __scTaskComplete(sc, t); } state = ((sc->curRSPTask == 0) << 1) | (sc->curRDPTask == 0); - if ( (__scSchedule (sc, &sp, &dp, state)) != state) + if ((__scSchedule(sc, &sp, &dp, state)) != state) __scExec(sc, sp, dp); } @@ -309,18 +295,17 @@ void __scHandleRSP(OSSched *sc) * __scHandleRDP is called when an RDP task signals that it has * finished */ -void __scHandleRDP(OSSched *sc) -{ - OSScTask *t, *sp = 0, *dp = 0; +void __scHandleRDP(OSSched* sc) { + OSScTask *t, *sp = 0, *dp = 0; s32 state; - + assert(sc->curRDPTask); assert(sc->curRDPTask->list.t.type == M_GFXTASK); - + t = sc->curRDPTask; sc->curRDPTask = 0; - -#ifdef SC_LOGGING + +#ifdef SC_LOGGING osLogEvent(l, 515, 3, t, t->state, t->flags); #endif @@ -329,7 +314,7 @@ void __scHandleRDP(OSSched *sc) __scTaskComplete(sc, t); state = ((sc->curRSPTask == 0) << 1) | (sc->curRDPTask == 0); - if ( (__scSchedule (sc, &sp, &dp, state)) != state) + if ((__scSchedule(sc, &sp, &dp, state)) != state) __scExec(sc, sp, dp); } @@ -337,21 +322,20 @@ void __scHandleRDP(OSSched *sc) * __scTaskReady checks to see if the graphics task is able to run * based on the current state of the RCP. */ -OSScTask *__scTaskReady(OSScTask *t) -{ +OSScTask* __scTaskReady(OSScTask* t) { int rv = 0; - void *a; - void *b; + void* a; + void* b; - if (t) { + if (t) { /* * If there is a pending swap bail out til later (next * retrace). */ - if ((a=osViGetCurrentFramebuffer()) != (b=osViGetNextFramebuffer())) { + if ((a = osViGetCurrentFramebuffer()) != (b = osViGetNextFramebuffer())) { #ifdef SC_LOGGING osLogEvent(l, 513, 2, a, b); -#endif +#endif return 0; } @@ -366,57 +350,55 @@ OSScTask *__scTaskReady(OSScTask *t) * operations have been performed) and sends the done message to the * client if it is. */ -s32 __scTaskComplete(OSSched *sc, OSScTask *t) -{ +s32 __scTaskComplete(OSSched* sc, OSScTask* t) { int rv; static int firsttime = 1; if ((t->state & OS_SC_RCP_MASK) == 0) { /* none of the needs bits set */ - assert (t->msgQ); + assert(t->msgQ); #ifndef _FINALROM - t->totalTime += osGetTime() - t->startTime; + t->totalTime += osGetTime() - t->startTime; #endif - + #ifdef SC_LOGGING osLogEvent(l, 504, 1, t); #endif rv = osSendMesg(t->msgQ, t->msg, OS_MESG_BLOCK); - if (t->list.t.type == M_GFXTASK) { - if ((t->flags & OS_SC_SWAPBUFFER) && (t->flags & OS_SC_LAST_TASK)){ - if (firsttime) { - osViBlack(FALSE); - firsttime = 0; - } + if (t->list.t.type == M_GFXTASK) { + if ((t->flags & OS_SC_SWAPBUFFER) && (t->flags & OS_SC_LAST_TASK)) { + if (firsttime) { + osViBlack(FALSE); + firsttime = 0; + } osViSwapBuffer(t->framebuffer); #ifdef SC_LOGGING - osLogEvent(l, 525, 1, t->framebuffer); + osLogEvent(l, 525, 1, t->framebuffer); #endif } - } + } return 1; } - + return 0; } /* * Place task on either the audio or graphics queue */ -void __scAppendList(OSSched *sc, OSScTask *t) -{ +void __scAppendList(OSSched* sc, OSScTask* t) { long type = t->list.t.type; - - assert ( (type == M_AUDTASK) || (type == M_GFXTASK)); - + + assert((type == M_AUDTASK) || (type == M_GFXTASK)); + if (type == M_AUDTASK) { if (sc->audioListTail) sc->audioListTail->next = t; else sc->audioListHead = t; - + sc->audioListTail = t; sc->doAudio = 1; #ifdef SC_LOGGING @@ -427,24 +409,23 @@ void __scAppendList(OSSched *sc, OSScTask *t) sc->gfxListTail->next = t; else sc->gfxListHead = t; - - sc->gfxListTail = t; + + sc->gfxListTail = t; #ifdef SC_LOGGING osLogEvent(l, 507, 1, t); #endif } - + t->next = NULL; - t->state = t->flags & OS_SC_RCP_MASK; + t->state = t->flags & OS_SC_RCP_MASK; } /* - * + * */ -void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp) -{ +void __scExec(OSSched* sc, OSScTask* sp, OSScTask* dp) { int rv; - + #ifdef SC_LOGGING osLogEvent(l, 511, 2, sp, dp); #endif @@ -453,15 +434,15 @@ void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp) if (sp) { if (sp->list.t.type == M_AUDTASK) { - osWritebackDCacheAll(); /* flush the cache */ + osWritebackDCacheAll(); /* flush the cache */ } - + sp->state &= ~(OS_SC_YIELD | OS_SC_YIELDED); #ifndef _FINALROM - sp->startTime = osGetTime(); + sp->startTime = osGetTime(); #endif osSpTaskLoad(&sp->list); - osSpTaskStartGo(&sp->list); + osSpTaskStartGo(&sp->list); sc->curRSPTask = sp; if (sp == dp) sc->curRDPTask = dp; @@ -469,33 +450,30 @@ void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp) if (dp && (dp != sp)) { assert(dp->list.t.output_buff); - + #ifdef SC_LOGGING - osLogEvent(l, 523, 3, dp, dp->list.t.output_buff, - (u32)*dp->list.t.output_buff_size); + osLogEvent(l, 523, 3, dp, dp->list.t.output_buff, (u32)*dp->list.t.output_buff_size); #endif - rv = osDpSetNextBuffer(dp->list.t.output_buff, - *dp->list.t.output_buff_size); + rv = osDpSetNextBuffer(dp->list.t.output_buff, *dp->list.t.output_buff_size); dp_busy = 1; dpCount = 0; - + assert(rv == 0); - + sc->curRDPTask = dp; } } -static void __scYield(OSSched *sc) -{ +static void __scYield(OSSched* sc) { #ifdef SC_LOGGING - osLogEvent(l, 503, 1, sc->curRSPTask ); + osLogEvent(l, 503, 1, sc->curRSPTask); #endif - + if (sc->curRSPTask->list.t.type == M_GFXTASK) { - -/* assert(sc->curRSPTask->state & OS_SC_YIELD);*/ + + /* assert(sc->curRSPTask->state & OS_SC_YIELD);*/ sc->curRSPTask->state |= OS_SC_YIELD; @@ -503,22 +481,21 @@ static void __scYield(OSSched *sc) } else { #ifdef SC_LOGGING osLogEvent(l, 508, 1, sc->curRSPTask); -#endif - } +#endif + } } /* * Schedules the tasks to be run on the RCP */ -s32 __scSchedule(OSSched *sc, OSScTask **sp, OSScTask **dp, s32 availRCP) -{ +s32 __scSchedule(OSSched* sc, OSScTask** sp, OSScTask** dp, s32 availRCP) { s32 avail = availRCP; - OSScTask *gfx = sc->gfxListHead; - OSScTask *audio = sc->audioListHead; + OSScTask* gfx = sc->gfxListHead; + OSScTask* audio = sc->audioListHead; #ifdef SC_LOGGING osLogEvent(l, 517, 3, *sp, *dp, availRCP); -#endif +#endif if (sc->doAudio && (avail & OS_SC_SP)) { @@ -531,82 +508,80 @@ s32 __scSchedule(OSSched *sc, OSScTask **sp, OSScTask **dp, s32 availRCP) sc->doAudio = 0; sc->audioListHead = sc->audioListHead->next; if (sc->audioListHead == NULL) - sc->audioListTail = NULL; - } - } else { + sc->audioListTail = NULL; + } + } else { #ifdef SC_LOGGING osLogEvent(l, 520, 1, gfx); -#endif - if (__scTaskReady(gfx)) { +#endif + if (__scTaskReady(gfx)) { #ifdef SC_LOGGING osLogEvent(l, 522, 3, gfx, gfx->state, gfx->flags); -#endif +#endif switch (gfx->flags & OS_SC_TYPE_MASK) { - case (OS_SC_XBUS): - if (gfx->state & OS_SC_YIELDED) { + case (OS_SC_XBUS): + if (gfx->state & OS_SC_YIELDED) { #ifdef SC_LOGGING - osLogEvent(l, 518, 0); -#endif - /* can hit this if RDP finishes at yield req */ - /* assert(gfx->state & OS_SC_DP); */ + osLogEvent(l, 518, 0); +#endif + /* can hit this if RDP finishes at yield req */ + /* assert(gfx->state & OS_SC_DP); */ - if (avail & OS_SC_SP) { /* if SP is available */ + if (avail & OS_SC_SP) { /* if SP is available */ #ifdef SC_LOGGING - osLogEvent(l, 519, 0); -#endif - *sp = gfx; - avail &= ~OS_SC_SP; - - if (gfx->state & OS_SC_DP) { /* if it needs DP */ - *dp = gfx; - avail &= ~OS_SC_DP; + osLogEvent(l, 519, 0); +#endif + *sp = gfx; + avail &= ~OS_SC_SP; - if (avail & OS_SC_DP == 0) - assert(sc->curRDPTask == gfx); - - } + if (gfx->state & OS_SC_DP) { /* if it needs DP */ + *dp = gfx; + avail &= ~OS_SC_DP; - sc->gfxListHead = sc->gfxListHead->next; - if (sc->gfxListHead == NULL) - sc->gfxListTail = NULL; - - } - } else { - if (avail == (OS_SC_SP | OS_SC_DP)) { - *sp = *dp = gfx; - avail &= ~(OS_SC_SP | OS_SC_DP); - sc->gfxListHead = sc->gfxListHead->next; - if (sc->gfxListHead == NULL) - sc->gfxListTail = NULL; - } - } - - break; - - case (OS_SC_DRAM): - case (OS_SC_DP_DRAM): - case (OS_SC_DP_XBUS): - if (gfx->state & OS_SC_SP) { /* if needs SP */ - if (avail & OS_SC_SP) { /* if SP is available */ - *sp = gfx; - avail &= ~OS_SC_SP; - } - } else if (gfx->state & OS_SC_DP) { /* if needs DP */ - if (avail & OS_SC_DP) { /* if DP available */ - *dp = gfx; - avail &= ~OS_SC_DP; - sc->gfxListHead = sc->gfxListHead->next; - if (sc->gfxListHead == NULL) - sc->gfxListTail = NULL; - } - } - break; + if (avail & OS_SC_DP == 0) + assert(sc->curRDPTask == gfx); + } - case (OS_SC_SP_DRAM): - case (OS_SC_SP_XBUS): - default: - break; + sc->gfxListHead = sc->gfxListHead->next; + if (sc->gfxListHead == NULL) + sc->gfxListTail = NULL; + } + } else { + if (avail == (OS_SC_SP | OS_SC_DP)) { + *sp = *dp = gfx; + avail &= ~(OS_SC_SP | OS_SC_DP); + sc->gfxListHead = sc->gfxListHead->next; + if (sc->gfxListHead == NULL) + sc->gfxListTail = NULL; + } + } + + break; + + case (OS_SC_DRAM): + case (OS_SC_DP_DRAM): + case (OS_SC_DP_XBUS): + if (gfx->state & OS_SC_SP) { /* if needs SP */ + if (avail & OS_SC_SP) { /* if SP is available */ + *sp = gfx; + avail &= ~OS_SC_SP; + } + } else if (gfx->state & OS_SC_DP) { /* if needs DP */ + if (avail & OS_SC_DP) { /* if DP available */ + *dp = gfx; + avail &= ~OS_SC_DP; + sc->gfxListHead = sc->gfxListHead->next; + if (sc->gfxListHead == NULL) + sc->gfxListTail = NULL; + } + } + break; + + case (OS_SC_SP_DRAM): + case (OS_SC_SP_XBUS): + default: + break; } } } @@ -615,6 +590,4 @@ s32 __scSchedule(OSSched *sc, OSScTask **sp, OSScTask **dp, s32 availRCP) avail = __scSchedule(sc, sp, dp, avail); return avail; - } - diff --git a/src/sp/clearattribute.c b/src/sp/clearattribute.c index e5faf16..fa991d5 100644 --- a/src/sp/clearattribute.c +++ b/src/sp/clearattribute.c @@ -28,8 +28,6 @@ * * Clears attributes about a sprite. */ -void -spClearAttribute (Sprite *sp, s32 attr) -{ +void spClearAttribute(Sprite* sp, s32 attr) { sp->attr &= ~attr; } diff --git a/src/sp/color.c b/src/sp/color.c index a5abc85..b43e2d6 100644 --- a/src/sp/color.c +++ b/src/sp/color.c @@ -28,10 +28,7 @@ * * Sets the color for IA or I images. */ -void -spColor (Sprite *sp, unsigned char red, unsigned char green, - unsigned char blue, unsigned char alpha) -{ +void spColor(Sprite* sp, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha) { sp->red = red; sp->green = green; sp->blue = blue; diff --git a/src/sp/hide.c b/src/sp/hide.c index 6223c2c..91b77b5 100644 --- a/src/sp/hide.c +++ b/src/sp/hide.c @@ -28,8 +28,6 @@ * * Hides a sprite so that it will not be drawn at the next spUpdate(). */ -void -spHide (Sprite *sp) -{ - spSetAttribute (sp, SP_HIDDEN); +void spHide(Sprite* sp) { + spSetAttribute(sp, SP_HIDDEN); } diff --git a/src/sp/setattribute.c b/src/sp/setattribute.c index 887df08..9aaad0f 100644 --- a/src/sp/setattribute.c +++ b/src/sp/setattribute.c @@ -28,8 +28,6 @@ * * Sets attributes about a sprite. */ -void -spSetAttribute ( Sprite *sp, s32 attr) -{ +void spSetAttribute(Sprite* sp, s32 attr) { sp->attr |= attr; } diff --git a/src/sp/show.c b/src/sp/show.c index dc0db54..c9ad6b6 100644 --- a/src/sp/show.c +++ b/src/sp/show.c @@ -28,8 +28,6 @@ * * Shows a sprite so that it will be drawn at the next spUpdate(). */ -void -spShow (Sprite *sp) -{ - spClearAttribute (sp, SP_HIDDEN); +void spShow(Sprite* sp) { + spClearAttribute(sp, SP_HIDDEN); } diff --git a/src/sp/sprite.c b/src/sp/sprite.c index 719a662..aba8393 100644 --- a/src/sp/sprite.c +++ b/src/sp/sprite.c @@ -28,12 +28,10 @@ * spSetZ() * */ -void -spSetZ (Sprite *sp, s32 z) -{ +void spSetZ(Sprite* sp, s32 z) { #ifdef DEBUG - emPrintf("spSetZ (Sprite 0x%08x, (%d))\n", sp, z ); + emPrintf("spSetZ (Sprite 0x%08x, (%d))\n", sp, z); #endif sp->zdepth = (s16)z; @@ -44,12 +42,10 @@ spSetZ (Sprite *sp, s32 z) * * Moves a sprite on the screen. */ -void -spMove (Sprite *sp, s32 x, s32 y) -{ +void spMove(Sprite* sp, s32 x, s32 y) { #ifdef DEBUG - emPrintf("spMove (Sprite 0x%08x, (%d,%d))\n", sp, x, y ); + emPrintf("spMove (Sprite 0x%08x, (%d,%d))\n", sp, x, y); #endif sp->x = (s16)x; @@ -67,9 +63,7 @@ static s32 scissor_ymin; * * Sets the scissoring box to be used for subsequent Sprite Drawing */ -void -spScissor (s32 xmin, s32 xmax, s32 ymin, s32 ymax ) -{ +void spScissor(s32 xmin, s32 xmax, s32 ymin, s32 ymax) { scissor_xmin = xmin; scissor_ymin = ymin; @@ -77,7 +71,7 @@ spScissor (s32 xmin, s32 xmax, s32 ymin, s32 ymax ) scissor_ymax = ymax; } -static int *prev_bmbuf = NULL; +static int* prev_bmbuf = NULL; /* * drawbitmap() @@ -88,271 +82,217 @@ static int *prev_bmbuf = NULL; * will be used. */ -static void -drawbitmap (Gfx **glp, Sprite *s, Bitmap *b, - s32 x, s32 y, s32 xx, s32 yy, s32 fs, s32 ft, s32 sx, s32 sy) -{ +static void drawbitmap(Gfx** glp, Sprite* s, Bitmap* b, s32 x, s32 y, s32 xx, s32 yy, s32 fs, s32 ft, s32 sx, s32 sy) { s32 rs, rt; s32 rxh, ryh; s32 rxl, ryl; - Gfx *gl; + Gfx* gl; s32 tex_width, tex_height; Gtexrect gt, *g; - s32 s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod; + s32 s_clamp, t_clamp, s_mask, t_mask, s_lod, t_lod; g = > tex_width = b->width_img; - tex_height= s->bmHreal; - + tex_height = s->bmHreal; + #ifdef rmDEBUG - rmonPrintf("\tdrawbitmap (buf= 0x%08x; x,y= %d,%d; w,h= %d,%d )\n", - b->buf, x, y, b->width, s->bmheight ); + rmonPrintf("\tdrawbitmap (buf= 0x%08x; x,y= %d,%d; w,h= %d,%d )\n", b->buf, x, y, b->width, s->bmheight); #endif gl = *glp; /* Scissoring */ - if( (x >= scissor_xmax) || (y >= scissor_ymax) ) { + if ((x >= scissor_xmax) || (y >= scissor_ymax)) { #ifdef DEBUG_SCISSOR - emPrintf("Sprite Scissoring: Upper Left corner (%d,%d) beyond range (%d,%d)\n", - x, y, scissor_xmax, scissor_ymax ); + emPrintf("Sprite Scissoring: Upper Left corner (%d,%d) beyond range (%d,%d)\n", x, y, scissor_xmax, + scissor_ymax); #endif - return; + return; } - if( (xx < scissor_xmin) || (yy < scissor_ymin) ) { + if ((xx < scissor_xmin) || (yy < scissor_ymin)) { #ifdef DEBUG_SCISSOR - emPrintf("Sprite Scissoring: Lower Right corner (%d,%d) not in range (%d,%d)\n", - xx, yy, scissor_xmin, scissor_ymin ); + emPrintf("Sprite Scissoring: Lower Right corner (%d,%d) not in range (%d,%d)\n", xx, yy, scissor_xmin, + scissor_ymin); #endif - return; + return; } - - if (x < scissor_xmin) { - rxh = scissor_xmin*4; - rs = (b->s<<5) + fs + (((scissor_xmin - x)*sx)>>5); + if (x < scissor_xmin) { + rxh = scissor_xmin * 4; + rs = (b->s << 5) + fs + (((scissor_xmin - x) * sx) >> 5); #ifdef DEBUG_SCISSOR - emPrintf("Sprite Scissoring: Left Edge (%d) not in range (%d,%d)\n", - x, scissor_xmin, scissor_xmax ); + emPrintf("Sprite Scissoring: Left Edge (%d) not in range (%d,%d)\n", x, scissor_xmin, scissor_xmax); #endif - } else { - rxh = x*4; - rs = (b->s<<5) + fs; - }; + } else { + rxh = x * 4; + rs = (b->s << 5) + fs; + }; - if (y < scissor_ymin) { - ryh = scissor_ymin*4; - rt = (b->t<<5) + ft + (((scissor_ymin-y)*sy)>>5); + if (y < scissor_ymin) { + ryh = scissor_ymin * 4; + rt = (b->t << 5) + ft + (((scissor_ymin - y) * sy) >> 5); #ifdef DEBUG_SCISSOR - emPrintf("Sprite Scissoring: Top Edge (%d) not in range (%d,%d)\n", - y, scissor_ymin, scissor_ymax ); + emPrintf("Sprite Scissoring: Top Edge (%d) not in range (%d,%d)\n", y, scissor_ymin, scissor_ymax); #endif - } else { - ryh = y*4; - rt = (b->t<<5) + ft; - } + } else { + ryh = y * 4; + rt = (b->t << 5) + ft; + } - if( xx >= scissor_xmax ) { - rxl = scissor_xmax*4; + if (xx >= scissor_xmax) { + rxl = scissor_xmax * 4; #ifdef DEBUG_SCISSOR - emPrintf("Sprite Scissoring: Right Edge (%d) not in range (%d,%d)\n", - xx, scissor_xmin, scissor_xmax ); + emPrintf("Sprite Scissoring: Right Edge (%d) not in range (%d,%d)\n", xx, scissor_xmin, scissor_xmax); #endif - } else { - rxl = xx*4; - }; + } else { + rxl = xx * 4; + }; - if( yy >= scissor_ymax ) { - ryl = scissor_ymax*4; + if (yy >= scissor_ymax) { + ryl = scissor_ymax * 4; #ifdef DEBUG_SCISSOR - emPrintf("Sprite Scissoring: Bottom Edge (%d) not in range (%d,%d)\n", - yy, scissor_ymin, scissor_ymax ); + emPrintf("Sprite Scissoring: Bottom Edge (%d) not in range (%d,%d)\n", yy, scissor_ymin, scissor_ymax); #endif - } else { - ryl = yy*4; - }; + } else { + ryl = yy * 4; + }; - s_clamp = G_TX_CLAMP; t_clamp = G_TX_CLAMP; - s_mask = G_TX_NOMASK; t_mask = G_TX_NOMASK; - s_lod = G_TX_NOLOD; t_lod = G_TX_NOLOD; + s_clamp = G_TX_CLAMP; + t_clamp = G_TX_CLAMP; + s_mask = G_TX_NOMASK; + t_mask = G_TX_NOMASK; + s_lod = G_TX_NOLOD; + t_lod = G_TX_NOLOD; #define LOAD_TEX #ifdef LOAD_TEX - if( b->buf != prev_bmbuf ) { - switch(s->bmsiz) - { + if (b->buf != prev_bmbuf) { + switch (s->bmsiz) { #if BUILD_VERSION >= VERSION_J - case G_IM_SIZ_DD: - gDPLoadTextureTile_4b(gl++, b->buf, s->bmfmt, tex_width, tex_height, - b->s, b->t, - b->s + b->width,b->t + b->actualHeight, - 0, - s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod); - break; + case G_IM_SIZ_DD: + gDPLoadTextureTile_4b(gl++, b->buf, s->bmfmt, tex_width, tex_height, b->s, b->t, b->s + b->width, + b->t + b->actualHeight, 0, s_clamp, t_clamp, s_mask, t_mask, s_lod, t_lod); + break; #endif - case G_IM_SIZ_4b: - if (s->attr & SP_TEXSHUF) { - gDPLoadTextureBlock_4bS(gl++, b->buf, s->bmfmt, - tex_width, tex_height, 0, - s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod); - } else { - gDPLoadTextureBlock_4b(gl++, b->buf, s->bmfmt, - tex_width, tex_height, 0, - s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod); - }; - break; + case G_IM_SIZ_4b: + if (s->attr & SP_TEXSHUF) { + gDPLoadTextureBlock_4bS(gl++, b->buf, s->bmfmt, tex_width, tex_height, 0, s_clamp, t_clamp, s_mask, + t_mask, s_lod, t_lod); + } else { + gDPLoadTextureBlock_4b(gl++, b->buf, s->bmfmt, tex_width, tex_height, 0, s_clamp, t_clamp, s_mask, + t_mask, s_lod, t_lod); + }; + break; - case G_IM_SIZ_8b: - if (s->attr & SP_TEXSHUF) { - gDPLoadTextureBlockS(gl++, b->buf, s->bmfmt, G_IM_SIZ_8b, - tex_width, tex_height, 0, - s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod); - } else { - gDPLoadTextureBlock(gl++, b->buf, s->bmfmt, G_IM_SIZ_8b, - tex_width, tex_height, 0, - s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod); - }; - break; - case G_IM_SIZ_16b: - if (s->bmfmt == G_IM_FMT_YUV ) { - if (s->attr & SP_TEXSHUF) { - gDPLoadTextureBlockYuvS(gl++, b->buf, s->bmfmt, G_IM_SIZ_16b, - tex_width, tex_height, 0, - s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod); - } else { - if( b->LUToffset != 0 ) { /* Split Y and UV areas */ - unsigned char *uv, *addr; - int j; - s32 tmem, siz; + case G_IM_SIZ_8b: + if (s->attr & SP_TEXSHUF) { + gDPLoadTextureBlockS(gl++, b->buf, s->bmfmt, G_IM_SIZ_8b, tex_width, tex_height, 0, s_clamp, + t_clamp, s_mask, t_mask, s_lod, t_lod); + } else { + gDPLoadTextureBlock(gl++, b->buf, s->bmfmt, G_IM_SIZ_8b, tex_width, tex_height, 0, s_clamp, t_clamp, + s_mask, t_mask, s_lod, t_lod); + }; + break; + case G_IM_SIZ_16b: + if (s->bmfmt == G_IM_FMT_YUV) { + if (s->attr & SP_TEXSHUF) { + gDPLoadTextureBlockYuvS(gl++, b->buf, s->bmfmt, G_IM_SIZ_16b, tex_width, tex_height, 0, s_clamp, + t_clamp, s_mask, t_mask, s_lod, t_lod); + } else { + if (b->LUToffset != 0) { /* Split Y and UV areas */ + unsigned char *uv, *addr; + int j; + s32 tmem, siz; - gDPSetTextureImage( gl++, G_IM_FMT_I, G_IM_SIZ_8b, 1, b->buf); - gDPSetTile( gl++, G_IM_FMT_I, G_IM_SIZ_8b, 0, 256, G_TX_LOADTILE, 0, - t_clamp, t_mask, t_lod, - s_clamp, s_mask, s_lod ); - gDPLoadSync( gl++ ); - gDPLoadBlock( gl++, G_TX_LOADTILE, 0,0, tex_width*tex_height -1, - CALC_DXT(tex_width,1) ); - gDPLoadSync( gl++ ); + gDPSetTextureImage(gl++, G_IM_FMT_I, G_IM_SIZ_8b, 1, b->buf); + gDPSetTile(gl++, G_IM_FMT_I, G_IM_SIZ_8b, 0, 256, G_TX_LOADTILE, 0, t_clamp, t_mask, t_lod, + s_clamp, s_mask, s_lod); + gDPLoadSync(gl++); + gDPLoadBlock(gl++, G_TX_LOADTILE, 0, 0, tex_width * tex_height - 1, CALC_DXT(tex_width, 1)); + gDPLoadSync(gl++); - uv = ((unsigned char *)b->buf) + - ((tex_width*tex_height)/2)*b->LUToffset; + uv = ((unsigned char*)b->buf) + ((tex_width * tex_height) / 2) * b->LUToffset; - for( j=0; j<=(tex_height/2); j++ ) { - addr = uv + ((tex_height/2) -2 -j)*tex_width; - siz = 3*tex_width; - tmem = (tex_width/8)*(tex_height - 2 - 2*j); - if( tmem < 0 ) { - addr += (-tmem)*8; - siz -= (-tmem)*8; - tmem = 0; - }; - if( j == 0 ) - siz = 2*tex_width; + for (j = 0; j <= (tex_height / 2); j++) { + addr = uv + ((tex_height / 2) - 2 - j) * tex_width; + siz = 3 * tex_width; + tmem = (tex_width / 8) * (tex_height - 2 - 2 * j); + if (tmem < 0) { + addr += (-tmem) * 8; + siz -= (-tmem) * 8; + tmem = 0; + }; + if (j == 0) + siz = 2 * tex_width; - gDPSetTextureImage( gl++, G_IM_FMT_I, G_IM_SIZ_8b, 1, addr); - gDPSetTile( gl++, G_IM_FMT_I, G_IM_SIZ_8b, 0, tmem, - G_TX_LOADTILE, 0, - t_clamp, t_mask, t_lod, - s_clamp, s_mask, s_lod ); - gDPLoadSync( gl++ ); - gDPLoadBlock( gl++, G_TX_LOADTILE, 0,0, siz -1, - CALC_DXT(tex_width,1) ); - gDPLoadSync( gl++ ); - }; + gDPSetTextureImage(gl++, G_IM_FMT_I, G_IM_SIZ_8b, 1, addr); + gDPSetTile(gl++, G_IM_FMT_I, G_IM_SIZ_8b, 0, tmem, G_TX_LOADTILE, 0, t_clamp, t_mask, + t_lod, s_clamp, s_mask, s_lod); + gDPLoadSync(gl++); + gDPLoadBlock(gl++, G_TX_LOADTILE, 0, 0, siz - 1, CALC_DXT(tex_width, 1)); + gDPLoadSync(gl++); + }; - gDPSetTile( gl++, s->bmfmt, G_IM_SIZ_16b, (((tex_width) * 1)+7)>>3, 0, - G_TX_RENDERTILE, 0, - t_clamp, t_mask, t_lod, - s_clamp, s_mask, s_lod ); - gDPSetTileSize( gl++, G_TX_RENDERTILE, 0, 0, - ((tex_width)-1) << G_TEXTURE_IMAGE_FRAC, - ((tex_height)-1) << G_TEXTURE_IMAGE_FRAC ); + gDPSetTile(gl++, s->bmfmt, G_IM_SIZ_16b, (((tex_width) * 1) + 7) >> 3, 0, G_TX_RENDERTILE, + 0, t_clamp, t_mask, t_lod, s_clamp, s_mask, s_lod); + gDPSetTileSize(gl++, G_TX_RENDERTILE, 0, 0, ((tex_width)-1) << G_TEXTURE_IMAGE_FRAC, + ((tex_height)-1) << G_TEXTURE_IMAGE_FRAC); - } else { - gDPLoadTextureBlockYuv(gl++, b->buf, s->bmfmt, G_IM_SIZ_16b, - tex_width, tex_height, 0, - s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod); - }; - }; - } else { - if (s->attr & SP_TEXSHUF) { - gDPLoadTextureBlockS(gl++, b->buf, s->bmfmt, G_IM_SIZ_16b, - tex_width, tex_height, 0, - s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod); - } else { - gDPLoadTextureBlock(gl++, b->buf, s->bmfmt, G_IM_SIZ_16b, - tex_width, tex_height, 0, - s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod); - }; - }; - break; - case G_IM_SIZ_32b: - if (s->attr & SP_TEXSHUF) { - gDPLoadTextureBlockS(gl++, b->buf, s->bmfmt, G_IM_SIZ_32b, - tex_width, tex_height, 0, - s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod); - } else { - gDPLoadTextureBlock(gl++, b->buf, s->bmfmt, G_IM_SIZ_32b, - tex_width, tex_height, 0, - s_clamp, t_clamp, - s_mask, t_mask, - s_lod, t_lod); - }; - break; - } - prev_bmbuf = b->buf; + } else { + gDPLoadTextureBlockYuv(gl++, b->buf, s->bmfmt, G_IM_SIZ_16b, tex_width, tex_height, 0, + s_clamp, t_clamp, s_mask, t_mask, s_lod, t_lod); + }; + }; + } else { + if (s->attr & SP_TEXSHUF) { + gDPLoadTextureBlockS(gl++, b->buf, s->bmfmt, G_IM_SIZ_16b, tex_width, tex_height, 0, s_clamp, + t_clamp, s_mask, t_mask, s_lod, t_lod); + } else { + gDPLoadTextureBlock(gl++, b->buf, s->bmfmt, G_IM_SIZ_16b, tex_width, tex_height, 0, s_clamp, + t_clamp, s_mask, t_mask, s_lod, t_lod); + }; + }; + break; + case G_IM_SIZ_32b: + if (s->attr & SP_TEXSHUF) { + gDPLoadTextureBlockS(gl++, b->buf, s->bmfmt, G_IM_SIZ_32b, tex_width, tex_height, 0, s_clamp, + t_clamp, s_mask, t_mask, s_lod, t_lod); + } else { + gDPLoadTextureBlock(gl++, b->buf, s->bmfmt, G_IM_SIZ_32b, tex_width, tex_height, 0, s_clamp, + t_clamp, s_mask, t_mask, s_lod, t_lod); + }; + break; + } + prev_bmbuf = b->buf; } #endif /* LOAD_TEX */ + g->cmd = G_TEXRECT; + g->tile = 0; - g->cmd = G_TEXRECT; - g->tile = 0; + g->xh = rxh; + g->xl = rxl; + g->yh = ryh; + g->yl = ryl; - g->xh = rxh; - g->xl = rxl; - g->yh = ryh; - g->yl = ryl; + g->s = rs; + g->t = rt; - g->s = rs; - g->t = rt; + if ((s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV)) + g->dsdx = sx * 4; + else + g->dsdx = sx; - if ((s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV) ) - g->dsdx = sx * 4; - else - g->dsdx = sx; - - g->dtdy = sy; + g->dtdy = sy; #ifdef rmDEBUG - rmonPrintf("\trect (xh,l= %d,%d, yh,l= %d,%d, s,t= %d,%d, dsdx=%d, dtdy=%d )\n", - rxh,rxl,ryh,ryl,rs,rt,g->dsdx,sy ); + rmonPrintf("\trect (xh,l= %d,%d, yh,l= %d,%d, s,t= %d,%d, dsdx=%d, dtdy=%d )\n", rxh, rxl, ryh, ryl, rs, rt, + g->dsdx, sy); #endif - gSPTextureRectangle(gl++,g->xh,g->yh,g->xl,g->yl,g->tile,g->s,g->t,g->dsdx,g->dtdy); + gSPTextureRectangle(gl++, g->xh, g->yh, g->xl, g->yl, g->tile, g->s, g->t, g->dsdx, g->dtdy); gDPPipeSync(gl++); @@ -361,15 +301,13 @@ drawbitmap (Gfx **glp, Sprite *s, Bitmap *b, static u16 sp_attr = 0; -void -spInit( Gfx **glistp ) -{ - Gfx *gl; +void spInit(Gfx** glistp) { + Gfx* gl; gl = *glistp; #ifdef DEBUG - emPrintf("spInit ()\n" ); + emPrintf("spInit ()\n"); #endif sp_attr = 0; @@ -380,26 +318,25 @@ spInit( Gfx **glistp ) scissor_ymax = 240; /* Turn on texturing */ - gDPPipeSync ( gl++ ); - gDPSetCycleType ( gl++, G_CYC_1CYCLE); - gSPTexture ( gl++, 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON); - gDPSetAlphaCompare ( gl++, G_AC_NONE ); - gDPSetTexturePersp ( gl++, G_TP_NONE ); - gDPSetTextureFilter ( gl++, G_TF_BILERP ); - gDPSetTextureConvert( gl++, G_TC_FILT ); - gDPSetTextureDetail ( gl++, G_TD_CLAMP ); - gDPSetTextureLOD ( gl++, G_TL_TILE ); - gDPSetTextureLUT ( gl++, G_TT_NONE ); + gDPPipeSync(gl++); + gDPSetCycleType(gl++, G_CYC_1CYCLE); + gSPTexture(gl++, 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON); + gDPSetAlphaCompare(gl++, G_AC_NONE); + gDPSetTexturePersp(gl++, G_TP_NONE); + gDPSetTextureFilter(gl++, G_TF_BILERP); + gDPSetTextureConvert(gl++, G_TC_FILT); + gDPSetTextureDetail(gl++, G_TD_CLAMP); + gDPSetTextureLOD(gl++, G_TL_TILE); + gDPSetTextureLUT(gl++, G_TT_NONE); -#define SPRITE_SURF G_RM_TEX_EDGE -#define SPRITE_SURF2 G_RM_TEX_EDGE2 +#define SPRITE_SURF G_RM_TEX_EDGE +#define SPRITE_SURF2 G_RM_TEX_EDGE2 - gDPSetRenderMode( gl++, SPRITE_SURF, SPRITE_SURF2); + gDPSetRenderMode(gl++, SPRITE_SURF, SPRITE_SURF2); *glistp = gl; } - /* * spDraw() * @@ -408,321 +345,303 @@ spInit( Gfx **glistp ) * so sprites with higher numbers will overwrite lower-numbered sprites. * */ -Gfx * -spDraw ( Sprite *s ) -{ - int i; - s32 x, y; - float sx, sy; - Bitmap *b; - Gfx *gl; +Gfx* spDraw(Sprite* s) { + int i; + s32 x, y; + float sx, sy; + Bitmap* b; + Gfx* gl; #ifndef NDEBUG - Gfx *ogl; + Gfx* ogl; #endif - Gfx *dl_start; - s32 isx, isy; - s32 tx, ty; - s32 tx2, ty2; - s32 x2, y2; - float ftx, fty; - s32 fs, ft; - s32 ex, ey; + Gfx* dl_start; + s32 isx, isy; + s32 tx, ty; + s32 tx2, ty2; + s32 x2, y2; + float ftx, fty; + s32 fs, ft; + s32 ex, ey; #ifdef rmDEBUG - rmonPrintf("spDraw (Sprite 0x%08x )\n", s ); + rmonPrintf("spDraw (Sprite 0x%08x )\n", s); #endif if (s->attr & SP_HIDDEN) - return(NULL); + return (NULL); prev_bmbuf = NULL; gl = s->rsp_dl_next; - if( gl == NULL ) - gl = s->rsp_dl; + if (gl == NULL) + gl = s->rsp_dl; dl_start = gl; #ifndef NDEBUG ogl = gl; #endif - b = s->bitmap; + b = s->bitmap; ex = 0; ey = 0; - if (sp_attr & SP_EXTERN) /* previous attr was extern? */ - sp_attr = ~s->attr; /* Assume previous modes are all different - from new ones */ - - if (s->attr & SP_EXTERN) /* current attr is extern? */ - sp_attr = s->attr; /* Assume all settings should remain the same */ - + if (sp_attr & SP_EXTERN) /* previous attr was extern? */ + sp_attr = ~s->attr; /* Assume previous modes are all different + from new ones */ + + if (s->attr & SP_EXTERN) /* current attr is extern? */ + sp_attr = s->attr; /* Assume all settings should remain the same */ + if (s->attr != sp_attr) { - if ((s->attr & SP_TRANSPARENT) && !(sp_attr & SP_TRANSPARENT)) { - gDPSetRenderMode( gl++, G_RM_XLU_SURF, G_RM_XLU_SURF2); - } else if (!(s->attr & SP_TRANSPARENT) && - (sp_attr & SP_TRANSPARENT)) { - gDPSetRenderMode( gl++, - SPRITE_SURF, SPRITE_SURF2); - } + if ((s->attr & SP_TRANSPARENT) && !(sp_attr & SP_TRANSPARENT)) { + gDPSetRenderMode(gl++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + } else if (!(s->attr & SP_TRANSPARENT) && (sp_attr & SP_TRANSPARENT)) { + gDPSetRenderMode(gl++, SPRITE_SURF, SPRITE_SURF2); + } - if ((s->attr & SP_CUTOUT) && !(sp_attr & SP_CUTOUT)) { - gDPSetBlendColor ( gl++, 0xff, 0xff, 0xff, 0x01); - gDPSetAlphaCompare ( gl++, G_AC_THRESHOLD) ; - } else if (!(s->attr & SP_CUTOUT) && (sp_attr & SP_CUTOUT)) { - gDPSetAlphaCompare ( gl++, G_AC_NONE) ; - } - - if( (s->attr & SP_TEXSHIFT) && !(sp_attr & SP_TEXSHIFT) ) { - gDPSetTextureFilter( gl++, G_TF_AVERAGE ); - } else if( !(s->attr & SP_TEXSHIFT) && (sp_attr & SP_TEXSHIFT) ) { - gDPSetTextureFilter( gl++, G_TF_BILERP ); - }; + if ((s->attr & SP_CUTOUT) && !(sp_attr & SP_CUTOUT)) { + gDPSetBlendColor(gl++, 0xff, 0xff, 0xff, 0x01); + gDPSetAlphaCompare(gl++, G_AC_THRESHOLD); + } else if (!(s->attr & SP_CUTOUT) && (sp_attr & SP_CUTOUT)) { + gDPSetAlphaCompare(gl++, G_AC_NONE); + } + if ((s->attr & SP_TEXSHIFT) && !(sp_attr & SP_TEXSHIFT)) { + gDPSetTextureFilter(gl++, G_TF_AVERAGE); + } else if (!(s->attr & SP_TEXSHIFT) && (sp_attr & SP_TEXSHIFT)) { + gDPSetTextureFilter(gl++, G_TF_BILERP); + }; }; sp_attr = s->attr; - if( sp_attr & SP_Z ) { - gDPSetPrimDepth(gl++, s->zdepth, 0); + if (sp_attr & SP_Z) { + gDPSetPrimDepth(gl++, s->zdepth, 0); }; - - gDPSetPrimColor( gl++, 0, 0, s->red, s->green, s->blue, s->alpha); + gDPSetPrimColor(gl++, 0, 0, s->red, s->green, s->blue, s->alpha); if (s->bmfmt == G_IM_FMT_IA || s->bmfmt == G_IM_FMT_I) { - if( s->alpha == 255 ) { - gDPSetCombineMode ( gl++, - G_CC_MODULATEIDECALA_PRIM, - G_CC_MODULATEIDECALA_PRIM); - } else { - gDPSetCombineMode ( gl++, - G_CC_MODULATEIA_PRIM, - G_CC_MODULATEIA_PRIM); - }; + if (s->alpha == 255) { + gDPSetCombineMode(gl++, G_CC_MODULATEIDECALA_PRIM, G_CC_MODULATEIDECALA_PRIM); + } else { + gDPSetCombineMode(gl++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + }; } else { - if( s->alpha == 255 ) { - gDPSetCombineMode ( gl++, - G_CC_MODULATEIDECALA_PRIM, - G_CC_MODULATEIDECALA_PRIM); - } else { - gDPSetCombineMode ( gl++, - G_CC_MODULATERGBA_PRIM, - G_CC_MODULATERGBA_PRIM); - }; + if (s->alpha == 255) { + gDPSetCombineMode(gl++, G_CC_MODULATEIDECALA_PRIM, G_CC_MODULATEIDECALA_PRIM); + } else { + gDPSetCombineMode(gl++, G_CC_MODULATERGBA_PRIM, G_CC_MODULATERGBA_PRIM); + }; } - - if( s->bmfmt == G_IM_FMT_CI ) { - gDPSetTextureLUT( gl++, G_TT_RGBA16); - gDPLoadTLUT( gl++, s->nTLUT, 256+s->startTLUT, s->LUT ); - gDPLoadSync( gl++ ); + if (s->bmfmt == G_IM_FMT_CI) { + gDPSetTextureLUT(gl++, G_TT_RGBA16); + gDPLoadTLUT(gl++, s->nTLUT, 256 + s->startTLUT, s->LUT); + gDPLoadSync(gl++); }; -#define MY_K0 (175 & 0x1ff) -#define MY_K1 (-43 & 0x1ff) -#define MY_K2 (-89 & 0x1ff) -#define MY_K3 (222 & 0x1ff) -#define MY_K4 (114 & 0x1ff) -#define MY_K5 (42 & 0x1ff) +#define MY_K0 (175 & 0x1ff) +#define MY_K1 (-43 & 0x1ff) +#define MY_K2 (-89 & 0x1ff) +#define MY_K3 (222 & 0x1ff) +#define MY_K4 (114 & 0x1ff) +#define MY_K5 (42 & 0x1ff) - if( (s->bmfmt == G_IM_FMT_YUV) && (s->attr & SP_FASTCOPY) ) { - gDPSetTextureConvert( gl++, G_TC_CONV); - gDPSetTextureFilter( gl++, G_TF_POINT); - gDPSetCombineMode( gl++, G_CC_1CYUV2RGB, G_CC_1CYUV2RGB); - gDPSetConvert( gl++, MY_K0, MY_K1, MY_K2, MY_K3, MY_K4, MY_K5); - } else if(s->bmfmt == G_IM_FMT_YUV) { - gDPSetCycleType( gl++, G_CYC_2CYCLE ); - gDPSetTextureFilter( gl++, G_TF_BILERP); - gDPSetTextureConvert( gl++, G_TC_FILTCONV); - gDPSetConvert( gl++, MY_K0, MY_K1, MY_K2, MY_K3, MY_K4, MY_K5); - gDPSetCombineMode( gl++, G_CC_YUV2RGB, G_CC_PASS2); + if ((s->bmfmt == G_IM_FMT_YUV) && (s->attr & SP_FASTCOPY)) { + gDPSetTextureConvert(gl++, G_TC_CONV); + gDPSetTextureFilter(gl++, G_TF_POINT); + gDPSetCombineMode(gl++, G_CC_1CYUV2RGB, G_CC_1CYUV2RGB); + gDPSetConvert(gl++, MY_K0, MY_K1, MY_K2, MY_K3, MY_K4, MY_K5); + } else if (s->bmfmt == G_IM_FMT_YUV) { + gDPSetCycleType(gl++, G_CYC_2CYCLE); + gDPSetTextureFilter(gl++, G_TF_BILERP); + gDPSetTextureConvert(gl++, G_TC_FILTCONV); + gDPSetConvert(gl++, MY_K0, MY_K1, MY_K2, MY_K3, MY_K4, MY_K5); + gDPSetCombineMode(gl++, G_CC_YUV2RGB, G_CC_PASS2); } if (s->attr & SP_SCALE) { - sx = s->scalex; - sy = s->scaley; + sx = s->scalex; + sy = s->scaley; } else { - sx = 1.0F; - sy = 1.0F; + sx = 1.0F; + sy = 1.0F; } - isx = (int) ((1<<10) / sx + 0.5F); - isy = (int) ((1<<10) / sy + 0.5F); + isx = (int)((1 << 10) / sx + 0.5F); + isy = (int)((1 << 10) / sy + 0.5F); - if( b ) { + if (b) { - if( (s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV) ) - gDPSetCycleType( gl++, G_CYC_COPY); + if ((s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV)) + gDPSetCycleType(gl++, G_CYC_COPY); - x = 0.0F; - y = 0.0F; + x = 0.0F; + y = 0.0F; - fty = s->y+y*sy; - ty = (int) ( fty + 0.99999F); - ft = (int) (isy * (ty - fty)); - ft = (ft + 16)>>5; - if( s->attr & SP_TEXSHIFT ) - ft += 16; /* 1/2 Texel for AntiAliasing */ + fty = s->y + y * sy; + ty = (int)(fty + 0.99999F); + ft = (int)(isy * (ty - fty)); + ft = (ft + 16) >> 5; + if (s->attr & SP_TEXSHIFT) + ft += 16; /* 1/2 Texel for AntiAliasing */ - if( s->attr & SP_FRACPOS ) - ft += s->frac_t; /* Micro-positioning */ + if (s->attr & SP_FRACPOS) + ft += s->frac_t; /* Micro-positioning */ - y2 = y + s->bmheight; - ty2 = (int) (s->y+y2*sy + 0.99999F); - - if( (s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV) ) - ty2--; + y2 = y + s->bmheight; + ty2 = (int)(s->y + y2 * sy + 0.99999F); + if ((s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV)) + ty2--; #ifdef rmDEBUG - rmonPrintf("\tiscale=(%d,%d), %d bitmaps, sprite_size=(%d,%d)\n", - isx, isy, s->nbitmaps, s->width, s->height ); + rmonPrintf("\tiscale=(%d,%d), %d bitmaps, sprite_size=(%d,%d)\n", isx, isy, s->nbitmaps, s->width, s->height); #endif - for( i=0; (i < s->nbitmaps) && (b->width > 0); i++, b++ ) { + for (i = 0; (i < s->nbitmaps) && (b->width > 0); i++, b++) { - if( (x+b->width) > s->width ) { /* Next bitmap hits edge? */ - int bh; + if ((x + b->width) > s->width) { /* Next bitmap hits edge? */ + int bh; - x = 0; - fs = 0; - ex = 0; - ey += s->expy; - y += s->bmheight; /* Wrap to next line */ - y2 = y + s->bmheight; /* Wrap to next line */ + x = 0; + fs = 0; + ex = 0; + ey += s->expy; + y += s->bmheight; /* Wrap to next line */ + y2 = y + s->bmheight; /* Wrap to next line */ - fty = s->y+y*sy; - ty = (int) ( fty + 0.9999F); - ft = (int) (isy * (ty - fty)); - ft = (ft + 16)>>5; - if( s->attr & SP_TEXSHIFT ) - ft += 16; /* 1/2 Texel for AntiAliasing */ + fty = s->y + y * sy; + ty = (int)(fty + 0.9999F); + ft = (int)(isy * (ty - fty)); + ft = (ft + 16) >> 5; + if (s->attr & SP_TEXSHIFT) + ft += 16; /* 1/2 Texel for AntiAliasing */ - if( s->attr & SP_FRACPOS ) - ft += s->frac_t; /* Micro-positioning */ + if (s->attr & SP_FRACPOS) + ft += s->frac_t; /* Micro-positioning */ - ty2 = (int) (s->y+y2*sy + 0.9999F); + ty2 = (int)(s->y + y2 * sy + 0.9999F); - ty += ey; - ty2 += ey; + ty += ey; + ty2 += ey; - if( (s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV) ) - ty2--; + if ((s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV)) + ty2--; - /* Fill out to rect. bdy? */ + /* Fill out to rect. bdy? */ - if( (b->actualHeight != 0) ) - bh = b->actualHeight; - else - bh = s->bmheight; + if ((b->actualHeight != 0)) + bh = b->actualHeight; + else + bh = s->bmheight; - if( (y + bh) > s->height ) /* Can't wrap any more? */ - break; - }; + if ((y + bh) > s->height) /* Can't wrap any more? */ + break; + }; #ifdef rmDEBUG - rmonPrintf("bm# %d, x,y=(%d,%d) width=%d \n", i, x, y, b->width ); + rmonPrintf("bm# %d, x,y=(%d,%d) width=%d \n", i, x, y, b->width); #endif - ftx = s->x+x*sx; - tx = (s32) (ftx + 0.9999F); - fs = (s32) (isx * (tx - ftx)); - fs = (fs + 16)>>5; - if( s->attr & SP_TEXSHIFT ) - fs += 16; /* 1/2 Texel for AntiAliasing */ + ftx = s->x + x * sx; + tx = (s32)(ftx + 0.9999F); + fs = (s32)(isx * (tx - ftx)); + fs = (fs + 16) >> 5; + if (s->attr & SP_TEXSHIFT) + fs += 16; /* 1/2 Texel for AntiAliasing */ - if( s->attr & SP_FRACPOS ) - fs += s->frac_s; /* Micro-positioning */ + if (s->attr & SP_FRACPOS) + fs += s->frac_s; /* Micro-positioning */ - x2 = x + b->width; - tx2 = (int) (s->x+x2*sx + 0.9999F); + x2 = x + b->width; + tx2 = (int)(s->x + x2 * sx + 0.9999F); - if( (b->actualHeight != 0) ) { - y2 = y + b->actualHeight; - ty2 = (s32) (s->y+y2*sy + 0.9999F); - ty2 += ey; + if ((b->actualHeight != 0)) { + y2 = y + b->actualHeight; + ty2 = (s32)(s->y + y2 * sy + 0.9999F); + ty2 += ey; - if( (s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV) ) - ty2--; - }; + if ((s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV)) + ty2--; + }; #ifdef rmDEBUG - rmonPrintf("\tfull(%g,%g) = int(%d,%d) + frac(%d,%d)\n", - ftx, fty, tx,ty, fs,ft ); + rmonPrintf("\tfull(%g,%g) = int(%d,%d) + frac(%d,%d)\n", ftx, fty, tx, ty, fs, ft); #endif - tx += ex; - tx2 += ex; + tx += ex; + tx2 += ex; - if( (s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV) ) - tx2--; + if ((s->attr & SP_FASTCOPY) && (s->bmfmt != G_IM_FMT_YUV)) + tx2--; - if( b->buf != NULL ) /* Skip over null bitmaps (blanks) */ - drawbitmap ( &gl, s, b, tx, ty, tx2, ty2, fs, ft, isx, isy); + if (b->buf != NULL) /* Skip over null bitmaps (blanks) */ + drawbitmap(&gl, s, b, tx, ty, tx2, ty2, fs, ft, isx, isy); - x += b->width; - ex += s->expx; - } + x += b->width; + ex += s->expx; + } - if (s->attr & SP_FASTCOPY) - gDPSetCycleType( gl++, G_CYC_1CYCLE); + if (s->attr & SP_FASTCOPY) + gDPSetCycleType(gl++, G_CYC_1CYCLE); - if(s->bmfmt == G_IM_FMT_YUV) { - gDPSetCycleType( gl++, G_CYC_1CYCLE); - gDPSetTextureFilter ( gl++, G_TF_BILERP ); - gDPSetTextureConvert( gl++, G_TC_FILT ); - }; + if (s->bmfmt == G_IM_FMT_YUV) { + gDPSetCycleType(gl++, G_CYC_1CYCLE); + gDPSetTextureFilter(gl++, G_TF_BILERP); + gDPSetTextureConvert(gl++, G_TC_FILT); + }; } else { - int rgba; + int rgba; - x = (s32)s->x; - y = (s32)s->y; - x2 = s->x + (s->width*sx)-1; - y2 = s->y + (s->height*sy)-1; + x = (s32)s->x; + y = (s32)s->y; + x2 = s->x + (s->width * sx) - 1; + y2 = s->y + (s->height * sy) - 1; - if( ( x >= scissor_xmax) || (y >= scissor_ymax) ) { + if ((x >= scissor_xmax) || (y >= scissor_ymax)) { #ifdef DEBUG_SCISSOR - emPrintf("Sprite Scissoring: FILL Upper Left corner (%d,%d) beyond range (%d,%d)\n", - x, y, scissor_xmax, scissor_ymax ); + emPrintf("Sprite Scissoring: FILL Upper Left corner (%d,%d) beyond range (%d,%d)\n", x, y, scissor_xmax, + scissor_ymax); #endif - } else if( ( x2 < scissor_xmin) || (y2 < scissor_ymin) ) { + } else if ((x2 < scissor_xmin) || (y2 < scissor_ymin)) { #ifdef DEBUG_SCISSOR - emPrintf("Sprite Scissoring: FILL Lower Right corner (%d,%d) below range (%d,%d)\n", - x2, y2, scissor_xmin, scissor_ymin ); + emPrintf("Sprite Scissoring: FILL Lower Right corner (%d,%d) below range (%d,%d)\n", x2, y2, scissor_xmin, + scissor_ymin); #endif - } else { + } else { - if( x < scissor_xmin ) - x = scissor_xmin; + if (x < scissor_xmin) + x = scissor_xmin; - if( x2 >= scissor_xmax ) - x2 = scissor_xmax - 1; + if (x2 >= scissor_xmax) + x2 = scissor_xmax - 1; - if( y < scissor_ymin ) - y = scissor_ymin; + if (y < scissor_ymin) + y = scissor_ymin; - if( y2 >= scissor_ymax ) - y2 = scissor_ymax - 1; + if (y2 >= scissor_ymax) + y2 = scissor_ymax - 1; - rgba = GPACK_RGBA5551((s->red), (s->green), (s->blue), (s->alpha>>7)); + rgba = GPACK_RGBA5551((s->red), (s->green), (s->blue), (s->alpha >> 7)); - gSPTexture ( gl++, 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF); - gDPSetCycleType( gl++, G_CYC_FILL); - gDPSetFillColor( gl++, (rgba << 16) | (rgba) ); + gSPTexture(gl++, 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF); + gDPSetCycleType(gl++, G_CYC_FILL); + gDPSetFillColor(gl++, (rgba << 16) | (rgba)); - gDPFillRectangle( gl++, x,y, x2,y2 ); - gDPSetCycleType( gl++, G_CYC_1CYCLE); - gSPTexture ( gl++, 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON); - } + gDPFillRectangle(gl++, x, y, x2, y2); + gDPSetCycleType(gl++, G_CYC_1CYCLE); + gSPTexture(gl++, 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON); + } } - if( s->bmfmt == G_IM_FMT_CI ) { - gDPSetTextureLUT( gl++, G_TT_NONE); + if (s->bmfmt == G_IM_FMT_CI) { + gDPSetTextureLUT(gl++, G_TT_NONE); }; - gSPEndDisplayList ( gl++ ); + gSPEndDisplayList(gl++); #if BUILD_VERSION >= VERSION_J #line 722 @@ -730,32 +649,30 @@ spDraw ( Sprite *s ) #line 714 #endif assert((gl - ogl) < s->ndisplist); - s->rsp_dl_next = gl; - return( dl_start ); + s->rsp_dl_next = gl; + return (dl_start); } -void -spFinish( Gfx **glistp ) -{ - Gfx *gl; +void spFinish(Gfx** glistp) { + Gfx* gl; gl = *glistp; /* Turn off texturing */ - gSPTexture ( gl++, 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF); - gDPSetCombineMode ( gl++, G_CC_SHADE, G_CC_SHADE); + gSPTexture(gl++, 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF); + gDPSetCombineMode(gl++, G_CC_SHADE, G_CC_SHADE); if (sp_attr & SP_TRANSPARENT) { - /* Turn off transparency */ - gDPSetRenderMode( gl++, G_RM_OPA_SURF, G_RM_OPA_SURF2); + /* Turn off transparency */ + gDPSetRenderMode(gl++, G_RM_OPA_SURF, G_RM_OPA_SURF2); } if (sp_attr & SP_CUTOUT) { - /* Turn off Alpha write enable */ - gDPSetAlphaCompare ( gl++, G_AC_NONE) ; + /* Turn off Alpha write enable */ + gDPSetAlphaCompare(gl++, G_AC_NONE); } - gSPEndDisplayList ( gl++ ); + gSPEndDisplayList(gl++); *glistp = gl; } diff --git a/src/sp/spriteex.c b/src/sp/spriteex.c index 772036f..ce112eb 100644 --- a/src/sp/spriteex.c +++ b/src/sp/spriteex.c @@ -1,2 +1,2 @@ -#define F3DEX_GBI -#include "sprite.c" +#define F3DEX_GBI +#include "sprite.c" diff --git a/src/sp/spriteex2.c b/src/sp/spriteex2.c index 2ef1221..2e8d576 100644 --- a/src/sp/spriteex2.c +++ b/src/sp/spriteex2.c @@ -1,2 +1,2 @@ -#define F3DEX_GBI_2 -#include "sprite.c" +#define F3DEX_GBI_2 +#include "sprite.c" diff --git a/src/sp/spscale.c b/src/sp/spscale.c index 4f1bd92..8fa4b6e 100644 --- a/src/sp/spscale.c +++ b/src/sp/spscale.c @@ -28,15 +28,13 @@ * * Scales the sprite by a vertical and horizontal factor. */ -void -spScale (Sprite *sp, float sx, float sy) -{ +void spScale(Sprite* sp, float sx, float sy) { sp->scalex = sx; sp->scaley = sy; - if( (sx == 1.0F) && (sy == 1.0F) ) - spClearAttribute( sp, SP_SCALE ); + if ((sx == 1.0F) && (sy == 1.0F)) + spClearAttribute(sp, SP_SCALE); else - spSetAttribute( sp, SP_SCALE ); + spSetAttribute(sp, SP_SCALE); } diff --git a/src/vimodes/vimodefpalhaf1.c b/src/vimodes/vimodefpalhaf1.c index aeafadf..11ba35a 100644 --- a/src/vimodes/vimodefpalhaf1.c +++ b/src/vimodes/vimodefpalhaf1.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalHaf1 = { OS_VI_FPAL_HAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpalhan1.c b/src/vimodes/vimodefpalhan1.c index 1b81094..76e04af 100644 --- a/src/vimodes/vimodefpalhan1.c +++ b/src/vimodes/vimodefpalhan1.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalHan1 = { OS_VI_FPAL_HAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpalhpf1.c b/src/vimodes/vimodefpalhpf1.c index 5250145..556ae9f 100644 --- a/src/vimodes/vimodefpalhpf1.c +++ b/src/vimodes/vimodefpalhpf1.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalHpf1 = { OS_VI_FPAL_HPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpalhpf2.c b/src/vimodes/vimodefpalhpf2.c index 0fc5313..23616be 100644 --- a/src/vimodes/vimodefpalhpf2.c +++ b/src/vimodes/vimodefpalhpf2.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalHpf2 = { OS_VI_FPAL_HPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpalhpn1.c b/src/vimodes/vimodefpalhpn1.c index ea16c8a..e951c80 100644 --- a/src/vimodes/vimodefpalhpn1.c +++ b/src/vimodes/vimodefpalhpn1.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalHpn1 = { OS_VI_FPAL_HPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpalhpn2.c b/src/vimodes/vimodefpalhpn2.c index 55d9253..ed7bcd7 100644 --- a/src/vimodes/vimodefpalhpn2.c +++ b/src/vimodes/vimodefpalhpn2.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalHpn2 = { OS_VI_FPAL_HPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpallaf1.c b/src/vimodes/vimodefpallaf1.c index ad79744..8d0da76 100644 --- a/src/vimodes/vimodefpallaf1.c +++ b/src/vimodes/vimodefpallaf1.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalLaf1 = { OS_VI_FPAL_LAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpallaf2.c b/src/vimodes/vimodefpallaf2.c index fdc05a0..8e40857 100644 --- a/src/vimodes/vimodefpallaf2.c +++ b/src/vimodes/vimodefpallaf2.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalLaf2 = { OS_VI_FPAL_LAF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpallan1.c b/src/vimodes/vimodefpallan1.c index 3248ff4..f1dcb80 100644 --- a/src/vimodes/vimodefpallan1.c +++ b/src/vimodes/vimodefpallan1.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalLan1 = { OS_VI_FPAL_LAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpallan2.c b/src/vimodes/vimodefpallan2.c index d5a60e8..c658748 100644 --- a/src/vimodes/vimodefpallan2.c +++ b/src/vimodes/vimodefpallan2.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalLan2 = { OS_VI_FPAL_LAN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpallpf1.c b/src/vimodes/vimodefpallpf1.c index 3dca20b..d37e92e 100644 --- a/src/vimodes/vimodefpallpf1.c +++ b/src/vimodes/vimodefpallpf1.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalLpf1 = { OS_VI_FPAL_LPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpallpf2.c b/src/vimodes/vimodefpallpf2.c index fa6b368..6c2f18b 100644 --- a/src/vimodes/vimodefpallpf2.c +++ b/src/vimodes/vimodefpallpf2.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalLpf2 = { OS_VI_FPAL_LPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpallpn1.c b/src/vimodes/vimodefpallpn1.c index 18bd211..f90f65b 100644 --- a/src/vimodes/vimodefpallpn1.c +++ b/src/vimodes/vimodefpallpn1.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalLpn1 = { OS_VI_FPAL_LPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodefpallpn2.c b/src/vimodes/vimodefpallpn2.c index 5ced6e6..8ddf1ff 100644 --- a/src/vimodes/vimodefpallpn2.c +++ b/src/vimodes/vimodefpallpn2.c @@ -16,16 +16,16 @@ OSViMode osViModeFpalLpn2 = { OS_VI_FPAL_LPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempalhaf1.c b/src/vimodes/vimodempalhaf1.c index 375e469..b8464d8 100644 --- a/src/vimodes/vimodempalhaf1.c +++ b/src/vimodes/vimodempalhaf1.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalHaf1 = { OS_VI_MPAL_HAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempalhan1.c b/src/vimodes/vimodempalhan1.c index a47a355..22a9798 100644 --- a/src/vimodes/vimodempalhan1.c +++ b/src/vimodes/vimodempalhan1.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalHan1 = { OS_VI_MPAL_HAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempalhpf1.c b/src/vimodes/vimodempalhpf1.c index b47add5..f25708a 100644 --- a/src/vimodes/vimodempalhpf1.c +++ b/src/vimodes/vimodempalhpf1.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalHpf1 = { OS_VI_MPAL_HPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempalhpf2.c b/src/vimodes/vimodempalhpf2.c index 3aba7b8..7381587 100644 --- a/src/vimodes/vimodempalhpf2.c +++ b/src/vimodes/vimodempalhpf2.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalHpf2 = { OS_VI_MPAL_HPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempalhpn1.c b/src/vimodes/vimodempalhpn1.c index a2069be..31eba6d 100644 --- a/src/vimodes/vimodempalhpn1.c +++ b/src/vimodes/vimodempalhpn1.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalHpn1 = { OS_VI_MPAL_HPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempalhpn2.c b/src/vimodes/vimodempalhpn2.c index 4f26be3..c409e08 100644 --- a/src/vimodes/vimodempalhpn2.c +++ b/src/vimodes/vimodempalhpn2.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalHpn2 = { OS_VI_MPAL_HPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempallaf1.c b/src/vimodes/vimodempallaf1.c index 2843390..72e74bc 100644 --- a/src/vimodes/vimodempallaf1.c +++ b/src/vimodes/vimodempallaf1.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalLaf1 = { OS_VI_MPAL_LAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempallaf2.c b/src/vimodes/vimodempallaf2.c index ea10c08..3c1352d 100644 --- a/src/vimodes/vimodempallaf2.c +++ b/src/vimodes/vimodempallaf2.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalLaf2 = { OS_VI_MPAL_LAF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempallan1.c b/src/vimodes/vimodempallan1.c index 38fee16..e9190d0 100644 --- a/src/vimodes/vimodempallan1.c +++ b/src/vimodes/vimodempallan1.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalLan1 = { OS_VI_MPAL_LAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(525), // vSync - HSYNC(3089, 4), // hSync - LEAP(3097, 3098), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempallan2.c b/src/vimodes/vimodempallan2.c index 655d6f9..5463237 100644 --- a/src/vimodes/vimodempallan2.c +++ b/src/vimodes/vimodempallan2.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalLan2 = { OS_VI_MPAL_LAN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(525), // vSync - HSYNC(3089, 4), // hSync - LEAP(3097, 3098), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempallpf1.c b/src/vimodes/vimodempallpf1.c index 5f5ecd0..43bdc3c 100644 --- a/src/vimodes/vimodempallpf1.c +++ b/src/vimodes/vimodempallpf1.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalLpf1 = { OS_VI_MPAL_LPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempallpf2.c b/src/vimodes/vimodempallpf2.c index 9e5468f..b4bb542 100644 --- a/src/vimodes/vimodempallpf2.c +++ b/src/vimodes/vimodempallpf2.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalLpf2 = { OS_VI_MPAL_LPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(524), // vSync - HSYNC(3088, 0), // hSync - LEAP(3100, 3100), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempallpn1.c b/src/vimodes/vimodempallpn1.c index 45be8d2..bb3802c 100644 --- a/src/vimodes/vimodempallpn1.c +++ b/src/vimodes/vimodempallpn1.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalLpn1 = { OS_VI_MPAL_LPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(525), // vSync - HSYNC(3089, 4), // hSync - LEAP(3097, 3098), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodempallpn2.c b/src/vimodes/vimodempallpn2.c index 94e5a89..25877be 100644 --- a/src/vimodes/vimodempallpn2.c +++ b/src/vimodes/vimodempallpn2.c @@ -16,16 +16,16 @@ OSViMode osViModeMpalLpn2 = { OS_VI_MPAL_LPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(525), // vSync - HSYNC(3089, 4), // hSync - LEAP(3097, 3098), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentschaf1.c b/src/vimodes/vimodentschaf1.c index ccb6427..1867792 100644 --- a/src/vimodes/vimodentschaf1.c +++ b/src/vimodes/vimodentschaf1.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscHaf1 = { OS_VI_NTSC_HAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentschan1.c b/src/vimodes/vimodentschan1.c index 71250c9..3c34b4b 100644 --- a/src/vimodes/vimodentschan1.c +++ b/src/vimodes/vimodentschan1.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscHan1 = { OS_VI_NTSC_HAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentschpf1.c b/src/vimodes/vimodentschpf1.c index 172d4b4..7080366 100644 --- a/src/vimodes/vimodentschpf1.c +++ b/src/vimodes/vimodentschpf1.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscHpf1 = { OS_VI_NTSC_HPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentschpf2.c b/src/vimodes/vimodentschpf2.c index 6c3eaa6..925ad0d 100644 --- a/src/vimodes/vimodentschpf2.c +++ b/src/vimodes/vimodentschpf2.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscHpf2 = { OS_VI_NTSC_HPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentschpn1.c b/src/vimodes/vimodentschpn1.c index dbe4119..cff84a6 100644 --- a/src/vimodes/vimodentschpn1.c +++ b/src/vimodes/vimodentschpn1.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscHpn1 = { OS_VI_NTSC_HPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentschpn2.c b/src/vimodes/vimodentschpn2.c index e4f0f39..31ee552 100644 --- a/src/vimodes/vimodentschpn2.c +++ b/src/vimodes/vimodentschpn2.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscHpn2 = { OS_VI_NTSC_HPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentsclaf1.c b/src/vimodes/vimodentsclaf1.c index 5acf68d..6fbc240 100644 --- a/src/vimodes/vimodentsclaf1.c +++ b/src/vimodes/vimodentsclaf1.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscLaf1 = { OS_VI_NTSC_LAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentsclaf2.c b/src/vimodes/vimodentsclaf2.c index b12acab..c6c4618 100644 --- a/src/vimodes/vimodentsclaf2.c +++ b/src/vimodes/vimodentsclaf2.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscLaf2 = { OS_VI_NTSC_LAF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentsclan1.c b/src/vimodes/vimodentsclan1.c index 0327fba..c095a5d 100644 --- a/src/vimodes/vimodentsclan1.c +++ b/src/vimodes/vimodentsclan1.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscLan1 = { OS_VI_NTSC_LAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(525), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentsclan2.c b/src/vimodes/vimodentsclan2.c index 2ed2c83..89260a5 100644 --- a/src/vimodes/vimodentsclan2.c +++ b/src/vimodes/vimodentsclan2.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscLan2 = { OS_VI_NTSC_LAN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(525), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentsclpf1.c b/src/vimodes/vimodentsclpf1.c index 388eb03..1954001 100644 --- a/src/vimodes/vimodentsclpf1.c +++ b/src/vimodes/vimodentsclpf1.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscLpf1 = { OS_VI_NTSC_LPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentsclpf2.c b/src/vimodes/vimodentsclpf2.c index 70534cd..abcafa1 100644 --- a/src/vimodes/vimodentsclpf2.c +++ b/src/vimodes/vimodentsclpf2.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscLpf2 = { OS_VI_NTSC_LPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(524), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentsclpn1.c b/src/vimodes/vimodentsclpn1.c index 743ebed..c91d1ec 100644 --- a/src/vimodes/vimodentsclpn1.c +++ b/src/vimodes/vimodentsclpn1.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscLpn1 = { OS_VI_NTSC_LPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(525), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodentsclpn2.c b/src/vimodes/vimodentsclpn2.c index 9f8a400..64fca92 100644 --- a/src/vimodes/vimodentsclpn2.c +++ b/src/vimodes/vimodentsclpn2.c @@ -16,16 +16,16 @@ OSViMode osViModeNtscLpn2 = { OS_VI_NTSC_LPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(525), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepalhaf1.c b/src/vimodes/vimodepalhaf1.c index e2ef308..5b19d54 100644 --- a/src/vimodes/vimodepalhaf1.c +++ b/src/vimodes/vimodepalhaf1.c @@ -16,16 +16,16 @@ OSViMode osViModePalHaf1 = { OS_VI_PAL_HAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepalhan1.c b/src/vimodes/vimodepalhan1.c index c945252..ade41cf 100644 --- a/src/vimodes/vimodepalhan1.c +++ b/src/vimodes/vimodepalhan1.c @@ -16,16 +16,16 @@ OSViMode osViModePalHan1 = { OS_VI_PAL_HAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepalhpf1.c b/src/vimodes/vimodepalhpf1.c index 5eeeb5f..132328d 100644 --- a/src/vimodes/vimodepalhpf1.c +++ b/src/vimodes/vimodepalhpf1.c @@ -16,16 +16,16 @@ OSViMode osViModePalHpf1 = { OS_VI_PAL_HPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepalhpf2.c b/src/vimodes/vimodepalhpf2.c index e7dc7f7..54cba31 100644 --- a/src/vimodes/vimodepalhpf2.c +++ b/src/vimodes/vimodepalhpf2.c @@ -16,16 +16,16 @@ OSViMode osViModePalHpf2 = { OS_VI_PAL_HPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(640), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepalhpn1.c b/src/vimodes/vimodepalhpn1.c index 580756f..514f493 100644 --- a/src/vimodes/vimodepalhpn1.c +++ b/src/vimodes/vimodepalhpn1.c @@ -16,16 +16,16 @@ OSViMode osViModePalHpn1 = { OS_VI_PAL_HPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepalhpn2.c b/src/vimodes/vimodepalhpn2.c index 785344d..525ddb9 100644 --- a/src/vimodes/vimodepalhpn2.c +++ b/src/vimodes/vimodepalhpn2.c @@ -16,16 +16,16 @@ OSViMode osViModePalHpn2 = { OS_VI_PAL_HPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(1280), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(1, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepallaf1.c b/src/vimodes/vimodepallaf1.c index c029452..46fefc9 100644 --- a/src/vimodes/vimodepallaf1.c +++ b/src/vimodes/vimodepallaf1.c @@ -16,16 +16,16 @@ OSViMode osViModePalLaf1 = { OS_VI_PAL_LAF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepallaf2.c b/src/vimodes/vimodepallaf2.c index 650db68..8e7d057 100644 --- a/src/vimodes/vimodepallaf2.c +++ b/src/vimodes/vimodepallaf2.c @@ -16,16 +16,16 @@ OSViMode osViModePalLaf2 = { OS_VI_PAL_LAF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | - VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON + | VI_CTRL_ANTIALIAS_MODE_0 | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepallan1.c b/src/vimodes/vimodepallan1.c index 98f1c4e..23c31b7 100644 --- a/src/vimodes/vimodepallan1.c +++ b/src/vimodes/vimodepallan1.c @@ -16,16 +16,16 @@ OSViMode osViModePalLan1 = { OS_VI_PAL_LAN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepallan2.c b/src/vimodes/vimodepallan2.c index 6c7d10a..e90bdf6 100644 --- a/src/vimodes/vimodepallan2.c +++ b/src/vimodes/vimodepallan2.c @@ -16,16 +16,16 @@ OSViMode osViModePalLan2 = { OS_VI_PAL_LAN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_0 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepallpf1.c b/src/vimodes/vimodepallpf1.c index f1cdc8b..49c80e3 100644 --- a/src/vimodes/vimodepallpf1.c +++ b/src/vimodes/vimodepallpf1.c @@ -16,16 +16,16 @@ OSViMode osViModePalLpf1 = { OS_VI_PAL_LPF1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepallpf2.c b/src/vimodes/vimodepallpf2.c index e94ba35..5e23d83 100644 --- a/src/vimodes/vimodepallpf2.c +++ b/src/vimodes/vimodepallpf2.c @@ -16,16 +16,16 @@ OSViMode osViModePalLpf2 = { OS_VI_PAL_LPF2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(624), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepallpn1.c b/src/vimodes/vimodepallpn1.c index 96bc3fe..4bf71bd 100644 --- a/src/vimodes/vimodepallpn1.c +++ b/src/vimodes/vimodepallpn1.c @@ -16,16 +16,16 @@ OSViMode osViModePalLpn1 = { OS_VI_PAL_LPN1, // type { // comRegs - VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/vimodes/vimodepallpn2.c b/src/vimodes/vimodepallpn2.c index 72cf829..818f2a7 100644 --- a/src/vimodes/vimodepallpn2.c +++ b/src/vimodes/vimodepallpn2.c @@ -16,16 +16,16 @@ OSViMode osViModePalLpn2 = { OS_VI_PAL_LPN2, // type { // comRegs - VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 + | VI_CTRL_PIXEL_ADV_3, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent }, { // fldRegs { diff --git a/src/voice/voicecheckword.c b/src/voice/voicecheckword.c index 9d2e3f8..298bd24 100644 --- a/src/voice/voicecheckword.c +++ b/src/voice/voicecheckword.c @@ -16,58 +16,60 @@ s32 osVoiceCheckWord(u8* word) { for (k = 0; word[k] != 0; k += 2) { sjis = (word[k] << 8) + word[k + 1]; - if (((sjis != 'ー') && (sjis < 'ぁ')) || ((sjis > 'ん') && (sjis < 'ァ')) || (sjis == 0x837F) || - (sjis > 'ヶ')) { + if (((sjis != 'ー') && (sjis < 'ぁ')) || ((sjis > 'ん') && (sjis < 'ァ')) || (sjis == 0x837F) + || (sjis > 'ヶ')) { ret = CONT_ERR_VOICE_WORD; - } else if ((k == 0) && - ((sjis == 'ー') || (sjis == 'ん') || (sjis == 'っ') || (sjis == 'ゎ') || (sjis == 'ン') || - (sjis == 'ッ') || (sjis == 'ヮ') || (sjis == 'ヵ') || (sjis == 'ヶ'))) { + } else if ((k == 0) + && ((sjis == 'ー') || (sjis == 'ん') || (sjis == 'っ') || (sjis == 'ゎ') || (sjis == 'ン') + || (sjis == 'ッ') || (sjis == 'ヮ') || (sjis == 'ヵ') || (sjis == 'ヶ'))) { ret = CONT_ERR_VOICE_WORD; } else if (((sjis == 'ぁ') || (sjis == 'ァ')) && (old != 'ふ') && (old != 'フ') && (old != 'ヴ')) { ret = CONT_ERR_VOICE_WORD; - } else if (((sjis == 'ぃ') || (sjis == 'ィ')) && (old != 'う') && (old != 'て') && (old != 'で') && - (old != 'ふ') && (old != 'ウ') && (old != 'テ') && (old != 'デ') && (old != 'フ') && (old != 'ヴ')) { + } else if (((sjis == 'ぃ') || (sjis == 'ィ')) && (old != 'う') && (old != 'て') && (old != 'で') + && (old != 'ふ') && (old != 'ウ') && (old != 'テ') && (old != 'デ') && (old != 'フ') + && (old != 'ヴ')) { ret = CONT_ERR_VOICE_WORD; - } else if (((sjis == 'ぅ') || (sjis == 'ゥ')) && (old != 'と') && (old != 'ど') && (old != 'ふ') && - (old != 'ト') && (old != 'ド') && (old != 'フ') && (old != 'ヴ')) { + } else if (((sjis == 'ぅ') || (sjis == 'ゥ')) && (old != 'と') && (old != 'ど') && (old != 'ふ') + && (old != 'ト') && (old != 'ド') && (old != 'フ') && (old != 'ヴ')) { ret = CONT_ERR_VOICE_WORD; - } else if (((sjis == 'ぇ') || (sjis == 'ェ')) && (old != 'う') && (old != 'し') && (old != 'じ') && - (old != 'ち') && (old != 'ぢ') && (old != 'つ') && (old != 'ふ') && (old != 'ウ') && (old != 'シ') && - (old != 'ジ') && (old != 'チ') && (old != 'ヂ') && (old != 'ツ') && (old != 'フ') && (old != 'ヴ')) { + } else if (((sjis == 'ぇ') || (sjis == 'ェ')) && (old != 'う') && (old != 'し') && (old != 'じ') + && (old != 'ち') && (old != 'ぢ') && (old != 'つ') && (old != 'ふ') && (old != 'ウ') && (old != 'シ') + && (old != 'ジ') && (old != 'チ') && (old != 'ヂ') && (old != 'ツ') && (old != 'フ') + && (old != 'ヴ')) { ret = CONT_ERR_VOICE_WORD; - } else if (((sjis == 'ぉ') || (sjis == 'ォ')) && (old != 'う') && (old != 'ふ') && (old != 'ウ') && - (old != 'フ') && (old != 'ヴ')) { + } else if (((sjis == 'ぉ') || (sjis == 'ォ')) && (old != 'う') && (old != 'ふ') && (old != 'ウ') + && (old != 'フ') && (old != 'ヴ')) { ret = CONT_ERR_VOICE_WORD; - } else if (((sjis == 'ゃ') || (sjis == 'ゅ') || (sjis == 'ょ') || (sjis == 'ャ') || (sjis == 'ュ') || - (sjis == 'ョ')) && - (old != 'き') && (old != 'し') && (old != 'ち') && (old != 'に') && (old != 'ひ') && (old != 'み') && - (old != 'り') && (old != 'ぎ') && (old != 'じ') && (old != 'ぢ') && (old != 'び') && (old != 'ぴ') && - (old != 'キ') && (old != 'シ') && (old != 'チ') && (old != 'ニ') && (old != 'ヒ') && (old != 'ミ') && - (old != 'リ') && (old != 'ギ') && (old != 'ジ') && (old != 'ヂ') && (old != 'ビ') && (old != 'ピ') && - (old != 'ヴ')) { + } else if (((sjis == 'ゃ') || (sjis == 'ゅ') || (sjis == 'ょ') || (sjis == 'ャ') || (sjis == 'ュ') + || (sjis == 'ョ')) + && (old != 'き') && (old != 'し') && (old != 'ち') && (old != 'に') && (old != 'ひ') && (old != 'み') + && (old != 'り') && (old != 'ぎ') && (old != 'じ') && (old != 'ぢ') && (old != 'び') && (old != 'ぴ') + && (old != 'キ') && (old != 'シ') && (old != 'チ') && (old != 'ニ') && (old != 'ヒ') && (old != 'ミ') + && (old != 'リ') && (old != 'ギ') && (old != 'ジ') && (old != 'ヂ') && (old != 'ビ') && (old != 'ピ') + && (old != 'ヴ')) { ret = CONT_ERR_VOICE_WORD; } else if ((sjis == 'ー') && ((old == 'ん') || (old == 'っ') || (old == 'ン') || (old == 'ッ'))) { ret = CONT_ERR_VOICE_WORD; } else if (((sjis == 'ん') || (sjis == 'ン')) && ((old == 'ん') || (old == 'ン'))) { ret = CONT_ERR_VOICE_WORD; - } else if (((old == 'っ') || (old == 'ッ')) && - ((sjis == 'ー') || (sjis == 'あ') || (sjis == 'い') || (sjis == 'う') || (sjis == 'え') || - (sjis == 'お') || (sjis == 'な') || (sjis == 'に') || (sjis == 'ぬ') || (sjis == 'ね') || - (sjis == 'の') || (sjis == 'ま') || (sjis == 'み') || (sjis == 'む') || (sjis == 'め') || - (sjis == 'も') || (sjis == 'や') || (sjis == 'ゆ') || (sjis == 'よ') || (sjis == 'ら') || - (sjis == 'り') || (sjis == 'る') || (sjis == 'れ') || (sjis == 'ろ') || (sjis == 'わ') || - (sjis == 'ゐ') || (sjis == 'ゑ') || (sjis == 'を') || (sjis == 'ん') || (sjis == 'ぁ') || - (sjis == 'ぃ') || (sjis == 'ぅ') || (sjis == 'ぇ') || (sjis == 'ぉ') || (sjis == 'ゃ') || - (sjis == 'ゅ') || (sjis == 'ょ') || (sjis == 'っ') || (sjis == 'ゎ') + } else if (((old == 'っ') || (old == 'ッ')) + && ((sjis == 'ー') || (sjis == 'あ') || (sjis == 'い') || (sjis == 'う') || (sjis == 'え') + || (sjis == 'お') || (sjis == 'な') || (sjis == 'に') || (sjis == 'ぬ') || (sjis == 'ね') + || (sjis == 'の') || (sjis == 'ま') || (sjis == 'み') || (sjis == 'む') || (sjis == 'め') + || (sjis == 'も') || (sjis == 'や') || (sjis == 'ゆ') || (sjis == 'よ') || (sjis == 'ら') + || (sjis == 'り') || (sjis == 'る') || (sjis == 'れ') || (sjis == 'ろ') || (sjis == 'わ') + || (sjis == 'ゐ') || (sjis == 'ゑ') || (sjis == 'を') || (sjis == 'ん') || (sjis == 'ぁ') + || (sjis == 'ぃ') || (sjis == 'ぅ') || (sjis == 'ぇ') || (sjis == 'ぉ') || (sjis == 'ゃ') + || (sjis == 'ゅ') || (sjis == 'ょ') || (sjis == 'っ') || (sjis == 'ゎ') - || (sjis == 'ア') || (sjis == 'イ') || (sjis == 'ウ') || (sjis == 'エ') || (sjis == 'オ') || - (sjis == 'ナ') || (sjis == 'ニ') || (sjis == 'ヌ') || (sjis == 'ネ') || (sjis == 'ノ') || - (sjis == 'マ') || (sjis == 'ミ') || (sjis == 'ム') || (sjis == 'メ') || (sjis == 'モ') || - (sjis == 'ヤ') || (sjis == 'ユ') || (sjis == 'ヨ') || (sjis == 'ラ') || (sjis == 'リ') || - (sjis == 'ル') || (sjis == 'レ') || (sjis == 'ロ') || (sjis == 'ワ') || (sjis == 'ヰ') || - (sjis == 'ヱ') || (sjis == 'ヲ') || (sjis == 'ン') || (sjis == 'ァ') || (sjis == 'ィ') || - (sjis == 'ゥ') || (sjis == 'ェ') || (sjis == 'ォ') || (sjis == 'ャ') || (sjis == 'ュ') || - (sjis == 'ョ') || (sjis == 'ッ') || (sjis == 'ヮ'))) { + || (sjis == 'ア') || (sjis == 'イ') || (sjis == 'ウ') || (sjis == 'エ') || (sjis == 'オ') + || (sjis == 'ナ') || (sjis == 'ニ') || (sjis == 'ヌ') || (sjis == 'ネ') || (sjis == 'ノ') + || (sjis == 'マ') || (sjis == 'ミ') || (sjis == 'ム') || (sjis == 'メ') || (sjis == 'モ') + || (sjis == 'ヤ') || (sjis == 'ユ') || (sjis == 'ヨ') || (sjis == 'ラ') || (sjis == 'リ') + || (sjis == 'ル') || (sjis == 'レ') || (sjis == 'ロ') || (sjis == 'ワ') || (sjis == 'ヰ') + || (sjis == 'ヱ') || (sjis == 'ヲ') || (sjis == 'ン') || (sjis == 'ァ') || (sjis == 'ィ') + || (sjis == 'ゥ') || (sjis == 'ェ') || (sjis == 'ォ') || (sjis == 'ャ') || (sjis == 'ュ') + || (sjis == 'ョ') || (sjis == 'ッ') || (sjis == 'ヮ'))) { ret = CONT_ERR_VOICE_WORD; } diff --git a/src/voice/voicecontread2.c b/src/voice/voicecontread2.c index 083637a..66ef5a4 100644 --- a/src/voice/voicecontread2.c +++ b/src/voice/voicecontread2.c @@ -29,7 +29,9 @@ s32 __osVoiceContRead2(OSMesgQueue* mq, int channel, u16 address, u8* buffer) { __osContLastCmd = CONT_CMD_READ2_VOICE; __osPfsLastChannel = channel; - for (i = 0; i < channel; i++) { *ptr++ = CONT_CMD_REQUEST_STATUS; } + for (i = 0; i < channel; i++) { + *ptr++ = CONT_CMD_REQUEST_STATUS; + } __osPfsPifRam.pifstatus = CONT_CMD_EXE; @@ -55,8 +57,8 @@ s32 __osVoiceContRead2(OSMesgQueue* mq, int channel, u16 address, u8* buffer) { ret = CHNL_ERR(*READ2FORMAT(ptr)); if (ret == 0) { - if (__osVoiceContDataCrc(READ2FORMAT(ptr)->data, ARRLEN(READ2FORMAT(ptr)->data)) != - READ2FORMAT(ptr)->datacrc) { + if (__osVoiceContDataCrc(READ2FORMAT(ptr)->data, ARRLEN(READ2FORMAT(ptr)->data)) + != READ2FORMAT(ptr)->datacrc) { ret = __osVoiceGetStatus(mq, channel, &status); if (ret != 0) { break; diff --git a/src/voice/voicecontread36.c b/src/voice/voicecontread36.c index 249daad..4be3c48 100644 --- a/src/voice/voicecontread36.c +++ b/src/voice/voicecontread36.c @@ -29,7 +29,9 @@ s32 __osVoiceContRead36(OSMesgQueue* mq, int channel, u16 address, u8* buffer) { __osContLastCmd = CONT_CMD_READ36_VOICE; __osPfsLastChannel = channel; - for (i = 0; i < channel; i++) { *ptr++ = CONT_CMD_REQUEST_STATUS; } + for (i = 0; i < channel; i++) { + *ptr++ = CONT_CMD_REQUEST_STATUS; + } __osPfsPifRam.pifstatus = CONT_CMD_EXE; @@ -55,8 +57,8 @@ s32 __osVoiceContRead36(OSMesgQueue* mq, int channel, u16 address, u8* buffer) { ret = CHNL_ERR(*READ36FORMAT(ptr)); if (ret == 0) { - if (__osVoiceContDataCrc(READ36FORMAT(ptr)->data, ARRLEN(READ36FORMAT(ptr)->data)) != - READ36FORMAT(ptr)->datacrc) { + if (__osVoiceContDataCrc(READ36FORMAT(ptr)->data, ARRLEN(READ36FORMAT(ptr)->data)) + != READ36FORMAT(ptr)->datacrc) { ret = __osVoiceGetStatus(mq, channel, &status); if (ret != 0) { break; diff --git a/src/voice/voicecontwrite20.c b/src/voice/voicecontwrite20.c index bb5a3b2..7b96382 100644 --- a/src/voice/voicecontwrite20.c +++ b/src/voice/voicecontwrite20.c @@ -30,7 +30,9 @@ s32 __osVoiceContWrite20(OSMesgQueue* mq, int channel, u16 address, u8* buffer) __osContLastCmd = CONT_CMD_WRITE20_VOICE; __osPfsLastChannel = channel; - for (i = 0; i < channel; i++) { *ptr++ = CONT_CMD_REQUEST_STATUS; } + for (i = 0; i < channel; i++) { + *ptr++ = CONT_CMD_REQUEST_STATUS; + } __osPfsPifRam.pifstatus = CONT_CMD_EXE; diff --git a/src/voice/voicecontwrite4.c b/src/voice/voicecontwrite4.c index bcfc1e5..8d212fc 100644 --- a/src/voice/voicecontwrite4.c +++ b/src/voice/voicecontwrite4.c @@ -30,7 +30,9 @@ s32 __osVoiceContWrite4(OSMesgQueue* mq, int channel, u16 address, u8* buffer) { __osContLastCmd = CONT_CMD_WRITE4_VOICE; __osPfsLastChannel = channel; - for (i = 0; i < channel; i++) { *ptr++ = CONT_CMD_REQUEST_STATUS; } + for (i = 0; i < channel; i++) { + *ptr++ = CONT_CMD_REQUEST_STATUS; + } __osPfsPifRam.pifstatus = CONT_CMD_EXE; diff --git a/src/voice/voicecountsyllables.c b/src/voice/voicecountsyllables.c index dbe2847..b175347 100644 --- a/src/voice/voicecountsyllables.c +++ b/src/voice/voicecountsyllables.c @@ -19,19 +19,19 @@ void osVoiceCountSyllables(u8* data, u32* syllable) { *syllable = 1; for (k = 0; data[k] != 0; k += 2) { sjis = (data[k] << 8) + data[k + 1]; - if ((sjis == 'あ') || (sjis == 'い') || (sjis == 'う') || (sjis == 'え') || (sjis == 'お') || (sjis == 'ア') || - (sjis == 'イ') || (sjis == 'ウ') || (sjis == 'エ') || (sjis == 'オ')) { + if ((sjis == 'あ') || (sjis == 'い') || (sjis == 'う') || (sjis == 'え') || (sjis == 'お') || (sjis == 'ア') + || (sjis == 'イ') || (sjis == 'ウ') || (sjis == 'エ') || (sjis == 'オ')) { if (k == 0) { *syllable += 2; } else { *syllable += 1; } - } else if ((sjis == 'か') || (sjis == 'き') || (sjis == 'く') || (sjis == 'け') || (sjis == 'こ') || - (sjis == 'た') || (sjis == 'ち') || (sjis == 'つ') || (sjis == 'て') || (sjis == 'と') || - (sjis == 'ぱ') || (sjis == 'ぴ') || (sjis == 'ぷ') || (sjis == 'ぺ') || (sjis == 'ぽ') || - (sjis == 'カ') || (sjis == 'キ') || (sjis == 'ク') || (sjis == 'ケ') || (sjis == 'コ') || - (sjis == 'タ') || (sjis == 'チ') || (sjis == 'ツ') || (sjis == 'テ') || (sjis == 'ト') || - (sjis == 'パ') || (sjis == 'ピ') || (sjis == 'プ') || (sjis == 'ペ') || (sjis == 'ポ')) { + } else if ((sjis == 'か') || (sjis == 'き') || (sjis == 'く') || (sjis == 'け') || (sjis == 'こ') + || (sjis == 'た') || (sjis == 'ち') || (sjis == 'つ') || (sjis == 'て') || (sjis == 'と') + || (sjis == 'ぱ') || (sjis == 'ぴ') || (sjis == 'ぷ') || (sjis == 'ぺ') || (sjis == 'ぽ') + || (sjis == 'カ') || (sjis == 'キ') || (sjis == 'ク') || (sjis == 'ケ') || (sjis == 'コ') + || (sjis == 'タ') || (sjis == 'チ') || (sjis == 'ツ') || (sjis == 'テ') || (sjis == 'ト') + || (sjis == 'パ') || (sjis == 'ピ') || (sjis == 'プ') || (sjis == 'ペ') || (sjis == 'ポ')) { if (k == 0) { *syllable += 2; } else if ((old == 'っ') || (old == 'ッ')) { @@ -39,14 +39,14 @@ void osVoiceCountSyllables(u8* data, u32* syllable) { } else { *syllable += 3; } - } else if ((sjis == 'ぁ') || (sjis == 'ぃ') || (sjis == 'ぅ') || (sjis == 'ぇ') || (sjis == 'ぉ') || - (sjis == 'ゃ') || (sjis == 'ゅ') || (sjis == 'ょ') || (sjis == 'ゎ') + } else if ((sjis == 'ぁ') || (sjis == 'ぃ') || (sjis == 'ぅ') || (sjis == 'ぇ') || (sjis == 'ぉ') + || (sjis == 'ゃ') || (sjis == 'ゅ') || (sjis == 'ょ') || (sjis == 'ゎ') - || (sjis == 'ァ') || (sjis == 'ィ') || (sjis == 'ゥ') || (sjis == 'ェ') || (sjis == 'ォ') || - (sjis == 'ャ') || (sjis == 'ュ') || (sjis == 'ョ') || (sjis == 'ヮ') || (sjis == 'ヵ') || - (sjis == 'ヶ')) { - if ((old == 'あ') || (old == 'い') || (old == 'う') || (old == 'え') || (old == 'お') || (old == 'ア') || - (old == 'イ') || (old == 'ウ') || (old == 'エ') || (old == 'オ')) { + || (sjis == 'ァ') || (sjis == 'ィ') || (sjis == 'ゥ') || (sjis == 'ェ') || (sjis == 'ォ') + || (sjis == 'ャ') || (sjis == 'ュ') || (sjis == 'ョ') || (sjis == 'ヮ') || (sjis == 'ヵ') + || (sjis == 'ヶ')) { + if ((old == 'あ') || (old == 'い') || (old == 'う') || (old == 'え') || (old == 'お') || (old == 'ア') + || (old == 'イ') || (old == 'ウ') || (old == 'エ') || (old == 'オ')) { *syllable += 1; } } else if ((sjis == 'ん') || (sjis == 'ー') || (sjis == 'っ') || (sjis == 'ン') || (sjis == 'ッ')) { diff --git a/src/voice/voicecrc.c b/src/voice/voicecrc.c index 308862e..52ae78a 100644 --- a/src/voice/voicecrc.c +++ b/src/voice/voicecrc.c @@ -8,12 +8,12 @@ #include "PRinternal/controller.h" #include "PR/os_voice.h" -#define VOICE_CRC_LENGTH 8 +#define VOICE_CRC_LENGTH 8 #define VOICE_CRC_GENERATOR 0x85 /** - * This function is essentially the same as __osContDataCrc, but allows for a variable message length, specified by - * `numBytes`. + * This function is essentially the same as __osContDataCrc, but allows for a variable message length, + * specified by `numBytes`. */ u8 __osVoiceContDataCrc(u8* data, u32 length) { s32 temp = 0; diff --git a/src/voice/voicesetadconverter.c b/src/voice/voicesetadconverter.c index f3f8591..f5aca4d 100644 --- a/src/voice/voicesetadconverter.c +++ b/src/voice/voicesetadconverter.c @@ -28,7 +28,9 @@ s32 __osVoiceSetADConverter(OSMesgQueue* mq, s32 channel, u8 data) { __osContLastCmd = CONT_CMD_SWRITE_VOICE; __osPfsLastChannel = channel; - for (i = 0; i < channel; i++) { *ptr++ = CONT_CMD_REQUEST_STATUS; } + for (i = 0; i < channel; i++) { + *ptr++ = CONT_CMD_REQUEST_STATUS; + } __osPfsPifRam.pifstatus = CONT_CMD_EXE; diff --git a/src/voice/voicestopreaddata.c b/src/voice/voicestopreaddata.c index b28143f..1996c5d 100644 --- a/src/voice/voicestopreaddata.c +++ b/src/voice/voicestopreaddata.c @@ -12,7 +12,7 @@ s32 osVoiceStopReadData(OSVoiceHandle* hd) { s32 ret; -#if BUILD_VERSION >= VERSION_K +#if BUILD_VERSION >= VERSION_K s32 i; #endif u8 stat; @@ -33,7 +33,7 @@ s32 osVoiceStopReadData(OSVoiceHandle* hd) { ret = __osVoiceContWrite4(hd->__mq, hd->__channel, 0, temp); if (ret == 0) { -#if BUILD_VERSION >= VERSION_K +#if BUILD_VERSION >= VERSION_K i = 0; #endif do { @@ -48,14 +48,14 @@ s32 osVoiceStopReadData(OSVoiceHandle* hd) { } else { hd->__mode = 0; } -#if BUILD_VERSION >= VERSION_K +#if BUILD_VERSION >= VERSION_K i++; } while ((ret == CONT_ERR_VOICE_NO_RESPONSE) && (i < 20)); #else } while ((ret == CONT_ERR_VOICE_NO_RESPONSE)); #endif } -#if BUILD_VERSION >= VERSION_K +#if BUILD_VERSION >= VERSION_K if (i >= 20) { ret == CONT_ERR_VOICE_NO_RESPONSE; } diff --git a/tools/check_format.py b/tools/check_format.py new file mode 100644 index 0000000..0db12a0 --- /dev/null +++ b/tools/check_format.py @@ -0,0 +1,82 @@ +# SPDX-FileCopyrightText: 2024 zeldaret +# SPDX-License-Identifier: CC0-1.0 + +import subprocess +import argparse +import difflib +import multiprocessing +import glob +import os.path +import sys + +sys.path.insert(0, os.curdir) +import format + +sys.path.pop(0) + + +def get_git_status(): + return subprocess.check_output("git status --porcelain".split(), text=True) + + +def get_modified_files_to_format(compare_to): + modified_files_str = subprocess.check_output( + ["git", "diff", "--name-only", compare_to], text=True + ) + modified_files = set(modified_files_str.splitlines()) + + all_src_files, all_extra_files = format.list_files_to_format() + # Split modified_files between source files and extra files (see format.py) + # This also filters out deleted files that no longer exist + modified_src_files_existing = list(modified_files.intersection(all_src_files)) + modified_extra_files_existing = list(modified_files.intersection(all_extra_files)) + + return modified_src_files_existing, modified_extra_files_existing + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--verbose", action="store_true") + parser.add_argument("--compare-to", dest="compare_to") + args = parser.parse_args() + + if args.compare_to: + src_files, extra_files = get_modified_files_to_format(args.compare_to) + if args.verbose: + print("Formatting specific files:") + print(len(src_files), src_files) + print(len(extra_files), extra_files) + if not src_files and not extra_files: + if args.verbose: + print("Nothing to format") + exit(0) + else: + src_files, extra_files = format.list_files_to_format() + + nb_jobs = multiprocessing.cpu_count() + + git_status_pre = get_git_status() + + format.format_files(src_files, extra_files, nb_jobs) + + git_status_post = get_git_status() + + if git_status_pre != git_status_post: + print( + "Misformatted files found." + " Run ./format.py and verify codegen is not impacted." + ) + for l in difflib.unified_diff( + git_status_pre.splitlines(), + git_status_post.splitlines(), + "Old git status", + "New git status", + ): + print(l) + + print(subprocess.check_output("git diff".split(), text=True)) + exit(1) + + +if __name__ == "__main__": + main()