diff --git a/CLAUDE.md b/CLAUDE.md index 54a455f0..62d1a874 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -84,7 +84,7 @@ Core options defined in `libretro_core_options.h` control blitter mode, BIOS usa ### Jaguar CD Emulation -CD support is implemented across `src/cdrom.c` (BUTCH chip / FIFO / DSA commands), `src/cdintf.c` (disc image loading: CUE/BIN, CHD, CDI), and hooks in `src/jaguar.c` (BIOS auth bypass, boot stub injection). +CD support is implemented across `src/cdrom.c` (BUTCH chip / FIFO / DSA commands), `src/cdintf.c` (disc image loading: CUE/BIN, ISO, CDI), and hooks in `src/jaguar.c` (BIOS auth bypass, boot stub injection). Key docs: - `docs/butch-registers.md` — full BUTCH register map ($DFFF00-$DFFF2F) with bit definitions diff --git a/Makefile b/Makefile index d593ecc0..60cea638 100644 --- a/Makefile +++ b/Makefile @@ -62,8 +62,8 @@ ifeq ($(platform), unix) # Platform affix = classic__<µARCH> # Help at https://modmyclassic.com/comp -# (armv7 a7, hard point, neon based) ### -# NESC, SNESC, C64 mini +# (armv7 a7, hard point, neon based) ### +# NESC, SNESC, C64 mini else ifeq ($(platform), classic_armv7_a7) TARGET := $(TARGET_NAME)_libretro.so fpic := -fPIC @@ -88,13 +88,20 @@ else ifeq ($(platform), classic_armv7_a7) LDFLAGS += -static-libgcc -static-libstdc++ endif endif -####################################### - +####################################### + # OSX else ifeq ($(platform), osx) TARGET := $(TARGET_NAME)_libretro.dylib fpic := -fPIC SHARED := -dynamiclib + CFLAGS += -Ofast + CXXFLAGS += $(CFLAGS) + ifneq ($(arch),intel) + ifneq ($(arch),ppc) + HAVE_NEON = 1 + endif + endif ifeq ($(arch),ppc) FLAGS += -DMSB_FIRST OLD_GCC = 1 @@ -123,6 +130,10 @@ else ifneq (,$(findstring ios,$(platform))) fpic := -fPIC SHARED := -dynamiclib MINVERSION := + CFLAGS += -Ofast + CXXFLAGS += $(CFLAGS) + HAVE_NEON = 1 + ifeq ($(IOSSDK),) IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path) endif @@ -582,7 +593,7 @@ CXXFLAGS += $(FLAGS) CFLAGS += $(FLAGS) OBJOUT = -o -LINKOUT = -o +LINKOUT = -o ifneq (,$(findstring msvc,$(platform))) OBJOUT = -Fo @@ -616,9 +627,90 @@ endif clean: rm -f $(TARGET) $(OBJECTS) -.PHONY: clean +# --- Unit tests --- +# Build tests against the dylib via dlsym. +# Run: make test (builds core + tests, then runs all test suites) + +TEST_CC ?= $(CC) +TEST_CFLAGS = -O0 -g -Wno-incompatible-pointer-types +TEST_LDFLAGS = -ldl +TEST_BINS = test/test_gpu_instructions test/test_dsp_instructions test/test_m68k_instructions test/test_irq test/test_hle_bios test/test_cd_hle_boot test/test_cd_bios_boot test/test_blitter_simd + +test/test_gpu_instructions: test/test_gpu_instructions.c test/test_framework.h $(TARGET) + $(TEST_CC) $(TEST_CFLAGS) -o $@ $< $(TEST_LDFLAGS) + +test/test_dsp_instructions: test/test_dsp_instructions.c test/test_framework.h $(TARGET) + $(TEST_CC) $(TEST_CFLAGS) -o $@ $< $(TEST_LDFLAGS) + +test/test_m68k_instructions: test/test_m68k_instructions.c test/test_framework.h $(TARGET) + $(TEST_CC) $(TEST_CFLAGS) -o $@ $< $(TEST_LDFLAGS) + +test/test_irq: test/test_irq.c test/test_framework.h $(TARGET) + $(TEST_CC) $(TEST_CFLAGS) -o $@ $< $(TEST_LDFLAGS) + +test/test_hle_bios: test/test_hle_bios.c test/test_framework.h $(TARGET) + $(TEST_CC) $(TEST_CFLAGS) -o $@ $< $(TEST_LDFLAGS) + +test/test_cd_hle_boot: test/test_cd_hle_boot.c test/test_framework.h test/cd_assertions.h $(TARGET) + $(TEST_CC) $(TEST_CFLAGS) -o $@ $< $(TEST_LDFLAGS) + +test/test_cd_bios_boot: test/test_cd_bios_boot.c test/test_framework.h test/cd_assertions.h $(TARGET) + $(TEST_CC) $(TEST_CFLAGS) -o $@ $< $(TEST_LDFLAGS) + +BLITTER_SIMD_TEST_FLAGS := +ifeq ($(BLITTER_SIMD_SRC),$(CORE_DIR)/src/blitter_simd_sse2.c) +ifneq (,$(filter i686 i386 x86 win32,$(ARCH) $(platform))) + BLITTER_SIMD_TEST_FLAGS += -msse2 +endif +endif + +test/test_blitter_simd: test/test_blitter_simd.c src/blitter_simd.h $(BLITTER_SIMD_SRC) $(TARGET) + $(TEST_CC) -O2 $(BLITTER_SIMD_TEST_FLAGS) -I src -o $@ test/test_blitter_simd.c $(BLITTER_SIMD_SRC) + +test-build: $(TEST_BINS) + +test: test-build + @echo ""; echo "=== Running unit tests ===" ; echo "" + @fail=0; \ + for t in test/test_gpu_instructions test/test_dsp_instructions test/test_m68k_instructions test/test_irq test/test_hle_bios test/test_blitter_simd; do \ + if [ -x "$$t" ]; then \ + DYLD_LIBRARY_PATH=. LD_LIBRARY_PATH=. "$$t" > /tmp/vj_test_out.txt 2>&1; \ + rc=$$?; \ + grep -E 'PASS|FAIL|SKIP|===|---|Results:' /tmp/vj_test_out.txt; \ + if [ $$rc -ne 0 ]; then fail=1; fi; \ + fi; \ + done; \ + exit $$fail + +# CD HLE boot smoke suite — separated from `test` because it intentionally +# carries a known-failing TDD baseline. CI / pre-commit should call `test` +# (which stays green); developers iterating on CD HLE call `test-cd-hle-boot` +# directly and diff against test/cd_hle_boot_baseline.log. +test-cd-hle-boot: test/test_cd_hle_boot + @echo ""; echo "=== CD HLE boot smoke (TDD baseline; not part of strict test) ===" + @DYLD_LIBRARY_PATH=. LD_LIBRARY_PATH=. test/test_cd_hle_boot \ + > test/cd_hle_boot_baseline.log 2>&1; \ + rc=$$?; \ + grep -aE '\[(RUN|PASS|FAIL|CRASH|FOCUS-SKIP|SKIP|PC-)\]|Discovered|---' test/cd_hle_boot_baseline.log; \ + echo ""; echo "(full log: test/cd_hle_boot_baseline.log; rc=$$rc)"; \ + exit 0 + +# Same shape as test-cd-hle-boot but exercises the real Atari Jaguar CD BIOS. +# Requires the BIOS file to live under VJ_TEST_CD_ROOT (default test/roms/private). +test-cd-bios-boot: test/test_cd_bios_boot + @echo ""; echo "=== CD real-BIOS boot smoke (TDD baseline; not part of strict test) ===" + @DYLD_LIBRARY_PATH=. LD_LIBRARY_PATH=. test/test_cd_bios_boot \ + > test/cd_bios_boot_baseline.log 2>&1; \ + rc=$$?; \ + grep -aE '\[(RUN|PASS|FAIL|CRASH|FOCUS-SKIP|SKIP|PC-)\]|Discovered|---' test/cd_bios_boot_baseline.log; \ + echo ""; echo "(full log: test/cd_bios_boot_baseline.log; rc=$$rc)"; \ + exit 0 + +clean-test: + rm -f $(TEST_BINS) $(addsuffix .dSYM,$(TEST_BINS)) + +.PHONY: clean test test-build clean-test test-cd-hle-boot test-cd-bios-boot endif print-%: @echo '$*=$($*)' - diff --git a/Makefile.common b/Makefile.common index d9623b9b..a5c4a7ea 100644 --- a/Makefile.common +++ b/Makefile.common @@ -46,7 +46,10 @@ SOURCES_C := \ $(CORE_DIR)/src/mmu.c \ $(CORE_DIR)/src/vjag_memory.c \ $(CORE_DIR)/src/universalhdr.c \ - $(CORE_DIR)/src/wavetable.c + $(CORE_DIR)/src/wavetable.c \ + $(CORE_DIR)/src/jagcd_hle.c \ + $(CORE_DIR)/src/jagcd_bios.c \ + $(CORE_DIR)/src/jagcd_cart.c # SIMD-accelerated blitter operations: select arch-specific implementation. # BLITTER_SIMD may be set explicitly to one of: scalar, sse2, neon. diff --git a/docs/atari-jaguar-1999/.convert.py b/docs/atari-jaguar-1999/.convert.py new file mode 100755 index 00000000..53887b60 --- /dev/null +++ b/docs/atari-jaguar-1999/.convert.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +"""Convert every PDF in this directory to a sibling .md via pymupdf4llm.""" +from __future__ import annotations + +import os +import sys +import time +from concurrent.futures import ProcessPoolExecutor, as_completed +from pathlib import Path + +import pymupdf4llm + +HERE = Path(__file__).resolve().parent + + +def convert(pdf: Path) -> tuple[Path, int, float]: + t0 = time.time() + md = pymupdf4llm.to_markdown(str(pdf), show_progress=False) + out = pdf.with_suffix(".md") + out.write_text(md, encoding="utf-8") + return out, len(md), time.time() - t0 + + +def main() -> int: + pdfs = sorted(p for p in HERE.glob("*.pdf")) + if not pdfs: + print("no PDFs found", file=sys.stderr) + return 1 + + workers = min(os.cpu_count() or 4, 8) + print(f">> converting {len(pdfs)} PDFs with {workers} workers", flush=True) + + with ProcessPoolExecutor(max_workers=workers) as ex: + futs = {ex.submit(convert, p): p for p in pdfs} + for f in as_completed(futs): + src = futs[f] + try: + out, size, dt = f.result() + print(f" [{dt:5.1f}s] {src.name} -> {out.name} ({size:,} chars)", flush=True) + except Exception as exc: + print(f" !! {src.name}: {type(exc).__name__}: {exc}", flush=True) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/docs/atari-jaguar-1999/.gitignore b/docs/atari-jaguar-1999/.gitignore new file mode 100644 index 00000000..39f858b4 --- /dev/null +++ b/docs/atari-jaguar-1999/.gitignore @@ -0,0 +1,8 @@ +.venv/ +__pycache__/ +*.pyc + +# Source PDFs (~73 MB) are not checked in — they live in cubanismo/jaguar-sdk +# and hillsoftware.com. Run `./fetch-pdfs.sh` to re-download locally if you +# need them, then `./.venv/bin/python .convert.py` to regenerate the .md files. +*.pdf diff --git a/docs/atari-jaguar-1999/00 - Index.md b/docs/atari-jaguar-1999/00 - Index.md new file mode 100644 index 00000000..d1445ba4 --- /dev/null +++ b/docs/atari-jaguar-1999/00 - Index.md @@ -0,0 +1,762 @@ +# *Development System + +| | | + +| + +The information in this documentation ts © 1994 Atari Corporation, All Rights Reserved except where otherwise noted. “y This Documentis ConfidentialInformation and the Property of Atari Corporation + +: | + +e + +) + +**==> picture [488 x 71] intentionally omitted <==** + +**----- Start of picture text -----**
+|
a@| Jaguar Developer Documentation
ee Table ofContents —
**----- End of picture text -----**
+ + +## SS + +Introduction To The Atari Jaguar Development System . + +## Contacts At Atari + +Phone & Fax Numbers, Electronic Mail Addresses, General Mailing/Shipping Address + +## Online Support + +Who To Contact For What? + +## Setup & Installation + +Ifyou have problems + +Installation + +Configuation + +Running Your First Program + +How to Run A Cartridge In A Development System . a Overview of Jaguar Hardware & Architecture + +The Jaguar Development System + +A Sample Debugging Session , + +A Simple Sample Program a + +Jaguar and Memory + +Jaguar Video & Clock Speeds + +The Jaguar Blitter + +The Jaguar Development System ROMulator + +Jaguar Controller Support + +## Table of Contents + +Introduction + +Jaguar Video and Object Processor + +Object Processor Performance + +Memory Map + +- Object Definitions + +Description of Object Processor/Pixel Path + +O1994AunCopSSSNovember, 1994 + +November, 1994 1994 + +| | o + +## Jaguar Developer Documentation _ «Fable ofContents + +Color Mapping The CRY Color Scheme + +Graphics Processor Subsystem Memory Map + +**==> picture [1 x 3] intentionally omitted <==** + +**----- Start of picture text -----**
+,
**----- End of picture text -----**
+ + +## Graphics Processor + +Programming The Graphics Processor + +) + +Design Philosophy + +Pipe-Lining + +Memory Interface + +Arithmetic Functions + +Interrupts Program Flow Control Register File Blitter Programming The Blitter Address Generation DataBus InterfacePath Register Description . Address Registers Control Registers Data Registers Modes of Operation + +Jerry ‘ + +Frequency Dividers - Programmable Timers | Interrupts Pulse Width Modulation DACs . Synchronous Serial Interface Asynchronous Serial Interface 4 Joystick Interface , a General Purpose I/O Decodes a DSP Al Programming The DSP ’ ‘ Design Philosophy i11 November, 1994 + +, + +**==> picture [26 x 153] intentionally omitted <==** + +**----- Start of picture text -----**
+i
|
0)4;
]
'
**----- End of picture text -----**
+ + +**==> picture [7 x 172] intentionally omitted <==** + +**----- Start of picture text -----**
+:
|
:
**----- End of picture text -----**
+ + +**==> picture [5 x 25] intentionally omitted <==** + +**----- Start of picture text -----**
+r
**----- End of picture text -----**
+ + +ii + +© 1994 Atari Corp. + +**==> picture [20 x 34] intentionally omitted <==** + +**----- Start of picture text -----**
+ai)
**----- End of picture text -----**
+ + +**==> picture [426 x 63] intentionally omitted <==** + +**----- Start of picture text -----**
+§ Jaguar Developer Documentation
- Table ofContents _
**----- End of picture text -----**
+ + +**==> picture [53 x 29] intentionally omitted <==** + +**----- Start of picture text -----**
+a
**----- End of picture text -----**
+ + +Pipe-Lining + +Memory Map + +Arithmetic Functions Interrupts Program Flow Control Circular Buffer Management + +Register File + +## Appendices + +GPU & DSP Instruction Set + +, + +Writing Fast GPU & DSP Programs + +Data Organization - Big and Little Endian + +**==> picture [23 x 29] intentionally omitted <==** + +**----- Start of picture text -----**
+ ]
YS
**----- End of picture text -----**
+ + +## iTechnical Reference + +Jaguar Console Hardware Release Notes General Guidelines for Cartridges + +**==> picture [2 x 17] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +Specific Bits in Production Series Consoles + +Memory Map & Register List + +System Setup Registers + +GPU Registers + +| + +Blitter Registers + +Jerry Registers + +Joystick Registers + +DSP Registers + +| + +Jaguar Console Peripheral Specifications Video Ports + +RF And Composite + +Video Timings + +Video Connector + +DSP Port + +Multi-Console Games + +| & : a | + +Jaguar Network Jaguar Modem + +## Cartridge/Expansion Port + +## a + +SintAuailopo + +S—™”””SSCSCSCSE November, 1994 + +; | } i + +| i | 4 + +I + +j : S | + +## Jaguar Developer Documentation Table of Contents + +Controllers And Controller Ports Signals And Pinouts . Register Addressing Addressing - Digital Digital Inputs + +Register Addressing Addressing - Digital Digital Inputs + +**==> picture [1 x 27] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +Device Addressing + +ReadingA Jaguar Controller + +Standard Jaguar Controller Matrix + +4 Player Adapter + +6D Controller + +. + +Head-Mounted Trackers + +Rotary “Tempest” Controller Analog “Stick” and “Driving” Controllers Reading Bank Switching Controllers + +Audio Subsystem + +Cartridges & NVRAM + +GPU/DSP Bugs & Warnings + +Blitter Bugs & Warnings Object Processor Bugs & Warnings Miscellaneous Bugs & Warnings + +Jaguar CD-ROM Emulator Setup Step By Step Setup + +| + +The Jaguar CD-ROM _A Bit About CD-ROMs Some Defiitions Jaguar CD-ROM BIOS ; : Calling The CD-ROM BIOS : Function Reference , Jaguar CD-ROM Authoring Tool With Emulator be Creating[A][New][ Document] 7 Opening An Existing Document 7 Description ofthe Authoring Window a _. Current Item In The Window + +: | + +**==> picture [26 x 89] intentionally omitted <==** + +**----- Start of picture text -----**
+'
i
) 4 :
: =
j 2
**----- End of picture text -----**
+ + +| + +a @ + +r) SS + +**==> picture [459 x 241] intentionally omitted <==** + +**----- Start of picture text -----**
+Jaguar Developer Documentation
Peo Table of Contents |
Saving A Document .
EditingACD-ROM Document
InsertingA Session
InsertingA Track |
Inserting A File
Editing A Filename
Adding Comments
Cut/Copy/Paste/Delete
Undo |
**----- End of picture text -----**
+ + +**==> picture [8 x 33] intentionally omitted <==** + +**----- Start of picture text -----**
+—
**----- End of picture text -----**
+ + +Goto Session + +Goto Track + +Find/Find Next Preferences - Specifying Lead-In/Lead-Out For Sessions & Tracks + +Preferences - Specifying SCSI ID Preferences - How To Set The SCSI Identifier + +Preferences - CD-ROM Latency + +Emulating The CDROM + +Stopping The Emulation + +Restrictions On The Emulation + +Important Notes On Using The CD-ROM Emulator + +Log File Name | Preload Buffers + +CD-ROM Emulator Q&A The Jaguar CD-ROM: Programming, Procedures, and Guidelines + +The Jaguar Voice Modem Introduction + +Modem Interface + +Data Communications & Bandwidth + +Control Flow + +Call Hang Up + +Answer Sequence + +## Parsing The Received Data + +Call Waiting © 1994 Atari Corp. + +v + +11 November, 1994 + +I, in + +## Jaguar Developer Documentation Table of Contents + +Comment Reference For Voice Plus Data Initiate-Report Software Reset Change Host Baud Rate to 19200 Set Data Packet Size Dial Number / Transmit DTMF Tone Poll DTMF Detector Report Handshake Status Set Voice Volume Set Voice Sampling Frequency Send Real Time Data Report Dial Tone Detector + +Unsolicited Reponse Reference Receive Real Time Data Packet Error Status Call Waiting Detected Line Lost + +**==> picture [7 x 20] intentionally omitted <==** + +**----- Start of picture text -----**
+f
**----- End of picture text -----**
+ + +Fanngn + +- #1 - Minimum Object List Update + +- #2 - Moving A Bitmap With The Object Processor #3 - Clipping A Bitmap Object With The Object Processor #4 - Scaling A Bitmap Object With The Object Processor #6 - GPU GPU Interrupt Object Processing Object Processing Processing #12 - Rotating A Bitmap A Bitmap Bitmap With The The Blitter + +| #6 - GPU GPU Interrupt Object Processing Object Processing Processing #12 - Rotating A Bitmap A Bitmap Bitmap With The The Blitter i Jaguar Mandlebrot/Fractal Demo i JagLine, JagSlant, JagBlock, JagSkew, JagShade i Joypad Reading Example Analog Joystick Example : EEPROM Example RGB True Color Bitmap Display Example Simple DSP Waveform Output + +**==> picture [7 x 20] intentionally omitted <==** + +**----- Start of picture text -----**
+(
**----- End of picture text -----**
+ + +Blitter Demo + +**==> picture [141 x 19] intentionally omitted <==** + +**----- Start of picture text -----**
+we
**----- End of picture text -----**
+ + +“— liNovember,1994. + +©4994 Atari Corp. + +| Yd ) + +## |g” JaguarJaguar DeveloperDeveloper DocumentationDocumentatio pe Table of Contents + +Jaguar JPEG Decompression Example Jaguar Synth Demo 3D Rendering & Texture Mapping Demo + +3D Graphics 3DS2JAG Object/Texture Conversion Utility + +Transformation & Display Routines + +**==> picture [2 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +3D Demo program + +Jaguar JPEG Using The Compression Utilities + +Anatomy of a JAGPEG Image + +Subsampling + +Let's Compress Some Images DEJAG Decompression Routines + +To Use DEJAG + +Preparing DEHUFF.DAT With Locate + +TESTJPG Sample Program + +Excerpt From TEST.S + +Cinepak Video Decompression & Playback Networking + +Music + +The Jaguar Synth + +Jaguar Sound Tool User Guide + +The Jaguar Music Driver + +Parse Utility + +, + +Merge Utility SNDCOMP Utility + +Processing a MIDI File For the Atari Jaguar Introduction + +&- + +About The Jaguar Music System Terminology Procedure Summary + +Step by Step Procedure + +. + +More About Voicing Samples + +## Bio Aud Cope + +CE verb, 1994 + +' + +os + +## Jaguar Developer Documentation pe Table ofContents + +Looping MIDI Files + +Example Files + +Using QSound for Jaguar + +The QSOUND.OT Module + +How To Contact QSound Labs + +QDEMO - The QSound Demo Program + +Introduction + +Cinepak Decompressor 68000 Module + +GPU Module Flags + +**==> picture [5 x 21] intentionally omitted <==** + +**----- Start of picture text -----**
+(
**----- End of picture text -----**
+ + +Auxiliary Data + +Jaguar Film Format Smooth Format + +## Chunky Format + +## Layout of CD-ROM + +Sample Playback Code + +Modules Supplied + +Memory Map + +Key Parameters + +) Key Variables } Utilities | Audio Playback ': Interrupt Handling Buffer Management : Frame Rate Control Code Walkthough Error Trapping + +## Jaguar Cinepak Utilities + +| + +. + +**==> picture [7 x 24] intentionally omitted <==** + +**----- Start of picture text -----**
+(
**----- End of picture text -----**
+ + +Movie To Film + +Converts a standard Quicktime movie to Jaguar Film Format viti + +11 November, 1994 + +© 1994 Atari Corp. + +| L @ + +: | & + +## lal Jaguar Developer Documentation Py Tableof Contents + +**==> picture [1 x 31] intentionally omitted <==** + +**----- Start of picture text -----**
+_
**----- End of picture text -----**
+ + +## RGB-To-CRY + +Converts a Jaguar Film from RGB to CRY format + +Smooth To Chunky + +Converts a Jaguar Film from Smooth Format to Chunky Format + +FILM To AIFF + +Converts a Jaguar Film File into an AIFF File + +## Sample Jaguar Films + +References Trademark & Copyright Notice + +eeEE | [ (The main documentation for some tools is provided in separate sections) Madmac Macro Assembler Commandline Options Summary ofNew Assembly Directives Notes On Assembly Directives Miscellaneous Notes + +ALN Linker + +Commandline Options + +DB (WDB/RGBJAG) Debugger Debugger Messages | Commandline Options | GASM & LTXCONV | Utilities The AR68 program creates object module archive library files that can be used with the ALN linker. | AR68 Archive Utility | DUMP Utility | SIZE Utility | The SIZE utility analyzes an executable program an executable program executable program program file or object module or object module object module module file and and prints information information + +The SIZE utility analyzes an executable program an executable program executable program program file or object module or object module object module module file and and prints information information about the sizes and load addresses of the various program segments, and optionally a list of the symbols defined within the file. + +FILEFIX Utility Breaks down an executable program file into separate files for the TEXT, DATA, and symbol table segments, and outputs a script file to load them into the Alpine Board. + +## STRIP Utility + +Removes symbols from an executable program file + +| @104AunCop. + +a S~S”””SSSCSdi Nove ber, 1994 + +## me Jaguar Developer Documentation + +FGREP Utility Fast General Regular Expression Parser. This program will search text files for a specified string pattern and tell you which files match or not. LS Utility , This is a UNIX-style list-files utility which has some options the standard ‘DIR' command does not. MAKE Utility This is a utility used to build your program files from your source code files by compiling only those files which have been changed since they were previously compiled. GULAM Shell The GULAM shell is a UNIX C-Shell clone for the Atari computer, which normaily has no standard - commandline shell. 3DS2JAG Utility The 3DS2JAG Utility converts AutoCAD 3D Studio objects into a format that can be used with the 3D Graphics libraries. (See the Libraries chapter.) PARSE Utility The PARSE utility converts standard MIDI files to work with the Jaguar Music Driver. (See the Libraries chapter.) SNDCOMP Uiility The SNDCOMP utility compresses digital sound samples. (See the Libraries chapter.) EY Appendices 7 as | Frequently Asked Questions About Jaguar About the Developer Package About Problems With the Development Software or System About Documentation Clarification H About Programming About Documentation Bugs & Additions ' About Hardware Features ti : Atari-Based Development System Information s Describes the difference between an Atari-based development system and a PC-based development system. ' Jaguar Development Standards Jaguar Software Experience Approved Manufacturer Production Guidelines Compatibility Coding And Content Verification Gift Box Content Descriptor! Manufacturing _ 1 Subject to Industry Rating System Proposal 11 November, 1994 x © 1994 Atari Corp 1994 Atari Corp Atari Corp Corp + +© 1994 Atari Corp 1994 Atari Corp Atari Corp Corp + +1 Jaguar Developer D ocumentation ri =——“—i:SFablee ofContents + +: + +/- + +Compatibility Assurance Holograms And Royalty Additional Documentation + +, + +Introduction + +The Command Line Command Line Options Using Madmac Interactive Mode Things You Should Be Aware Of Forward Branches Text File Format + +Statements + +Equates Symbols and Scope + +| + +Keywords Constants + +Strings Register Lists Expressions Types + +Unary Operators + +Binary Operators + +Special Forms + +Example Expressions + +Directives Notes On Assembly Directives + +## Macros + +## Parameter Substitution + +Macro Invocation + +Example Macros Repeat Blocks + +## 68000 Mode Addressing Modes + +| + +Branches © 1994 Atari Corp. + +xi + +11 November, 1994 + +| + +i \ ah: a ‘ | + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +## Jaguar Developer Documentation - —-«* Table ofContents + +## Linker Constants OptimizatioA **n** ds Translations + +Jaguar GPU/DSP Mode + +Condition Codes + +Optimizations and Translations + +6502 Support Object Code Format + +## Error Messages + +When Things Go Wrong + +Warnings + +Fatal Errors + +Errors + +Introduction The Command Line Command Line Options + +( + +Using ALN Filenames And The Library Path + +Absolute Linking + +File Symbols + +File Formats + +## Alcyon Format Files + +## Alcyon Format Object Modules + +Alcyon (GEMDOS) Format Relocatable Executable Program Files Alcyon (GEMDOS) Relocation Information Alcyon-Format Absolute Object Modules (Jaguar Executable Program) Alcyon Format Archive Libraries Alcyon Symbol Format ) File Formats Formats BSD-Format Object Modules ; COFF-Format Absolute Executable Program Files ( + +## BSDICOFF File Formats Formats + +> DOINDEX- Archives and their Indices + +Duplicate Symbols In Modules + +Unused Modules In Libraries TiNovember,x.1996... ©1994 Atari Corp. + +© Jaguar Developer Documentation ; | Table of Contents + +j Error Messages + +1 + +4a F ['See4 (This sectionsto the contains addendum thein main the Tools documentation section) for the DB Debugger (AKA “RDBJAG” and “WDB’). ld j DB: The Atari Debugger + +Expressions, Ranges, And Strings + +The Client, Breakpoints, and Checkpoints: An Overview + +Commands + +The Client, Breakpoints, and Checkpoints: Detail + +- | Symbols And Debugger Variables : Procedures, IF, GOTO, DEFER, and ALIAS + +Operating System Considerations + +1 + +Remote Debugging + +Introduction + +{ + +Command Line + +Source Line Format + +. + +Name Spaces + +Identifers + +| + +: | + +Registers Labels + +Integer Constants + +Floating Point Constants Strings Expressions Addressing Modes + +| + +Error Reporting + +Instruction Optimization Code Safety Checks + +> Relocation and Linking ~ Macros + +Assembler Directives + +Ori Auad Cope + +—~S~S*di November, 1994 + +‘ + +( + +| + +- Jaguar Developer Documentation so Table ofContents _ + +Fi November 1994 0 + +”””—~™”—~™”S~S*C« 994 Atari Corp + diff --git a/docs/atari-jaguar-1999/01 - Getting Started.md b/docs/atari-jaguar-1999/01 - Getting Started.md new file mode 100644 index 00000000..7fc77e23 --- /dev/null +++ b/docs/atari-jaguar-1999/01 - Getting Started.md @@ -0,0 +1,238 @@ +| . Getting Started Page I 3 i "er A f: Introduction Introduction to the Atari Jaguar Development System System | + +| f: Introduction Introduction to the Atari Jaguar Development System System P “ Atari is proud to introduce the most advanced entertainment console system in the whole industry, the F Atari Jaguar. Featuring 64-bit technology and multiple custom RISC processors, the Jaguar has the @ _—s power to lead interactive entertainment into the 21st century. } The Jaguar development package contains development hardware, software, and documentation 7 describing the development environment. All of the current documentation is delivered in an Atari q binder for ease of use. As new documents are released, we will keep you updated within the terms of f- the developer support agreement you signed. Also included are disks containing the current release of : the developer software. Installation instructions are included later in this section. + +| + +| + +| + +Included with your development system is a game cartridge of CYBERMORPH, the first truly interactive 3-D-world game existing at a consumer price level. Cybermorph should give you some idea about the capabilities of the machine. However, while Cybermorph is an impressive game, we would like to emphasize that as one of the earliest Jaguar releases, it only scratches the surface of the machine's capabilities. + +‘ Because there are some differences between your development console and a standard off-the-shelf : retail Jaguar, please refer to the section titled How To Run A Game Cartridge In A Development Sa System. + +We also are using a developer support BBS where you always will find the most current releases of all software demos and development tools. This should also be a communication platform to help to ensure high quality support and good response speed. Please refer to the section titled Online Support. + +| + +We would like to encourage developers to push the Jaguar system to the limit and design software that takes advantage of the great variety of capabilities offered by the hardware. Push the envelope of reality on the first entertainment system that delivers real Power Without the Price™. + +- en —— Confidential Information FER Property ofAtari Corporation + +© 1995 Atari Corp. + +5 June, 1995 + +Page 2 + +Getting Started + +, + +| , | | | | , : , ; | | ) , + +## Contacts AtAtari + +The information below will introduce you to your Jaguar Developer Support contacts at Atari Corporation, tell you their titles, phone numbers, electronic mail addresses, and so forth. + +## Phone Numbers, Fax Numbers, & Electronic Mail[Addresses] + +FET eee Jaguar Developer Support Bill Rehbock Voice: (408) 745-2143 Vice President, Software Business Development Fax: _ (408) 745-2088 Voice: (408) 745-2082 : Compuserve: 70007,1135 Fax: (408) 745-2088 Internet: ssanders@atari.com Compuserve: 75300, 1606 Internet: brehbock@atari.com General Mailing/Shipping Address + +General Mailing/Shipping Address | Atari Corporation 1196 Borregas Ave. Borregas Ave. Ave. | Sunnyvale, CA CA 94089-1302 , sss nese ese ese eee ete ee ee menage ( Se _ —_—-__|_|=—_====FE;* : + +J. Patton 1196 Borregas Ave. Borregas Ave. Ave. Director, Third Party Licensing & Contracts Sunnyvale, CA CA 94089-1302 Voice: (408) 745-2135 sss nese ese ese eee ete ee ee Se _ Compuserve: 70007,1072 GEnie: ATARIDEV Loic Duval Internet: jpatton@atari.com Jaguar Developer Support - France 88 rue Armand Silvestre Normen Kowalewski 92400 Courbevoie Manager, Jaguar Developer Developer Support Voice: (+33) 1.47.35.69.44 or Voice: (408) 745-2127 (+33) 09.14.70.89 (Cellular) Fax: (408) 745-2088 Fax: (+33) 1.47.35.69.76 Compuserve: 75300,3444 Compuserve: 100015,3044 GEnie: N.KOWALEWSKI N.KOWALEWSKI N.KOWALEWSKI Internet: 100015.3044@compuserve.com + +Normen Kowalewski Manager, Jaguar Developer Developer Support Voice: (408) 745-2127 Fax: (408) 745-2088 Compuserve: 75300,3444 GEnie: N.KOWALEWSKI N.KOWALEWSKI N.KOWALEWSKI Internet: nkow@atari.com + +|. GEnie: N.KOWALEWSKI N.KOWALEWSKI N.KOWALEWSKI Internet: nkow@atari.com Mike Fulton a Manager, Jaguar Developer Tools " Voice: (408) 745-8821 : Fax: (408) 745-2088 Compuserve: 75300,1141 GEnie: MIKE-FULTON Internet: mfulton@atari.com + +Alistair Bodin Atari Corp. (UK) Ltd. Atari House Railway Terrace Slough, Berkshire England, SL2 5BZ Voice: (+44) 753-533344 Fax: (+44) 753-822914 Compuserve: 75300,2632 Internet: 75300.2632@compuserve.com + +| + +| + +NUTTee 5 June, 1995 Confidential Information FER Property ofAtari Corporation © 1995 Atari Corp. + +Page 3 + +Getting Started + +The Jaguar Developer Support staff can be reached through electronic mail using the mail addresses shown above. In addition to this, Atari has online file libraries containing the most recent updates of all the developer tools, code libraries, and sample programs. + +Atari Software Development BBS- Atari operates a bulletin board system for developers. Updates to the development system tools, libraries, and sample code are posted to the BBS on a regular basis. The telephone number for the Jaguar Developer BBS is (408) 745-2157. The modem settings should be 8 data bits, 1 stop bit, no parity. Transfer rates up to 28,800 bps are supported. The first time you call, you will not have access to files, so you should leave a message to the sysop requesting access that includes your name and company, and the name of the project you are working on. + +Compuserve - The ATARIGAMING forum of the Compuserve online service has special private Jaguar Developer message areas and file libraries. Send email to Mike Fulton and/or Normen Kowalewski to request access. + +## wena + +d Bill Rehbock — Business related issues, publishing concerns. J. Patton — Trade shows, licensing issues, Title Rating/Labeling Issues. + +. + +Normen Kowalewski — General programming topics, Jaguar-specific programming topics (1st choice), Developer Seminars/Conferences, Development System availability, Address & Phone number changes. Mike Fulton — Installation & Setup, Development Toois, General programming topics, Jaguar-specific programming (3rd choice), Documentation, Jaguar Developer Newsletter, Address & Phone number changes, Online access requests. Scott Sanders — General programming topics, Jaguar specific programming topics (2nd choice), Sample programs, Address & Phone number changes + +Loic Duval — European Developer Support. Alistair Bodin — U.K. Developer Support. + +© 1995 Atari Corporation Confidential Information &; Property ofAtari Corporation + +18 April, 1995 + +i + +| . % { | 4 4 g ’ gq | 2 | @ a zz pe | + +| + +: ‘ + +ql + +; + +**==> picture [542 x 62] intentionally omitted <==** + +**----- Start of picture text -----**
+Setup &instailation gg§§ #=§§=- == a
There are three basic steps to getting started with your Jaguar Development System:
**----- End of picture text -----**
+ + +1) Installation + +2) Configuation + +3) Running your first program + +We'll take you through each of these steps from installing the Jaguar development tools and sample programs onto your system to running your first sample program. + +If you experience any problems with installation, please contact your developer support representative. If you have problems with one of the floppy disks, you may wish to check on the Jaguar. Developer BBS system to see if you can download the files required to recreate the bad disk. + +Please read these instructions carefully before trying to install the Jaguar developer tools & sample code. Also be aware that due to the fact that Atari is constantly improving the tools, the installation process may change. In order that you have the most up to date instructions, we ask that you please view the file READTHIS.1ST (normally found on Disk 1) prior to attempting installation. + +About 15 megabytes of free disk space on your hard disk drive is required for installation. Note: You must perform the installation from the MSDOS command prompt. If you are running Microsoft Windows, please exit to DOS or run the MSDOS command prompt from within Windows in order to perform the installation. 1) Change to the drive and directory where you want to install the files. The installation will automatically create a directory named JAGUAR at this location and install everything into it. (e.g. if you are at D:\ then you'll end up with D:JAGUAR and it will contain everything. Therefore, you do not need to create a JAGUAR directory yourself.) 2) Insert disk #1 into your floppy drive. To install from drive A: enter the command "A: install A:" To install from drive B: enter the command "B: install B:" + +Type the commands exactly as shown. Do not use a backslash following the drive letter and colon. Note: The drive letter and colon specifies the SOURCE drive, not the destination. The destination is implied by the current drive and directory when you run the installation. + +10 April, 1995 + +Confidential Information “JER. Property ofAtari Corporation + +© 1995 Atari Corp. | + +Page 5 + +| + +u. ry , + +| + +Getting Started ry The installation process will take several minutes to complete, and you will be prompted to change disks when needed. Simply follow the onscreen instructions. When the installation is | complete, you will be returned to the DOS prompt. | og ae There are several envirionment variables used by the Jaguar development tools that need to be set properly before you can do anything. The instructions below apply to an MSDOS system (with or without Microsoft Windows). If you have a different operating system, you will have to.adjust the steps as appropriate. If you need assistance, please contact Jaguar Developer Support (see the info on pages 2 & 3). + +Add the following lines to your AUTOEXEC.BAT file: + +**==> picture [50 x 121] intentionally omitted <==** + +**----- Start of picture text -----**
+.
_ | ©
|
**----- End of picture text -----**
+ + +- set RDBRC=E:\JAGUAR\BIN\RDB.RC set DBPATH=E: \JAGUAR\BIN + +- set ALNPATH=E: \JAGUAR\BIN + +set MACPATH=E:\JAGUAR\ INCLUDE? , set GCC_EXEC_PREFIX=E : /JAGUAR/BIN setset TEMP=C:PATH=%PATH$;E: \JAGUAR\BIN You should change "E:\" in the paths above to the drive and directory where the JAGUAR directory is located (this is the path from step #1 of the installation). Having these environment variables set correctly is critical if you want the tools and examples to work properly. You may already have a TEMP environment variable specified in your AUTOEXEC.BAT file. If so, change it so that it specifies just a drive letter and colon, as shown above. The GNU GCCC compiler may not work properly if your TEMP environment variable ends in a backslash. After you have made the changes to your AUTOEXEC.BAT file and saved it back to your hard disk, reboot the machine so they will take effect. For more detailed information about how these - environment variables are used, please refer to the documentation for the individual tools. + +The RDBPC and DBPATH variables are used by the debugger. The ALNPATH variable is used by the linker. The MACPATH variable is used by the Madmac assembler. The GCC_EXEC_PREFIX variable is used by the GCC C compiler. Note that GCC_EXEC_PREFIX uses a forward slash (“/”) as a path separator instead of a backslash (“\”). Most of the tools also use the PATH and TEMP variables. + +, + +1 As of Sept. 26, 1994, the standard system include files have been revised and are now located in the ; JAGUAR\INCLUDE directory instead of JAGUAR\INC. Some older source code may still require the oider versions of the include files, but this should not be a problem with any of the current examples in the developer’s kit. © 1995 Atari Corporation Confidential Information &; Property ofAtari Corporation 10 April, 1995 + +Page 6 + +Getting Started + +## RunningVourFirstProgram + +After you have installed the Jaguar Development Kit tools and source code, and configured your environment variables, you are ready to compile and run your first program on the Jaguar. Most of the Jaguar developer tools are designed to be invoked from the MSDOS command prompt. If you are running under Microsoft Windows, you should either exit to DOS or else run the MSDOS command prompt. If you are running under a different operating system, you should do whatever is required to run MSDOS programs?. + +- 1) Change to the JAGUAR\SOURCEVAGMAND directory?. This directory contains the source code to a Jaguar Mandlebrot fractal program that uses the Jaguar's GPU to calculate a picture of the Mandlebrot set using fast integer arithmetic. + +- 2) Type "MAKE" at the DOS command prompt. This will invoke the "MAKE" utility to build the JAGMAND program from the source code. On a DX2/66 machine, this typically takes between 10 and 30 seconds depending on hard disk and/or network access speed. + +- 3) When MAKE is finished, you should have an executable program named JAGMAND.COF. To run it on the Jaguar, we will run the debugger and tell it to load the program into the Alpine board. + +Before proceeding, let's make sure your PC and Jaguar are properly connected. Your PC should ( have an 8-bit bidirectional parallel port. (In the event that your PC does not already have such a port, you should install the card supplied with your Jaguar Development system. Please see the documentation included with the card.) The Jaguar Alpine board should be plugged into your PC's parallel port using the supplied parallel cable, and the Alpine board itself should be firmly plugged into the cartridge slot of the Jaguar. Make sure that the toggle switch on the top of the Alpine board is switched to "Write Enable". If you have not done so already, turn on the Jaguar. You should see a message similar to: JAGUAR ® Development System © 1993 Atari Corp. 31 Oct '93 on the monitor or television that the Jaguar Jaguar is connected to. Note that the date shown on your screen and other minor details may be different and other minor details may be different other minor details may be different minor details may be different details may be different may be different be different different (particularily if you have you have have a CD-ROM CD-ROM development system). If you do not you do not do not not see this message, message, you should verify should verify verify that everything everything is pluggedSupport in correctly.assistance.If you you If you you still cannot. get this message message to appear, then contact Atari contact Atari Atari Developer Support forin correctly.assistance.If you you assistance.If you you . 2 Compatibility has been tested with Windows v3.1, Windows For Workgroups v3.11, and to a lesser degree with Windows NT and the “final beta” version of Windows 95. Any compatibility problems with these systems are likely to be related to your specific system setup. However, if you report your problems to Atari, they will be investigated. | Compatibility with other operating systems such as OS/2 has not been tested. 3 This was in the JAGUAR\EXAMPLES\VJAGMAND directory in older versions of the standard distribution. If you are. using this directory, you should check online for the latest updates to the distribution archives, or else contact Atari Developer Support. 18 April, 1995 Confidential Information FO™® Property ofAtari Corporation © 1995 Atari Corp. + +on the monitor or television that the Jaguar Jaguar is connected to. Note that the date shown on your i. screen and other minor details may be different and other minor details may be different other minor details may be different minor details may be different details may be different may be different be different different (particularily if you have you have have a CD-ROM CD-ROM a development system). If you do not you do not do not not see this message, message, you should verify should verify verify that everything everything is “: . pluggedSupport forin correctly.assistance.If you you still cannot. get this message message to appear, then contact Atari contact Atari Atari Developer + +U © 4) Enter the command "RDBJAG JAGMAND.COF" at the command prompt. This will load the i Jaguar debugger and tell it to load the JAGMAND.COF program. You should see something that looks approximately like this: + +\ + +- | rd + +**==> picture [1 x 14] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +Jaguar Debugger v1.00 PC - May 27 1994 (C)1993 Atari Corporation. PC version by Brainstorm. Bidirectional parallel port used: LPTl JAGUAR stub (31-Oct-'93) ready & running in ROMULATOR, (NTSC) COFF program jagmand.cof loaded: start size end text 802000 440 802440 data 802440 200 802640 Loaded 304 symbols from COFF program jagmand.cof. PC: 00802000 SSP: 00000DD2 USP: FFFF7DF7 SR: 2100 SU IPL=1 XC PL NZ VC CC D 80150014 O080F000 0000000B OOOOFFFF FFF70050 FBFF7FFF FFFFFFFF FFFF7FFF A 0080198A OO8006EA O0000E46 OOOOIFFA OO0F14000 008015F8 OOFO0000 00000DD2 00802000> move.1l #$70007,$F0210C G_END At \JAGUAR\EXAMPLES\ JAGMAND\JAGMAND . S: 32: Db:32> move.1 #$00070007,GEND + +If you don't see something essentially like this message, then something may be wrong with your installation, your parallel card may not be recognized as 8-bit bidirectional by RDBJAG, the parallel cable running from your PC's parallel port to the Alpine board isn't plugged in correctly, or there may be something wrong with your Alpine board and/or Jaguar. (Note again that the version numbers and dates may be different on your system.) + +5) Assuming that things worked as expected in step #4, then type "G" and hit to run the program. The Jaguar should draw an overall view of the Mandlebrot set fractal screen in roughly 8 seconds. + +Please note that while the Mandlebrot demo is reasonably speedy, it is not fully optimized and could be made to run even faster. Greater speed could be accomplished by having more work done internally by the GPU, and less by the 68000, and you could also speed things up by having the DSP do some of the calculations. Through these methods, you could probably gain at least a 100% speed increase. + +Most of the other sample programs supplied with the Jaguar Development System are set up to be compiled and executed in more or less the same way as the JAGMAND demo. Simply move to the directory containing the demo you want, type “MAKE”, and then run the debugger to load the executable into the Jaguar. Note that depending on your system setup, it may be necessary to make slight changes to the MAKEFILE for each demo in order to get things to compile correctly on your . system. The Sample Source Code section has more specific information on the various sample _ © programs and how they work. + +a ©1995 Atari Corporation Confidential Information & Property ofAtari Corporation 10 April, 1995 + +Getting Started + +i { 4q } ‘ + +| | + +\ + +## Page 8 _ HowTo Run a Cartridge ina Development System + +1. With the Jaguar console turned off, plug in the cartridge in place of the Alpine board. + +2. Connect a 1k Ohm resistor between pins 4-5 in the STOP cable that normally plugs into the back of the Alpine board. Otherwise the console will not run or might mess up the sound. (Note: Pin 1 on the header of the cable is marked with a small triangle and normally the line leading to pin 1 of the cable is colored.) Below is a diagram of the header on the Alpine-end of the cable. + +**==> picture [108 x 23] intentionally omitted <==** + +**----- Start of picture text -----**
+|BORED
**----- End of picture text -----**
+ + +3. Hold down the ‘B’ button of joypad #1 and turn on the console's power. Release the ‘B’ button when you see the Jaguar logo. + +4. From this point operation is identical to a standard retail console. Hit the 'B' button again to leave the Jaguar logo screen and begin the game. + +Note: Ifyou are trying to run a game loaded onto a Flash ROM cartridge then you should press the ‘C’ button instead of ‘B’ in steps 3 and 4. Note that your development console must have a + +ROM dated November 1994 or later in order to use Flash ROM cartridges. + +If you have a Jaguar CD-ROM development system with a boot ROM installed, you may play standard Jaguar CD-ROM titles. Follow steps 1-4 as shown above, except press button ‘C’ instead of button “B’. If there is a Jaguar CD-ROMin the drive, it will be executed. If there is an audio CD inthe drive, then the built-in Virtual Light Machine program will be started. + +Ifyou cannot get the Virtual Light Machine program to come up on screen, your Jaguar CD-ROM unit may not be equipped with the proper boot ROM. Note also that your development console must havea ROM dated November 1994 or later in order to boot from the Jaguar CD-ROM. Contact Atari Developer Support regarding ROM upgrades. + +5 June, 1995 + +Confidential Information FER Property ofAtari Corporation + +© 1995 Atari Corp. + diff --git a/docs/atari-jaguar-1999/02 - Technical Overview.md b/docs/atari-jaguar-1999/02 - Technical Overview.md new file mode 100644 index 00000000..da42d222 --- /dev/null +++ b/docs/atari-jaguar-1999/02 - Technical Overview.md @@ -0,0 +1,450 @@ +Technical Overview Page I eS of Jaguar Hardware & Architecture + +S\@Gverview + +P + +If you are new to the Jaguar, we recommend that you look at the first few pages of the Jaguar Software Reference Manual section for a basic overview of the Jaguar hardware and system architecture. After you've taken a look at that, come back to this section for an overview of the developer's kit and some | more specific information about certain aspects of the system. + +## i + +eT © 1995 Atari Corp. Confidential Information “FPR Property ofAtari Corporation 10 April, 1995 + +| | | : + +| | + +## ‘Page 2 Technical Overview «“‘FhedaguarDevelopmentSystem What follows is a brief description of the tools in the Jaguar Development system. Detailed instructions | and explanations are found in specific documentation for each item. + +The Jaguar Development system consists of a set of hardware and software components intended to make writing software for Jaguar the most efficient and rewarding experience it can be. This goal can only be approached, never reached. Asa result, all of the components of this system will be enhanced as time goes by; some will be deleted, and others will be added in the future. It is essential to the success of this effort that we hear your comments on how this system can improve (keep those cards and letters coming!!). + +The hardware components of the system are a development Jaguar machine that connects to your existing PC/MSDOS computer with 80386 or better CPU!. The development system comes with an I/O card for your PC that features an 8-bit bidirectional parallel port. This is used to interface with the Alpine board that plugs into the Jaguar development console. If your PC already has an 8-bit bidirectional parallel port, you can probably use it instead of the card we supply. However, please note that most inexpensive I/O cards do not have such ports. + +The Jaguar development console is a modified version of the standard Jaguar retail machine. It comes with an ROMulator that holds your programs and emulates a ROM cartridge (aka "the Alpine board"), and other optional components (documentation is included with those components). + +The software components are many. In the Jaguar development machine, there is a debugging stub in ROM which communicates with the host computer via the Alpine Board interface card. It is designed to take a minimum amount of system resources. The software under development need not depend on the stub for ANY services, yet the debugging environment is quite complete and powerful. + +The main tools are: the Atari debugger DB; Sottware development tools such as the MADMAC Macro | Assembler, ALN Linker, and GNU GCC compiler. There are also Jaguar specific debugging aids, , of the extensive sample code and library code. Together these provide a set of tools that allow full use capabilites of the Jaguar system (see A Sample Debugging Session). Most of the tools are commandline-oriented; you pass them a commandline, they do what they're told, !s. exceptionand then.they to this quit. ruleInis most the Atari cases, debugger you don't “Db”. actuallyDb interactis a full withfeatured them symbolic debugger while they are running. with aliasesThe ° #4 and procedures that has been in use in the Atari computer development environment for many years. It has been updated and enhanced with numerous new features and special debugging aliases and _ procedures for the Jaguar development system. There are two variations; RDBJAG (Remote DB for Jaguar) features a simple terminal style interface, while WDB (Windowed DB) features a semi-graphic user interface using the mouse, windows, and pull-down menus. + +> _ 1 Instead of a PC system, any Atari TOS computer can also be used for development. The choice of TOS computer depends on the uses that the machine will need to perform beyond simply running the development system software. For best performance and greatest flexibility in a pure debugging environment, an TT030 system with the TTM195 19" monochrome monitor is recommended. 10 April, 1995 Confidential Information FER Property ofAtari Corporation © 1995 1995 Atari Corp. + +© 1995 1995 Atari Corp. | + +| | + +L + +| q | j | | | 1 : | | + +Technical Overview — Page 3 | ob:[e][ Object][ processor][ in][ Jaguar][ is][ an][ unfamiliar][ mechanism][to][ most][ programmers][ and][ this][ can be][a][bit] of a hurdle when starting to program the system. To overcome this problem, we provide a heavily documented routine which is used by several of the sample programs included with the developer's kit. Please see the examples in the JAGUAR\WORKSHOP directory after you have installed your developer’s kit disks. A very useful tool for the Object processor programmer is OD, a script procedure for the DB debugger that translates an object list into English and will warn about common mistakes. + +The Jaguar GPU is a high performance custom RISC processor that was optimized to give maximum performance when programmed in assembly language in graphics applications. The instruction set is general purpose with specific instructions added to do matrix multiplication and simple floating point math. Db has a GPU disassembler and register dump as well as a GPU single step facility for GPU debugging (See Debugging the GPU). The GPU should not be a difficult system facility to master since its instruction set was designed with the programmer in mind. The DSP is very similiar to the GPU in both design and instuction set, the main difference being some extra instructions for sound processing. The MADMAC macro assembler provided in the developer's kit is capable of generating code for the - GPU and DSP as well as the 68000. Older versions of the developer’s kit also provided the GASM macro assembler for GPU/DSP, but this has been made obsolete by newer versions of MADMAC.. _,[The][ ALN][ linker][ is][ used][ to][ link][ your][ object][ modules][ and][ libraries][ compiled][ or][ assembled][ from][ different] | .) source code files and create an executable file ready to be run on your Jaguar. + +There is also a set of programmer utilities included in the system. These include a MAKE utility, a file hex DUMP utility, a version of GREP (the UNIX search utility), and a variety of object module & executable file information utilities. These are documented individually in the Tools section. + +A text editor is not provided with the system because we expect that you will probably already have an editor that you are familiar with and would be unlikely to want to switch. However, if you do need an editor, you may wish to investigate the following fine editors to see which will best suit your needs: + +|MSDOS-basedProgrammer'sEditors
Brief-BorlandInternational
MultiEdit -American Cybernetics
MicroEMACSv3.12 -Shareware (Available
onlineonCompuserve&othersystems)|TMicrosoftWindows-basedProgrammer'sEditors
Visual SlickEdit -MicroEdgeSoftware
| CodeWright -PremiaCorporation
|MicroEMACSforWindowsv3.12 -Shareware
(Available onlineonCompuserve&other
isystems)| +|---|---| + + + +The choice of an editor is often a very personal one and nothing in the Jaguar Development System insists on the use of any particular one. The list above is simply a sampling of those used by programmers at Atari, and there are undoubtedly other fine editors not listed here. + +©1995 Atari Corp. Confidential Information FER Property ofAtari Corporation 10 April, 1995 q + +| . t E | ’ : F : | 7 | + +| + +Page 4 Technical Overview _ _A&SampleDebuggingSession “ To help you become acquainted with the debugging environment, we will load in a program that uses : both the 68000 and the GPU and take a look around. The program that we will use is JAGMAND, a : very simple Mandelbrot set generator. This is the same program that we used in the Getting Started section to verify that the system was working correctly, so we already have built the executable. Change to the \JAGUAR\SOURCE\JAGMAND directory and start the debugger from the shell by ~ typing "rdbjag" (pressing return is implicit here, this instruction will not be repeated). + +: : | 5 ' i + +We won't go into details about how the sample program itself works, as this is explained elsewhere. + +First we load the program into memory in the Alpine board. The debugger uses the first part of system memory for variables, stack, and added GPU specific code. Therefore, all RAM below $4000 is reserved. All cartridge-based Jaguar programs must start at $802000. + +To load in the program we type "aread jagmand. cof". This loads the sample program into memory at the locations specified by the executable (as specified by the commands given to the linker). A map of the memory space used is also displayed. An alternative to the AREAD command is the LOAD command, which loads and executes a script file which can in turn Joad binary data into the Jaguar’s memory by using the READ or FREAD commands. + +At this time we can look at our program by typing "1 802000". This will disassemble (or list) the 68000 code starting at address $802000. (Note that the debugger uses hexidecimal notation by default.) If you first set the program counter using the command ""xpc 802000", you can trace one instruction at a time using the "t" command, or execute a subroutine with the "tw" command. Try this for the first few instructions and subroutines. + +At this point, let's set a breakpoint at the label “start”. This is done by typing "b -_ start". Before the breakpoint is reached, the program’s startup code has been executed. This startup code initializes the Jaguar hardware correctly, sets up an object list, and displays a simple startup screen. i Type "g 802000" to begin execution at the start of the program (or, if you traced some of the program ‘ already you can just type "g") and run until the breakpoint is reached. When the breakpoint is reached 1 the internal state of the 68000 is displayed and the debugger waits for another command. At this point the memory starting at the listbuf \abel contains the object list created by the startup code for the startup picture. Type "od .listbuf" to see a display of the object list that is being used. It should be noted that object lists should be viewed before video processing is started because the object processor changes values in the objects during processing. These are restored each frame by interrupt software, but looking at an active object list with "od" will not give correct data for the data pointer or the object height fields. + +**==> picture [2 x 3] intentionally omitted <==** + +**----- Start of picture text -----**
+;
**----- End of picture text -----**
+ + +Type “g ,.Mand1le” to skip past the 68000 code that copies the GPU code to GPU RAM. This will take a few seconds, because the program hasa short delay so that the startup screen may be seen. Note that the debugger will print the message "Press Control-C to stop waiting" on screen. a + +| + +**==> picture [1 x 17] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +18 April, 1995 + +Confidential Information “FPR Property ofAtari Corporation + +©1995 Atari Corp. + +Page 5 + +Technical Overview + +*e, Ors is because the Jaguar system did not respond quickly to the "g" command and return control to the “| ~~ debugger. + +| 1 | t + +; ‘ B; ii AA za .. | ' + +Now let’s look at some code in the GPU. To do this type "1g £03000". The address used here is the location of the start of GPU RAM. To see the values in the GPU registers type "xg". At this point the GPU may be single-stepped by setting the GPU program counter by typing "setgpc £03000" and then typing "tg" a number of times. Although nothing terribly interesting is likely to be learned, let's give it a try. + +Next we run our program by typing "g". There are a few interesting things to note at this stage. First, the Mandelbrot computation is REALLY quick (despite this, there is AT LEAST[a][factor][of][ two][ times] more performance that can be squeezed out of the system). Second, the debugger again printed the message "Press Control-C to stop wa iting". However, once the program completed one pass over the Mandelbrot set it is stopped in a rather brute force, but effective, way. It executed an illegal instruction. This got the debugger's attention and control is returned to the debugger. Despite this, there is an interrupt happening once a frame stil] running to fix up the object list. + +To leave the debugger type "q". This will sever the communications at the computer side but leave the development system ready for more commands. Type "rdb7jag" and the stub should "check out ok". a ) Ifpress for some the reset reason button the stub on the and debugger Alpine Board. fail This to communicate, will get the attention type the of “wait” the debugger command whenever in Db andit is "Waiting..." . + +**==> picture [29 x 21] intentionally omitted <==** + +**----- Start of picture text -----**

**----- End of picture text -----**
+ + +© 1995 Atari Corp. + +Confidential Information “PO® Property ofAtari Corporation + +18 April, 1995 | + +Page 6 + +Technical Overview + +## ASimpleSampleProgram + +We have looked at the JAGMAND sample program twice now. Aside from drawing the Mandelbrot set fractal, this program also points out many of the features and characteristics of both the Jaguar and the developmentthe blitter to clearsystem.the screen.While it is in many ways very simple, note that the JAGMAND. program does use + +There are a number of very mundane things that must be considered when writing a Jaguar program. In no particular order these include: + +- 1) Where in memory will the various segments be? + +The debugger in the development system takes up the lower 16K of memory. Programs should therefore use no RAM lower than $4000. The rest of RAM is yours to do with as you please. The ROMulator should be used to hold the program's text and data segments. The first part of ROMulator memory is also reserved, this time for the security code. Cartridge-based programs must always start at $802000. + +## 2) Where is the 68000 stack? + +Keeping in mind the restrictions mentioned above, you can put the stack anywhere in RAM above $4000 you want. Probably the best place is at address $1FFFFC. This is 1 long word away from the end of RAM. + +- 3) How do you set up video, clear interrupts, and initialize memory at startup time? + +We supply a standardized startup routine that initializes the entire system and then jumps to your program code. This is contained in the JAGUAR\STARTUP directory. The JAGMAND program includes the STARTUPS file, containing this startup code. + +## 4) Setting up an object list. + +The choice of object list structure is quite complex and depends greatly on what your goals are. Since there is no good general solution we give a VERY simple one here. A single full screen object. This uses an unscaled bit mapped object. The object is the height of the screen. + +## 5) Putting stuff in the object to be displayed. + +The JAGMAND program draws a Mandelbrot fractal into the bitmap displayed by the object. Of course, your program is going to draw whatever is appropriate for it. + +**==> picture [1 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+'
**----- End of picture text -----**
+ + +18 April, 1995 + +Confidential Information FR Property ofAtari Corporation + +© 1995 Atari Corp. + +## Technical Overview + +Page 7 + +## We JaguarandMemory + +This document describes the memory map of the Jaguar (Tom and Jerry) development system. + +Main system RAM in Jaguar in 64 bits wide. It consists of a singie 2-megabyte bank starting at memory j location $00000000. The rest of the system memory map consists of hardware registers. These registers include the internal high speed SRAM for holding GPU and DSP programs and data. This starts at $00F00000. . + +The GPU, DSP and blitter internal registers are 32 bits wide and MUST be read and written as such. When accessing these memory locations with the 68000 CPU they must be read and written as 32 bit entities. This is especially important with regard to GPU and DSP internal SRAM. Transfers to (and from) this memory, to pass parameters between CPU and GPU for example, must be made at long word boundaries. Please note, to clear a long in internal GPU/DSP RAM space use the move instruction, because the clr.] instruction will not be reliable. (Please see the Hardware Bugs & Warnings section for further information about this subject.) + +The last kind of memory in the development system is the ROMulator, described later in this section. + +| | j + +| + +C—O eee eeeeeSEB.— O00 , ©1995 Atari Corp. Confidential Information “FER Property ofAtari Corporation + +1 18 April, 1995 q + +Page 8 + +Technical Overview + +_ " + +## AheJaguarBliter ####=#= ##§+.==+—=s— ww + +The Jaguar Blitter is a very powerful piece of the Jaguar graphics system. This document will introduce the major functional parts and show some of the many ways in which they can work together. + +The programming model of the blitter consists of: + +1) Two address generators. 2) A Logical Function Unit. 3) A Pattern Data register. 4) A Gouraud Shading unit. 5) A Z-buffer unit. 6) A Collision detection system. . + +The two address generators are easy to use because they work in pixel units, not address units. This greatly simplifies the coding tasks for blitter use. + +The basic concept used in both address generators is the "window". A window is a rectangle of memory whose width is taken from the list of allowed widths (see BLIT.INC for the allowed widths). The maximum allowed height of a window is 4096. If no outer loop is used, the window width is not relevant and the maximum sized blit allowed is 32767 pixels. + +There are two address generators Al and A2. ; + +Al has the ability to traverse its window in tractional steps with complete independence in x and y. The inner and outer loops are controlled independently and the outer loop increment may also contain independent, fractional x and y values. These features combine to allow arbitrary rotation, skewing and scaling of rectangular areas. + +A2's special ability allows it to repeat a source pattern over a larger destination by masking the pixel offsets. The masks can be any power of two size up to 215. + +The Logical Function Unit takes the source and destination and produces an output based on the logical or'ing of the four possible minterms. Four of these combinations are of particular use: + +Destination <= Source Destination <= (Source) | (Destination) Destination <= (Source) & (Destination) Destination <= (Source) “ (Destination) + +A complete listing of these is given in the system include file BLIT.INC. + +The Pattern Data register is where the blitter gets its data without the need for reading source data. This is used, for example, in drawing lines. + +i—, + +10 April, 1995 Confidential Information FR Property ofAtari Corporation + +© 1995 Atari Corp. + +| | , | | | | | : + +| j 1 { : | | : : : + +uid + +1 Technical Overview Page 9 The Gouraud Shading Unit is one of the most powerful features of the Blitter. It allows the automatic P shading of CRY pixels. (See the description of the CRY color model in the Jaguar Software Reference Manual for more information). The Gouraud shader uses the Pattern Data register as the source with | the added capability of adding a constant (fractional) intensity to each pixel. This allows the generation of a smoothly shaded line with no explicit computations done at the pixel level. + +| ‘In the same way that shading is handled in hardware, a line produced by the blitter can also have az value automatically provided for each pixel and the blitter can be instructed to suppress writing of pixels with z values that correspond to 3d point that should not be visible. + +Note: Gouraud shading and Z mode are only available with 16 bit pixels. + +Another important concept to understand in the Jaguar blitter is phrase mode. The inner loop increment -used by the blitter is controlled by the first few bits of the FLAGS register for each address generator. These modes are fairly self explanatory, except for phrase mode. + +In phrase mode the blitter reads and writes 64 bits of data at a time. The blitter handles all fringe cases and data alignment automatically in 8 and 16 bit per pixel. For smaller numbers of bits per pixel, pixel mode should be used. Note: BOTH address generators must be in phrase mode. It cannot be half set. There are two extra complexities when dealing with phrase mode. It is possible that the first data write | ; @ requires an extra phrase read. This happens whenever the data for the first write is not contained in the first data read. Consider for example a 16 bit per pixel blit: + +(The vertical bars are 64 bit phrase boundaries) + +Source: | abcd| | Destination: ABCD + +The blitter needs two source reads to get all of the data for the first data write. This extra read is caused . by setting the SourCe ENable eXtra (SCRENX) bit in the B_CMD register. Other situations also require this bit to be set. For example: + +**==> picture [86 x 81] intentionally omitted <==** + +**----- Start of picture text -----**
+Source:1 ft |
abcd
Destination:
ABCD
**----- End of picture text -----**
+ + +The other extra complication involves the STEP value used in the outer loop. Since the blitter always advances to the end of a phrase the STEP size is not always the width of the blit. An example should make the general principles clear: © 1995 Atari Corp. Confidential Information FER. Property ofAtari Corporation 10 April, 1995 + +**==> picture [2 x 25] intentionally omitted <==** + +**----- Start of picture text -----**
+1
**----- End of picture text -----**
+ + +10 April, 1995 + +Page 10 eee + +Technical Overview + +, + +**==> picture [258 x 82] intentionally omitted <==** + +**----- Start of picture text -----**
+Source:
bo ft J |
abcdefgh
Destination: ;
ABCDEFGH
**----- End of picture text -----**
+ + +**==> picture [6 x 24] intentionally omitted <==** + +**----- Start of picture text -----**
+(
**----- End of picture text -----**
+ + +In both cases the STEP goes from the end of the third phrase to the beginning of the data. In this case this gives a STEP of -10 for the source and -9 for the destination. + +Also remember that if SCRENX is set an extra phrase worth must be subtracted from the source STEP value. + +Phrase mode also has an effect on Gouraud shading. Since the blitter writes four pixels at once all four pixels must be placed in the Pattern data register and the value of the intensity increment must be multiplied by four. This means the maximum intensity increment that will work in phrase mode is 31. + +Since the intensity addition saturates and the increment is signed there are a few cases that will fail. These all share the following characteristic: The first pixel to plot is not on.a phrase boundary and the extrapolated value for the first pixel falls outside of the allowed values. Software authors need to beware of this condition. It should either be rigidly excluded or a switch to pixel mode is needed. + +10 April, 1995 + +Confidential Information “AOR Property ofAtari Corporation + +© 1995 Atari Corp. + +Page 1] + +## Technical Overview + +SO ie Jaguar Development System Stubulator & ROMulator The Stubulator is what we call the version of the Jaguar console that is used as part of a Jaguar Development System. Also known as a Jaguar Test Station, it is essentially a standard Jaguar console which has been modified to use a special debugging version of the boot ROM, and which has an extra cable attached which connects to the ROMulator board to handle the stop button interrupt. + +**==> picture [536 x 305] intentionally omitted <==** + +**----- Start of picture text -----**
+Reset Button on:
Stop Button \ Write Disable/Enable
TO | Ett
TITTT || Bee
atte
5 —— B BERR
O ry OO00o
\ Cartridge Port
LED Connector
i Figure 1, The ROMulator Board (front)
The ROMulator, also known as the Alpine Board, serves two purposes. First, it allows the Jaguar
console to communicate with your computer via a parallel port or seria! connections. Second, it
contains 2 or 4 megabytes of battery backed-up static RAM? which is used to emulate a ROM cartridge.
Hereafter, we will refer to the RAM memory on the ROMulator as ROM in order to distinguish between
| it and the RAM inside the Jaguar console. i
**----- End of picture text -----**
+ + +**==> picture [259 x 44] intentionally omitted <==** + +**----- Start of picture text -----**
+)
Stop Cable Connector Pin 1
a
**----- End of picture text -----**
+ + +6 Figure 2, The ROMulator Board (back) 2 The standard Alpine board shipped with the Jaguar Developer System contains two megabytes of static RAM. However, four megabyte (32 megabits) Alpine boards are also available upon special request. Contact Jaguar Developer Support if your project requires more than two megabytes (16 megabits) of ROM space. + +| | | | : | | ] | 1 | ' q + +j | ' 1 j | + +Page 12 + +Technical Overview + +## The Alpine board has a variety of components you should become familar with, as highlighted in figure #1 and figure #2. The table below briefly describes each one. + +**==> picture [506 x 657] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +|Component|Description| +|Stop|Button|When|pressed,|this|button|generates|a|non-maskable|68000|interrupt|in the| +|Stubulator.|The|debugger|stub|handles|this|interrupt|and|stops|the|current| +|process,|and|then|passes|control|to the|debugger.|If a|program|is|severely| +|crashed,|the|68000|has|been|disabled,|or a|program|has|aitered|the|interrupt| +|vector,|then the|stop|button|may|have|no|effect.|This|is|rare,|but|it|does| +|happen|occasionally.| +|Reset|Button|This|button|generates|a|hardware|reset|of|both|the|Jaguar|console|and|the| +|Alpine|board.|The|current|program|is|halted,|and|one|or more|of the|following| +|[are]|[taken:]| +|}|[actions]| +|||1)|The debugger stub initializes|itself to use memory|in the $800000 to| +|$801FFF|range|of the|Alpine|board.|If the Alpine|board|is|write|protected,| +|or|if|a ROM|cartridge|is|plugged|in,|then|it|proceeds|to|action|#2.| +|2)|The|debugger|stub|initializes|itself to|use|memory|in|low DRAM|(below| +|$4000)|in|the|console.|Then|it|proceeds|to|action|#3,|#4,|or|#5.| +|3)|The|cartridge|port|is|checked|for a|32-bit|cartridge.|If found,|then|the|.| +|68000|starts|executing|code|at|$802000.|If|not,|it|proceeds|to|action|#5.| +|4)|The|cartridge|port|is|checked|for|an|8-bit|cartridge.|If found,|thenthe|—| +|68000|starts|executing|code|at|$802000.|If|not,|it|proceeds|to|action|#5.| +|5)|The|debugger|stub|displays|the|“Jaguar|Development|System”|screen|and| +|running|on|your|computer.| +|||attempts to communicate via the Alpine board with the debugger interface| +|I||The|exact|combination|of|actions|depends|on|which|buttons|of joypad #0|are| +|pressed|when the|reset|button|is|pushed.|If|no|buttons|are|pressed,|then| +|actions|#1,|#2,|and|#5|are|taken.|If the|‘B’|button|is|held|down,|then|actions| +|#3|and|#5|are|taken.|!f|the|‘C’|button|is|held|down,|then|actions|#4|and|#5| +|are|taken.| +|Neither|console|RAM|or Alpine|board|SRAM|is|cleared|by|this|reset.| +|However,|interrupts|are|cleared.| +|Write|Enable|/ Disable|Switch|||This|switch|allows|you to|control|if the|RAM|on the Alpine|board|may|be| +|written|to.|If|this|is|set|to|“Write|Disable”,|then|the write|lines|of the|memory| +|chips|are|physically|disconnected|so|that the|memory|contents|cannot|be| +|altered.| +|PateyBattery|.|Thispoweris isused turnedto|offmaintain or|whenthe thecontents Alpineof board the|staticis notRAM pluggedwhenin.the|console| +|RPLED|Thispluggedis|litin, when and the consolethe|Write-Disableis turnedswitch on.is|set,|and|the|Alpine|board|is| +|eeeSerial|/|MID!NeseConnector|||ThisAineis ibthe|connectionaaapten nnnused for|either a|serial|link to your|hostencomcomputer|oror the| +|eeeParallel|Port|Connector||mRThisGrestonais|the|connectionparaieiponused|to communicate|with|your|host|computer's|bi-| +|erStop|Cablecene femeserConnector|[connectsThis|is where tothe the hnstop|cabletard,coming morroout|of th a|developerStop|hatonto Jaguarbe console furconak| +|18 April, 1995|Confidential Information|FPR|Property ofAtari Corporation|© 1995 1995|Atari Corp. Corp.| + +**----- End of picture text -----**
+ + +© 1995 1995 Atari Corp. Corp. + +Page 13 13 | The | and | coming || that . + +Technical Overview Page 13 13 The Alpine board plugs into the Jaguar console in the same manner as a standard Jaguar cartridge. The front of the Alpine board, as shown above, faces the front of the console (where the power switch and controller connectors are located). A Jaguar Test Station should also have a 10-pin ribbon cable coming | gut of the back. This is the stop cable which connects to the back of the Alpine board. Make sure that the red-striped wire of the ribbon cable always goes to pin 1 connector on the Alpine. + +Newer releases of the Alpine board come with a 32MHz crystal, and a header fitted in space J4. (J4 is marked as the Serial / MIDI connector in figure 1.) Only those Alpines with those components can be used with the MIDI add-on board. If your Alpine is an older mode] and you need to use the Jaguar MIDI board, contact Atari Developer Support for modification instructions or to arrange an exchange. + +The ROMulator memory starts at $800000, the same address space used by a cartridge, and is treated by the system as 32-bits wide. In order to emulate a ROM cartridge, the ROMulator memory may be write protected. This is accomplished using the WRITE DISABLE/ENABLE switch at the top of the board. The ROMulator is write protected when the LED in the bottom left corner is ON. Just as with a real cartridge, all static code and data must start in ROM and get copied to the console's **a** , RAM by the program as needed. No writes to ROM space should be done by game code. This may be tested by the following steps: | 1) Load a program into the ROMuiator using the debugger. 2) Turn the switch to WRITE DISABLE. + +| | | | 1 | | | + +3) Turn the machine off for a few seconds, then on again. + +| + +4) Run the program and make sure it functions normally. + +oe,,,rrr~—‘“C i;i*™wstsis—~—~—~—C—~—C—CrC The debugger stub also uses a section of the ROMulator space. To leave room for the security code that will be in each cartridge, the first $2000 of the ROMulator (from $800000 to $801 FFF) is NOT to be used by your programs. The restriction on the use of the first 16K of RAM ($0000 to $3FFF) is also still in effect. + +The debugging stub normally tries to use memory in the ROMulator, but it can optionally use DRAM if | necessary. The sign-on message shown by the debugger indicates how the stub is using memory. There Cc) are two possible reasons for the stub to not use the ROMulator: | 1) The ROMulator is not present or damaged in some way. | 2) The ROMulator is write-protected AND the stub is NOT ALREADY loaded. | © 1995 Atari Corp. Confidential Information “FER Property ofAtari Corporation 18 April, 1995 April, 1995 1995 + +| ' | + +18 April, 1995 April, 1995 1995 ‘ + +Page 14 + +Technical Overview + +mi) + +This allows the system to be reset with a write protected ROMulator and still work. If the stub reports that it is running from DRAM, the ROMulator data has probably been disturbed. + +To force the stub to use DRAM, you can hold down the ‘A’ button of controller #1 while turning on the Jaguar's power or pressing the ROMulator reset button. Normally, however, this should not be necessary. + +wibtAddOnBeardee The MIDI Add-On board is a special add-on board that connects to the serial port of an Alpine board and allows you to feed MIDI data to a special version of the Jaguar Synthesizer. This effectively turns the Jaguar into a stand-alone synthesizer which can be controlled by an external keyboard, sequencer, or by a computer equipped with a MIDI port and MIDI software. This allows you to preview your music on the Jaguar itself. + +| + +**==> picture [155 x 164] intentionally omitted <==** + +**----- Start of picture text -----**
+MID! Connectors
In Out Thru
|
| Pin 1
Connector JP4
**----- End of picture text -----**
+ + +| Figure 3, Jaguar MIDI development board _ \ To connect the Jaguar MIDI board, simply connect one end of the supplied 10-pin ribbon cable to a connector JP4 on the MIDI board and connect the other end to the Serial port / MIDI connector of the 4 Alpine board. Make sure that the red-striped wire of the ribbon cable goes to pin 1 at both ends. Once the Jaguar MIDI board is connected, it can be used with the Jaguar Sound Tool (the patch editor for the Jaguar Synthesizer). See the documentation for the Sound Tool for further information. + +| + +10 April, 1995 + +Confidential Information FAR Property ofAtari Corporation + +© 1995 Atari Corp. + +——_ + +Page 15 + +Technical Overview + +: : + +## 2 @jaguarControlierSuppot + +The Jaguar supports a variety of different controller types beyond the joypad that comes with every console. In order to insure that controllers are correctly supported, we urge developers to pay close attention to the Jaguar Controller & Controller Ports Specification section of the Technical Reference chapter. + +| + +© 1995 Atari Corp. + +Confidential Information “AAR Property of Atari Corporation + +10 April, 1995 + diff --git a/docs/atari-jaguar-1999/03 - Software Reference.md b/docs/atari-jaguar-1999/03 - Software Reference.md new file mode 100644 index 00000000..df582a05 --- /dev/null +++ b/docs/atari-jaguar-1999/03 - Software Reference.md @@ -0,0 +1,3182 @@ +Aw + +| + +Confidential Information Property of : Atari Corporation + +Jaguar Software Reference Manual - Version 2.4 + +Page i + +2 + +j + +**==> picture [583 x 668] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +|TableofContentsi| +|Introduction...|cece eeceeecseeseessensesseeasenseeecseeecsesescseseesseesesseeesesseecensageatessecesseeneed| +|What|is|Jaguar?|soscceccccccssscsssesseesceceeceeecsssunnsssesessssssnsssssusssesseeesseeceen|Se|e|eengiille D| +|How|is Jaguar used?|.......ccssssssssssssssscessssssseeesseeceesssesssssnssnsnniereeseregheibecef|e|cennennet| +|Jaguar|Video|and|Object|Processor ........cscecstscieeeeeeeeeeeeeeed| +|OVEIVICW|cossesesssscsssescecsssssseeeseccessssseeceessstseceessnnnmesseeesesseennmmeeieu|ee|ennanels|HEEHEEEBE| +|Object Processor|Performance|.......sssesscsseesscsssssetsccesssssneeessesneresenneeeentsdggibseesaeee|cices| +|Memory|comtroller|....ssesssscsssssssssecssssesecssnsccensnesseeceesnseeescensnncscesenneeesbonnsssl|liec|e|ses|ee| +|Microprocessor|Interface......ssssssssssessessneessteeeeseesseeeeadhdiliggeetteceesesensmenneeeee|e|er|ee| +|Memory Map|enecssssssesssssccscscssssssssnssescececcsonsvaeseseseesceseeseeeesigiitlMececcesssnnessceeeensessQe|Sobral| +|Peripheral|Memory|Map...sssessssscssscccssssssssssceeecceceeeeb|e|c|cccces|e|scecnseeeseeenssniis|15)HEEEHEE| +|Object|definitions|.........sccssessssssseecsssseeessescesseccsssseeeecsssnenfiilldicesnsSEEEEBES|ccsesseeess 16| +|Description|of Object Processor/Pixel path .....:ccccsessssciiivsseseseeeeeneseee|epeeenseees 21| +|Refresh|Mechanism|.........-cccsescsscesceeesscessssseesepanpgptensnssnsennsnsnnnnnmeneseseeceeeeersitiisiniiin,.«|24| +|||Colour Mapping...........seecceseeseeseep|BEES|aia|sec|cceeeces|e|eneseeeneesssesesee sft|o|e|e2D| +|/|Introduction|....cscessccsssesssseecssseececeececseseeedheb|bi|ccecccecennes|bi GbelDisepesecscsssevecseccnssnseeseesener|25||| +|The CRY Colour Scheme|......:sssscssssse|dbiieeccscsscssccceececeebbe|bite|sssesescseeesceecesesee s|e|s25|!| +|||Graphics|Processor|Subsystem ...........1:: 5g|ibneesssessecceceeseeesn|HEE|ibaecessseesesneseeneeeenene29||| +|7|?|Memory Map|sescnsnnansnnnnnnnnenensessssssssssenssansstsl|LLU|ape sscseseeeeeesesceeeeeeeesdligilpeecscseeeeseeeeee|30|1| +|YM|«Graphics|Processor........sscseccsszsaisihnegeeseesgigs|ecseseeesessearesbiibeessessese|ee|st|seens|e|enesGS||| +|||What|is|the Graphics|Procegs@r? 228g.|tlibyeeeeeseennaggbitetiescsseenenees3D| +|—|Programming|the Graphids:Processor(3228)...|EEE|BS|'| +|Design|Philosophy .........J28..cscssccssseGein|ya|eessesessesnosnsnmeescecssssssneeesssesees|34|'| +|Memory|Interface|...cceccccesce|ese cccseescen|EE seececcsssceesnnee|Gigi|lip cesseeecssecssneeesseseeccaneeceseeeBO|]| +|Load and|Store Operations|sovessssssecesncesteseesnseeseneneesscrssdiibbdesssseeessutsessetsessetseseeeeees|3S|q| +|Arithmetic|Furétians|sesseteeeesenseeeeeeseseensteescnnsinetesissessenafhiiiiecesusmcessnsneessesssnnneeeseersse|98||| +|[nterrupts|2.20.1|Ege|lteeseoeeseseneneeeeeeeeeeennenesifittltimanaitSbG|sccecccccsesseneecceensssssneeeseeenees|39|1| +|Program|Control|F4OW|2.0|ccccccceccseeeeeert|EEE|U|ceccecccssssnereeseesnsnnnnneesesseeees40|4| +|Multiply|and|Ag@dtnulaté|Tastructions|2... eccceesscssseeesccsseesessseessseeesseecessteseeneseeseee42|j| +|Systolic|Matrix’|Multiplies|2222.sescccseeecssssnesesseesssseteeresseecesseecesnnseseessneseaneee43|{| +|DivideReBisterUnit .....eccceecceeccsseeceeseeeeersignage|epeescseeesssneeeesseeeesensesenneessesssntessneetsneeseeeeeeeee|43|{| +|External|FUGCPUC ieeeSS|ceeccceeeee|e|eeeeMEELone enesnsesessnnnenncececceceeecccccesensnneeessessnn|e|ec|e|sn|es|sssmeeesensssne|s|ns|s|sassssneeneeee|ss|eesssssns4G4|jj| +|||Back‘HnternalandRegistersUnpack|02/05iis.|Gi|.-ccscseeeeccccssseecseesescecessessenssnsnienseeececssnnessscscansnnnaneesessees cecceeccseeesesssnneessaneessnesesineessineesneessnessaecssnesesneseneense|4|54| +|Blitter|2.2|Se .cceccseccecsececeeceetbibblgescesssecescesecesceesececascssesecatecenecateuseesesanecersssrerscesneneeene|49|]| +|What'isProgramrninethé:|Blitter?the|Blitter200...|222Gob.|[.cccscsccccccsccssscsssscsssseseesesenssesseenseccessceceeeseeeeeseceeeseeens]|ccccccccecscsnssensnssnnsssnsnsansusnenesstecesceesesesssansssnenseeseeee499|1|| +|Address|Genetatinisiisncsifl|el|occ essscccssssssseeeesseceeessesesssnsnvteeceessssnnuetecsesssnaseeesseees50||| +|Data Pate.|eee ee|cc ccccueecateccsssecessecessuscessneeenssesraseesneecnneseseesseneesaeeesesD2||| +|@|Bus|Interface|...c.cccccccccsssecsssssesscsesnesesssesececeestenesesecasucsessessecaeevsssarseseceeseeneeeeraneeeseaeeee|[D4]|q| +|Register|Description|.....ccccecsessssssseessesesseesesneesesecesnesteseesecsassaseusssensnteavsnenessnsassseeeeses5D| +|.|Address|Registers|.......-:ssscsessecesseeessesessesecsesecsessnenteucssesecsussesuesssussesscaesussseneresssaneeeeesDD|4| +|Control|Registers|.......eccececessessssecceeseeeseesnscsesessecessesesacsescassesussseseesnenecseseasenseessesesensD9)|i| +|Data|Registers|.0........:cccccscesesccsseesececseccecsessessessnseeceesscessssassseesecsssesssecseeseeereesseeesseseesOD|d| +|Modes|of Operation|.........scsccceceesessessescseeseseesessetecsssnecsneueeueseeunseereastesersessesessnseteteseses O4|:| +|© 1992-95 Atari Corp.|Confidential Information|TR|Property ofAtari Corporation|June|7, 1995|:| + +**----- End of picture text -----**
+ + +ii + +f | , + +Jaguar Software Reference Manual - Version 2.4 + +JONTy cossesscssssccsssescestscsssessssesenseeeennseesenee ge **e** eessenseesanseeeneseeesenste AOU SOIC AS08 69 hhh Frequency dividers .....escsssssscsecseeeesesstssssesssssssssntnesorsesnannnnnnannnananennnnnnnnensnennennnrnnsgeg 69 my Programmable Timers ....-.cscossssssesssessssssseesercensessecnnnannaanascceesnensseseeeee te ete ee 8 70 Trnterrupts ..eeccsseccssscsssseesvessssnssceceneeseneccssnencesnssennsensnssenensseeueeeeueseeeseeeeessees ee ees e808 800 71 Synchronous Serial Interface........-.s.-s-sceccssereeceeecsesesett ts **e** seettnnnnaassses 72 Asynchronous Serial Interface (ComLynx and Midi) .......ssssesceseeseeeseeeesmustiiitionnss 73 Joystick Tater FACE seccccececessssssecensnssuneesuesssveresseseeeeueetuenseuneereneeenli pine ES. General Purpose IO DeCOdES -escsesssssssseesinsnssssstenesesssecenanssceessnsssteeipionccesesnascees ARG Introduction —ccscsssssenuunnasesansanasassenenenenseesusssenenessesssnenununvevssssnansnnsssieipyrsscssscssee TT EEEEEES Programming the DSP sscccccccccseseetsssavasssnannnnvnvesnssscnssnncsneeecensesessceesnseesslolitlbegsecee 77 “HEE Design Philosophy ..-secvecesveeeevssccentneeetnteneneennnetsegetntneenesevneneren teenie] 7 Hees | Pipe-Lining..ssccccoscsncmensteeennenneunenennnedl iyecmecnenenrenest AEB Eee Memory Mapnn: nnn, Load and Store Operations _eeecessisusesesanaunesssasnuessesismneessesiGediiji biiaesssessesseeees 18 CUBE | Arithmetic FUMCtiOns -..scc.ssssssssssssessssssseesesteesessesceeeenennngistib **i** eesUin **es** ss eeeeeess **e** rtGii 78 Interrupts a eceseespusitssnusannnensnansenannisansassnnnnet iessssaseaseesannstbHibillpgs se 79 Program Control TOW secsccsssseusesssssseenneessssseegagunnnggngseeeeesvsensesceccesnuunnasnnseensilipaidie D9 Circular Buffer Management ecscscceceneea SEES Obtgcecccceeneentneeseeneneenn ig FE Extended Precision Multiply / ACCUMUIAEBS!...........:--1EEE elses oeeseeeceteeeeeeerrtttetecee 79 Divide Unit seccccccssccsssssssedl i ilsves sosssceseecsnneetlbbithttitnesso ec cescensse ceee **s** snenssssseve **ee** sss **e** s 8Q Register File ccccesssesuuisnsssasennnnnsseseresees!ifsefligeessscsesssnsnsseeeesnndtliaeilityseccessnsecceesees BO External CPU AccessIG:3c INE re Internal Registers ccccovsccscnecsengggpeeeeneeeeensFAE URpeccsecceeneecneeneeteeipenceeneen 80 f Appendices ccecccssssensssssssssssesesssetGlllELE Nie sccccescse IH Bigg eeeseesssengd i pbeeeeennenneesssseee 85 RISC Instructionee ee 85 Writing Fast GPU and DSF. Programs vasetitBSteageecssevennerti tcoeeessenenneceesernes 99 Data Organisation - Big and:Léttle Endiagh 2222 cs ecessenenenssesssneneesseeseeee 10] + +ee © 1992-95 Atari Corp. Confidential Information TRProperty ofAtari Corporation June 7, 1995 + +- 7 Jaguar Software Reference Manual - Version 2.4 + +Page 1 + +| | | { | | | | j i j ; q | 1 : 4 \ ' + +| — + +7 + +This document is the Jaguar Software Reference Manual - it is a definitive reference work for the programmer's view of the Jaguar ASICs. It is neither a hardware reference work 80t puide to a particular implementation of the Jaguar design. a { Jaguar is a custom chip set primarily intended to be the heart of.a very high-perforradtice games / leisure: j computer. It may also be used as a graphics accelerator in moré. c@raplex systems, andapplied and to workstation business uses. EEE Be EEE q As well as a general purpose CPU, Jaguar contains four processifig units: Fese are: _ j — Object Processor nF _ : The Object Processor is responsible for generasitig-the display. For each displaytine it processes a set of commands - the object list - and genegatesthe dispiay-for that line in an intern@Fline buffer. Objects may be bit maps in a range of display resolutions,:he¥:may be scaled, conditional actions ‘ may be performed within the object list,'#8d interrupts to theGtaphics Processor may be generated. a The Graphics Processor is a.¥Biy fas:micro-procéss6t which is optifiiised for performing graphics generation. It has its own local RAM} asidl.a powerful: AEC which énéfudes fast multiply and divide operations. Be Heee + +The Blitter is closely coupled'to the GPU, and is able to fapidly move and fill graphical objects in memory. It includes hardware support for Z-buffering aad shading at very high speed. — Digital Sound Processor 6 Bed The Digital Soutid Processor is similar to the Graphics Processor, but is intended primarily for synthesizing sonnd, and for: playing back sampled sound. It may also be used for general processing tasks. - OE Jaguar provitles these. blocks with a 64-bit ditd path to external memory devices, and is capable of a very high data transfer rate into: external dynamic RAM. “8° + +© 1992-95 Atari Corp. + +Confidential Information FOR Property ofAtari Corporation + +June 7, 1995 + +Page 2 Jaguar Software Reference Manual - Version 2.4 eee Howis Jaguarused? =. a + +**==> picture [4 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+_
**----- End of picture text -----**
+ + +## Jaguar contains two custom chips, code-named Tom and Jerry. + +For graphics, Tom contains the Object Processor, the Blitter and the Graphics Processor. For sound, Jerry holds the Digital Sound Processor. In addition to these, there is an external CPU, currently a 68000. When animating graphics there are therefore four processing elements, and they havé: ail Betspecific roles to play. The CPU is used as a manager. It deals with communications with the outside world, and tapiddies the system for the other processors. It is the highest level in the control flow of a Jaguaé program, and has eomplete control of the system. “EEE CHEER The Object Processor is at the other end of the chain for generating graphics. It réads'an object list, and gpithe basis of the commands there assembles each display line of the video picture. Objects aréasually areas Of! pixels, and these may overlap and may be easily moved from fraié {o.frame. The order ie WHigh theyare” processed in the object list determines how they overlap. Objects Gast-aisG:modify what is alreaayirn:the display line being assembled, and can scale bit-maps. They may ¢omain transparent pixels. The Object Processor performs all the functions of a traditional sprite engine, Whitéalso offering all the flexibility of a pixel-map based system. It is capable of.a.range of animation effects, andtis a powerful graphics tool in its own right. pee OEE + +The Graphics Processor and Blitter provide a tight#y-coupled pai¥ Gf jirocessors for performing a much wider range of animation effects. A design goal of this's¥$tem was to provid¢:a fast throughput when rendering 3D polygons. The Graphics Processor therefore has a'fastinstruction througkputy.and a powerful ALU with a paraliel multiplier, a barrel-shifter, and a divide unit;:ig: addition to the normal arithmetic functions. The Graphics Processor has four kilobsiés of fast internal RAM, which is used for local program and data space. This allows it to execute progra#in paraliét with the othetptdicessingunits. The Blitter is capable of performing: 4 range of blitting @iération 64 biis‘dt'a time, allowing fast block move and fill operations, and it can generafe:strips of pixels for'Gourind shaded Z-buffered polygons 64 bits at a time. It is also capable of rotating bit-raaps, linedtawing, charagtér-painting, and a range of other effects. The graphics processorand the Blitter will usually act together pitéparing bit-maps in memory, which are then displayed by the Object 'Prcessor. i, _gfEEE The Digital Signal Processor has eight kilobytes offastigternal RAM, which is used for local program and data space. It is tightly cdupled toJerry's internal timers, interrupts and audio output to allow fast, independent access. ORE + +f : + +**==> picture [11 x 12] intentionally omitted <==** + +**----- Start of picture text -----**
+is
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. Confidential Information FRProperty ofAtari Corporation + +June 7, 1995 + +| Jaguar Software Reference Manual - Version 2.4 Page 3 | Jaguar Video andObjectProcessor + +| | | : | ; | j ; 1 1 1 q 1 j ‘ + +Oveview The Jaguar video section has been designed to drive a PAL/NTSC TV. However by adoptitig 4 flexible approach to the design the chip can be used with a range of display standaids through VGA toWiiristation. | This will allow the chip to become the backbone of many (possibly unforesééia} products. “PEERS Two colour resolutions are supported, 24-bit and 16-bit. The 24-bit mode is useftid faeapplications requiring true colour. The 16-bit mode is designed for animation. It consiigiesless memory, fits:better.into 64 big: memory, and in the case of CRY (Cyan, Red, Intensity), is simples. 0'shade and is almost tdistitioniishable from 24-bit mode. ee HEHEHE? Jaguar decouples the pixel frequency from the system clock byatising a line hutfer, This means thai the system clock does not have to be related to the colour carrier frequency and may be unaffected by gen-locking. There are actually two line buffers one is displayed while,thedither.is prepared by the Object Pocessor. Each line buffer is a 360 x 32-bit RAM. The line buffer coatasns physi¢alipixels these may be eithér16- or 24-bit pixels. The line buffers may be swapped over atte start and itt[$#e:tiddle][of][ display][lines.] In CRY, pixels at the output of the line buffer até gonverted to 24-bit RGB-pixels using a combination of 1. look-up tables and small multipliers. WEEE OEE, /) @ The video timing is completely programmablein units Gf thie-video clock. tee Jaguar uses an Object Processor, this Combines the advantages f frame, sire and sprite based architectures. Jaguar's Object Processor is simple:yet sophisti¢aied. It has scaledatid:unsealed bit-map objects, branch objects for controlling its control fay, and interfupe Objeceselt can interrupt the graphics processor to perform more complex operations on its behalf: The graphics procesgpe will support perspective, rotation, branches, palette loads, etc. ae * eee + +The Object Processor casiwrite into the line buffer at up to iw pixels per clock cycie. The source data can be 1,2,4,8,16 or 24 bits per pixels. Except for 24 bits, obivets of.difterent colour resolutions can be mixed. The low resolution objects, ofé:40 eight bits, use a palettéte@btain[a][ 16-bit][physical][colour.] A sophistication in the Object Processdtiis that it can modify the existing contents of the line butfer with another image. This could be used to pradice shadows, mist or smoke, coloured glass or say the effect of a room illuminated:-by.flash lamp. EBs The Object Processor énif'also ignore data whichis stored alongside pixei data. If, for instance, a Z buffer is needed then this can beSititatédnext to the pixels. This helps because DRAM RAS pre-charges are needed + +**==> picture [20 x 24] intentionally omitted <==** + +**----- Start of picture text -----**
+wo
**----- End of picture text -----**
+ + +**==> picture [6 x 23] intentionally omitted <==** + +**----- Start of picture text -----**
+44
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. + +Confidential Information TR Property ofAtari Corporation + +June 7, 1995 + +Hi + +Each object is described by an object header which is two phrases for an unscaled object and three phrases for a scaled object. When an image has been processed the modified header is written back to memory. The Object Processor fetches one phrase (64 bits} of video data at a time. This phrase.is expanded into pixels (and written imo the line buffer) while the next phrase is fetched. eee 'mage data consists of a whole number of phrases. The image data may need to be padded With dansparent pixels (colour zero in 1.2,.4,8 & 16-bit modes). BEE OPE The Object Processor writes into the line buffer at one write per system clock iigkiln 24-bits-per-pixel mode and for scaled objects one pixel is written per cycle. For unscaled objects with 16:d#fewer bits-per-pixel:pvo —- pixels are written per cycle. Most objects will therefore be expanded at twice the proééssct:clock rate. 25 If the read-modify-write flag is set in the object header the object dita'is, added to the previous cOhiteni® of the line buffer. in this case the data rate into the line buffer is halved. 2222250854, HERE os This peak rate may be reduced if the memory bandwidth is not higti enough: However if 64-bit wide DRAM is installed then these data rates will be sustained for all modes. oe When accessing successive locations in 64-bit wide:RAM tie- memory cvcle time is tW6 ack ticks. These are page mode cycles. When the DRAM row addgess"must cha#ige'there is an overhead ofbetween three and seven clock cycles (depending on DRAM speed}::Fhese RAS cyclés:will.occur infrequently during object data fetches but will typically occur during the fif§idata read after reading:the object header (because the header and image data will not normally be near eatother in memory). RAS ‘eycles will also occur after refresh cycles or if a bus master with a higher priority ‘steais.some memory cyélés in an area of memory with a a different row address. Retresh cycles tidemaily be pasipéned until object processing has completed. mM + +Memory controller == Jaguar's memory controller is very fast and flexible. It hides thé sigmory width, speed and type from the other parts of the system. “tee nee Memory is grouped into ‘Hanksthat may be of different-widthszspéeds and types (although both ROM banks have the same width and sped): Bach bank is enabléé:byacbip select. In the case of DRAM there are two chip selects RAS & CAS.:Memory:widths can be 8,16,32 or 64 bits wide but the memory controller makes it all look 64 bits wide. 2: HERE |: ‘There are eight.write strobes - one for each eigbE-bits. There are three output enables corresponding to : d[0-15],d[46-34}: aid: d{32-63]. Three memory typéS:are supported: DRAM, SRAM and ROM. I, ROM or: EPROM iS used fa" Bootstrap and for cartridges. The ROM speed is programmabie. The memory : controllerallows the system ‘té:view. ROM as 64 bits wide. Pull-up and pull-down resistors determine the ROM width dising reset. s, DRAM is the pringipal memory type, 6 it is cheap and fast when used in fast page mode. In fast page mode the DRAM cycles'at twa-ticks per trafisfér. The row time access is programmable. The column access time is not programmable andtannly be. adjusted by changing the system clock (a page mode cycle takes two clock ticks). The memory controflér:decideson a cycle by cycle basis whether the next cycle can be a fast page mode cycle. Data and algorithms should be organised to minimise the number of page changes. The page size is 2 kbytes. + +There are four memory banks; two of ROM and two of DRAM. + +. + +© 1992-95 Atari Corp. + +Confidential Information TR Property ofAtari Corporation + +June 7, 1995 + +i e = Jaguar Software Reference Manual - Version 2.4 + +Page 5 + +| + +|. JAGUAR has been designed to work with any 16 or 32-bit microprocessor with (up to) 24 address lines. The | interface is based on the 68000 but most microprocessors can be attached by using a PAL to synthesize those control signals which differ. All peripherals are memory mapped; there is no separate I/O space. } The width of the microprocessor is determined during reset by a pull-up / paifl-down £esigtor, Variations in the | address of the cold boot code/vector is accommodated by making the bootatrap ROM appeareverywhere until | the memory configuration is set up by the microprocessor. ooo OTHERS The microprocessor interface is generally asynchronous so the clock speeds df ike microprocessor sid 0- processors may be independent. ieeeicoem “HEE Jerry uses the same microprocessor interface. foe TEE ae The CPU normally has the lowest bus priority but under interrupé ifs pkiority iS increased. The following list gives the priorities ot all bus masters. -— s oe OE Highest priority 1. Higher priority daisy-chained bus master ssi... eee 4. GPU at DMA priority a Ee bee & —bject Processor _ oe 10. Blitter at normal priority 2) He HO ne + +| ‘ ' + +**==> picture [4 x 11] intentionally omitted <==** + +**----- Start of picture text -----**
+:
**----- End of picture text -----**
+ + +**==> picture [7 x 28] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. + +Confidential InformationTER Property ofAtari Corporation + +June 7, 1995 + +Page 6 + +Jaguar Software Reference Manual - Version 2.4 + +| | + +## MonoyWep + +Jaguar's memory map depends on how it is being used. + +**==> picture [492 x 581] intentionally omitted <==** + +**----- Start of picture text -----**
+Following reset the following 2 Mbyte window, corresponding to the ROMO area, is repeated throughout the
16 Mbyte address space until memory is configured by the microprocessor by writing [to][ MEMCON1.] [(This]
allows the system to boot whether the microprocessor is a 680X0, an 80X86,of'é Eragspirter.) After
configuration, this map corresponds to the area defined as ROMO on the mapsbelow. “!ff0n.
LFEFFE120000 ae "k_ 2Ee
H28008 Be oo
Eee oe. Oe
Taternal ee ne
Bootstrap FOM a _
When the memory configuration is setGne of twi:memory maps is:selected depending on bit ROMHI of the
TRPBEE | Romo TS EEESUEfy opamo
00000 | Bootstrap[and FSg7Ste=sROM ebibyces Hue"coccoo “HeeBynamicbes RAM 4 Mbytes
{ ROME dibs. :ADRAM.
CartridgéiROi:. | € Moytes iie.. aafiebynamic RAM 4 Mbytes
DRAM? gE ee, ROM?
Dynamic RAM CMBV Re s Cartridge ROM 6 Moytes
JE ORANG Ee ROMO
(Ege Dynami coRaMe: | 4 Mpytes ~ Bootstrap ROM 2 Mbytes
000000 4. el soocoo Lane seerster’
“OBOMHT=1000 ROMHI=0
ROMO is the boaisttap ROM but interaal (ASIC) memory and peripherals occupy 128 Kbytes of this space, as
shown above. ROM! ig:the. cartridge:ROM.DRAMO and DRAM are the two banks of DRAM.
A 68000 system will naturally operate with RAM at 0, so the ROMHI = 1 map is assumed throughout this
document. If the system is operated with ROMHI = 0 then the first digit of all internal addresses should be }
rather than F.
**----- End of picture text -----**
+ + +eee © 1992-95 Atari Corp. Confidential Information TER Property ofAtari Corporation June 7, 1995 + +Jaguar Software Reference Manual - Version 2.4 + +Page7 + +es ,r,rrt~S—sC.C.Ci‘SOSSCOCC;s;ds+dd#W + +! | : | + +|. + +a + +| 1 : | | J ' ' ; i |i q i q + +4 + +Internal Memory is mostly 16 bits wide to allow operation with 16-bit microprocessors. + +32-bit write cycles are allowed to some areas of internal memory notably the line buffer and the graphics processor memory. The line buffer support 32-bit writes primarily in order to accelerate Blitter writes to the line buffer. The graphics processor supports 32-bit writes to accelerate program and data.loads. + +||.
a|es
,r,rrt~S—sC.C.Ci‘SOSSCOCC;s;ds+dd#W
Internal MemoryMemory is mostlymostly 16 bits wide to allow operation withbits wide to allow operation withwide to allow operation withto allow operation withallow operation withoperation withwith 16-bit microprocessors.microprocessors.
32-bit write cycles are allowedwrite cycles are allowedcycles are allowedare allowedallowed to somesome areas of internal memoryof internal memoryinternal memorymemory notably the line buffer andbuffer andand the graphicsgraphics
processor memory. The line buffer support 32-bit writes primarilymemory. The line buffer support 32-bit writes primarilyThe line buffer support 32-bit writes primarilyline buffer support 32-bit writes primarilybuffer support 32-bit writes primarilysupport 32-bit writes primarily32-bit writes primarilywrites primarily in order to accelerateorder to accelerateto accelerateaccelerate Blitter writes to thewrites to theto thethe
line buffer. The graphicsbuffer. The graphicsThe graphicsgraphics processor supports 32-bit writes to acceleratesupports 32-bit writes to accelerate32-bit writes to acceleratewrites to accelerateto accelerateaccelerate program and data.loads.|es
,r,rrt~S—sC.C.Ci‘SOSSCOCC;s;ds+dd#W
Internal MemoryMemory is mostlymostly 16 bits wide to allow operation withbits wide to allow operation withwide to allow operation withto allow operation withallow operation withoperation withwith 16-bit microprocessors.microprocessors.
32-bit write cycles are allowedwrite cycles are allowedcycles are allowedare allowedallowed to somesome areas of internal memoryof internal memoryinternal memorymemory notably the line buffer andbuffer andand the graphicsgraphics
processor memory. The line buffer support 32-bit writes primarilymemory. The line buffer support 32-bit writes primarilyThe line buffer support 32-bit writes primarilyline buffer support 32-bit writes primarilybuffer support 32-bit writes primarilysupport 32-bit writes primarily32-bit writes primarilywrites primarily in order to accelerateorder to accelerateto accelerateaccelerate Blitter writes to thewrites to theto thethe
line buffer. The graphicsbuffer. The graphicsThe graphicsgraphics processor supports 32-bit writes to acceleratesupports 32-bit writes to accelerate32-bit writes to acceleratewrites to accelerateto accelerateaccelerate program and data.loads.|es
,r,rrt~S—sC.C.Ci‘SOSSCOCC;s;ds+dd#W
Internal MemoryMemory is mostlymostly 16 bits wide to allow operation withbits wide to allow operation withwide to allow operation withto allow operation withallow operation withoperation withwith 16-bit microprocessors.microprocessors.
32-bit write cycles are allowedwrite cycles are allowedcycles are allowedare allowedallowed to somesome areas of internal memoryof internal memoryinternal memorymemory notably the line buffer andbuffer andand the graphicsgraphics
processor memory. The line buffer support 32-bit writes primarilymemory. The line buffer support 32-bit writes primarilyThe line buffer support 32-bit writes primarilyline buffer support 32-bit writes primarilybuffer support 32-bit writes primarilysupport 32-bit writes primarily32-bit writes primarilywrites primarily in order to accelerateorder to accelerateto accelerateaccelerate Blitter writes to thewrites to theto thethe
line buffer. The graphicsbuffer. The graphicsThe graphicsgraphics processor supports 32-bit writes to acceleratesupports 32-bit writes to accelerate32-bit writes to acceleratewrites to accelerateto accelerateaccelerate program and data.loads.|es
,r,rrt~S—sC.C.Ci‘SOSSCOCC;s;ds+dd#W
Internal MemoryMemory is mostlymostly 16 bits wide to allow operation withbits wide to allow operation withwide to allow operation withto allow operation withallow operation withoperation withwith 16-bit microprocessors.microprocessors.
32-bit write cycles are allowedwrite cycles are allowedcycles are allowedare allowedallowed to somesome areas of internal memoryof internal memoryinternal memorymemory notably the line buffer andbuffer andand the graphicsgraphics
processor memory. The line buffer support 32-bit writes primarilymemory. The line buffer support 32-bit writes primarilyThe line buffer support 32-bit writes primarilyline buffer support 32-bit writes primarilybuffer support 32-bit writes primarilysupport 32-bit writes primarily32-bit writes primarilywrites primarily in order to accelerateorder to accelerateto accelerateaccelerate Blitter writes to thewrites to theto thethe
line buffer. The graphicsbuffer. The graphicsThe graphicsgraphics processor supports 32-bit writes to acceleratesupports 32-bit writes to accelerate32-bit writes to acceleratewrites to accelerateto accelerateaccelerate program and data.loads.||||| +|---|---|---|---|---|---|---|---|---| +||
j|WEMCONT
Memory Configuration RegisterOne =—=§§-— FooGONRW
DoNOT Modify:Forinformationonly)|||||||| +|f|||Bits
Name
0
ROMHI
1-2
ROMWIDTH|Description
WhensetthetwoROM:decodesaddressthé:tap
8M within the
16Mwindow. Whenéleas'
tie ROM decodesaddress
the tottom
8M.Thisdocumentassumes h¥oughoutthatROMHI
is setwhen
| discussing registera@tesses.72222,
Specifies thewidth ofROM:
COREE|||||| +|||||
3-4
ROMSPEED|[3
64bits
SpecifisstheROM cycletiie!
=,|||||| +|||||5-6
DRAMSPEED::2.
cree
“EE?”|Specifies'the IERAM Speed. Thepagemodecycletime isalways
two.dlack cycles: FhesebitsdetermineRASrelated timingas
| folldWs:
“EEE,
Precharge | RAS toCAS
Refresh||
|
||||| +|||[—_|——“Sgrmaaenokgees
7fettieFASTROM
Séts:the ROMcycletimetotwoclockcycles.This isfortest
oa
| purposesonly.|||||||| +|||||1812
IOSPEED 225...
THEE
“tues.
THE,
“ee
_
uD|Specifiesthespeedofexternalperipherals.Thenumberofcycles
|hereisthe overallcycletime,the control strobes areactivefor
|twocycleslessthanthis.
|0 18clockcycles|||||| +||||es|3
6clockcycles||||| +||||||||||| +||||CPU32|Indicates thatthemicroprocessor is32bits.||||;| +||||15
unused||Settozero.||||| + + + +© 1992-95 Atari Corp. + +Confidential Information TER Property ofAtari Corporation + +June 7, 1995 + +Page 8 + +Jaguar Software Reference Manual - Version 2.4 + +i + +} | : | + +q ‘ + +All the ROMSPEED bits are set to zero on reset. ROMHI, ROMWIDTH and CPU32 are determined by external pull-up / pull-down resistors. All the other bits are undefined. ROMO repeats every 2 Mbytes until this register is written to. + +## MEMCON2° Memory Configuration RegisterTwo = + +**==> picture [494 x 456] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||| +|---|---|---|---|---|---|---|---| +|MEMCON2°|Memory|Configuration|RegisterTwo|=|Foooo2 RW| +|Bits|Name|Description| +|0-1|COLSO|||Specifies number of columns|in:|RAMO|OEE| +|2|1024|ie,|=|ee| +|||3_|2048|co|eo| +|||2-3|DWIDTHO|Specifies|the width|of DRAMQ._|eee eres| +|||32|bits|||_||| +|3|_ 64 bits.|EE||| +|4-5|||COLS!}|Specifies|suimber'of ¢olumns inDRAML|=H||| +|6-7|DWIDTH1|_aap Specifies|the|width:of|DRAMI|2| +|8-11|REFRATE|“EE|||Specifies|the|refresh'tate. DRAM rows|are refreshed ata| +|HEERe-||||frequencyrequire a refreshof CLK frequency of/ (64:x (REFRATE+1)). 64 KHz. RefreshMany cycles DRAM occurchips at the||| +|ice|||end of objéekiprocessing.|If REFRATE|is zero|refresh|is|disabled.| +|12|||BIGEND|5s.|||Specifies|thatbig-endian|addressing should be used. This| +|“|OEE 'dorbe|used comfortably|with Big-endian|(Motorola)|processors|or| +|cae|“eullloa| determines the address of a byte within a phrase and allows Jaguar||| +|_aaniigiies..|“With|:Ejttle-endian|(Intel) processors.| +|||13222|ED.|Specifiés:that image data should be displayed from high order bits||| + +**----- End of picture text -----**
+ + +All the above bits are undefinedGt téset except BIGEND which is determined by external pull-up / pull-down resistors. 222288. OE HC °°Hordentak@ount——<“ picture [450 x 61] intentionally omitted <==** + +**----- Start of picture text -----**
+Biis Name Description
0 “282, VIDEN “clas | When set enables time-base generator. This should never be set
cseet tee 222 | to zero in a Jaguar Console.
1-2 TMODE..._ £2) | Determines how the line buffer contents are translated into
**----- End of picture text -----**
+ + +. + +© 1992-95 Atari Corp. Confidential Information PER Property ofAtari Corporation + +June 7, 1995 + +i . + +: j : + +, . 4 % + +| { | j + +## Page 10 10 + +**==> picture [500 x 716] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---|---| +|Page 10 10|Jaguar Software Reference Manual - Version 2.4| +|CRY|16|(0)|1|16-bit CRY. Each|32-bit|entry|in the line buffer|is treated|as two| +|||16-bit CRY pixels|on successive clock|cycles.|Each|is converted||| +|into eight bits of red,|green, & blue using a combination|of lookup||| +||| +|t| +|||| tables and multipliers. CRY16 pixels are arranged as follows:||| +|||||Bais|oo.|Bio| +|||||||GOGBSTRABEBEoT0o||| +|||:|The least-signifigant bit is normally interpreted asthe|Séast-||| +|||||signifigant bit of intensity.|If VARMOD|is also|set,|this’bizwill be||| +|||cleared to indicate|a CRY16 pixel andaly|the top seven|bigs will||| +|||be|used|to|determine|intensity.|eee||| +|||RGB24 (1)||||phys24-b|i|tcal RGB.pixel Each with 32zbzi eigh|t|ditsentryof inred, the eight line bufferis bits|GE|Blutr|e|:eightated asGeBES|||| +|||||of green and eight bits|uBissed|-RGB24|pixels|arearrangedeS||| +|||||| follows:|(a.||| +|||!|__—|6h||| +|||||||ESSEROOO|R|ASE|ER||| +|||| DIRECTIO()||I|T6-bitERRdirect. Each 32-bitEEPOOEOeeeoe etry th.the|line buffer|is divided|into|||| +|||||||two 16-biE Words which are outpéif: directly onto the red and green| +|||ioutputs|on|algersiate phases|of theWideo clock. This mode|is|for| +|||||_/||applications requirise-adot clock|iiexcess of the video clock.|It| +|||||222See| ‘is out as|s|umedidé:the tc|h|atip. further wultiplexitse'andIn this|modé blanking|andcolour video lookup active are will occur||| +|||||Pees|output:onthe|two|least|significant|bits of blue.| +|||RGB16 (3)|"EEE“|16-bie16-bit RGBRGB. Each'32bitpixels. REB16 entrypixels in theare linearranged buffer isas treated asfollows:|two.| +|||ss|||RHBSHOOREEOEEEES||| +|Hee|“lllThe|least-signifigant|bit|is normally|interpreted|as the|least-| +|“||significa bit of green.|If VARMOD|is also set, this bit will be||| +|||eee|||sét igHiidicate|a RGB16 pixel and only the top five bits will be| +|ee,|used f0:determine the|level|of green.| +|Bae|||GENBOCE:.|When|set this bit enables digital genlocking. This means that| +|ee|||“eleue,|4|external syncs will reset the internal time-base generators. Onits||| +|TEER|||“ees.|||own this mechanism does not give satisfactory genlocking| +|Oe|“©|||because there|is jitter. However this mechanism|is used to quickly||| +|“HORE|==)|lock onto a new video source. An external Phase Locked Loopis||| +|ee|||required for true genlocking.|Not supported|in Jaguar Console.||| +|2|8 ge|[|Enables encrustation. When set, the least significant|bitofthel6|5| +|||4|T INCEN| +|i|j|—_—|!|bit data|is used|to switch between|local and external video sources|}| +|j|J|using an externa! video multiplexer.|This allows|the video source||| +|{|to be switched|on a pixel by prxef basis.|/| +|5|{|BINC|Selects|the|local border colour if encrustation|is enabled.|i| +|To| +|© 1992-95 Atari Corp.|Confidential Information ‘FER|Property ofAtari Corporation|June|7,|1995| + +**----- End of picture text -----**
+ + +Jaguar Software Reference Manual - Version 2.4 + +Page 11 + +**==> picture [502 x 380] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---| +|{|7|BGEN|Clears|the|line|buffer|to|the colour in|the background register after| +|||displaying the contents. This only has effect in CRY and RGB16| +|||modes.| +|iS|VARMOD|Enables variable colour resolution mode. When this bit is set the| +|least|significant|bit of each word|in the|line buffer|is used|to| +|determine|the colour coding scheme:oftpt|h|ere|15|bits.|If the|bit| +|is|clear|the|bits the word|is treated|ase|ERY|pixel.|If the|bit|is|set| +|||then|bits|[1-5]|are|green,|bits [649]|are blue’aHi@Bits|[11-15]|are||| +|||red, This mechanism|allows JAGUAR to support'a#|RGB window||| +|||against|a CRY background|for isistance.|GEE| +|9-11|PWIDTH1-8|This field determines|the width|of|[#uxéts.in][ video][ clock][ cycles.]| +|The width|is one|more|than|the valuig: this.fi|e|ld.||| +|||The video time bas¢:generator|is programmed in.cycles|ofthe:| +|||video clock and not the|iixel|clock produced|‘oy|thus wivides:”||| +|The display width shaild:b¢:sét.to be an integer nuriiber|[of]|[pixels,]||| +|[Es|Use|Wei.|e|. an integzero|e|sr multiplé:of thepixel:width programmed here.| +|BORD2|-—«»-BorderGolour(@Biuey|FoR|WO| +|These registers determine the physical border coluii,|There are eight|BHS|per|primary colour. Red is the less| +|significant byte of|BORD1.|This colour is displayed: between|the active portions of the screen and blanking.|It| +|is not necessary 10 display|a border. The-horder|area isdefinedby|the video|amme-base|registers.| +|Hp|oO|Morizontal|Period =|OBOE|WOO| +|Do|NOT|Modify:|For informationonly| + +**----- End of picture text -----**
+ + +This ten bit register determines the period of halfa display line ig:video clock cycles. The period is one tick longer than the value written into this register. Eee + +Do NOT Modify: Fer[Information] only” i.===. This eleven bit-register determines the start position of horizontal blanking. The most significant bit is usually set becausé blanking Starts in the second half 6fthe!fine. + +## Do NOT Modify: Forinformationonly + +This eleven bit register, determines the end position of horizontal blanking. The most significant bit is usually clear because blanking ésids. in the-first half of the line. + +Do NOT Modify: Forinformationonly |=| This eleven bit register determines the width of the horizontal sync and equalization pulses. The pulses start when the horizontal count equals the value in the register. The pulses end when the horizontal count equals © 1992-95 Atari Corp. Confidential Information AR Property ofAtari Corporation June 7, 1995 1995 + +June 7, 1995 1995 + +vy + +the horizontal period. The most significant bit is usually set because horizontal sync happens at the end of the line. The most significant bit is ignored in the generation of equalization pulses which are the same width as horizontal sync but which appear twice per line (for 10 half lines during field blanking). + +} + +Do NOT Modity: For information only) This ten bit register determines the end position of the vertical sync pulses. Weitical Sync Gongisis.of long sync pulses for several half lines. These pulses are generated twice per line::Wértical sync starts'at4Hé:same time as the horizontal sync or equalization pulses but end when the least signifgéantten bits of the hatizénta! HDB2 _ Horizontal DisplayBegin2 - "0003A WO These eleven bit registers control where on the display line the Object Processér starts. When the horizontal count matches either of the above registers the Object Processor starts execution atthig:address in OLP, the line buffers swap over and pixels are shifted out of thie dine buffer. WHHEEEEn + +The Object Processor can run twice per line in oriet to support dispiiy. modes where the amount of data on a display line is greater than can be contained in o¢:line buffer. Theline:Bufférs are each 360 words x 32 bits. If the display mode was 720 x 24 bits per pixel thé#idine buffer A might'b¢ displayed at the start of the line while buffer B was being written. Then during the sééenid-half of the display: line buffer B would be displayed while line buffer A was prepared for the next.line. In this:case.HDB1 would comlain a value corresponding to the left hand edge of the display and HDB? would contain 4 Value:corresponding to the middle of the display. If the Object Processor needs to ruigaily once pés'line then either thefegisterstake the same value or one register is given a value greater thafthe line lengthy: ride. NFP + +**==> picture [463 x 197] intentionally omitted <==** + +**----- Start of picture text -----**
+This eleven bit register specifies when the display ends. Either border colour or black (if HBB < HDE) is
displayed after the horizongal:cdunt matches this registenscesiiie”
The relative positions of séiné of the above signals and the registers which define them are shown on the
following diagram. OEE
ee lay line TT TTS
/ ce nS | [re ns | | hec¢ ns | | neg
holank 7 he ee noes |
vactive i: Ee l/nabt . nde |
**----- End of picture text -----**
+ + +, + +: + +| + +a©1992-95 Atari Corp. Confidential Information TER Property ofAtari Corporation June 7, 1995 + +| | fi + +] | | : ‘ ] { ‘ + +| . am + +1 + +j |[i] + +w + +**==> picture [541 x 56] intentionally omitted <==** + +**----- Start of picture text -----**
+Jaguar Software Reference Manual - Version 2.4 Page 13
sn @ VP _—sisisojzéNerticalPeriod = FOOOSEECCWO—“ es
BoNOT Modify:Forinformationonly
**----- End of picture text -----**
+ + +This eleven bit register determines the number of half lines per field. The number is one more than the value written into this register. If the number of half lines is odd then the display is interlaced. BoNOT Modify: Forinformationonly == This eleven bit register specifies the half line on which vertical blanking begins: 3 VBEDO _VerticalBlankingEnd== Foooaz WO NOT Modify: Forinformationonly $= = =. eee. This eleven bit register specifies the half line on which vertical -Hfanking ends. Bo NOT Modify: Forinformationonly Forinformationonly = This eleven bit register specifies the half line onWwhtich vertical sync begis&, Vertical sync pulses are Generated from this line to the line specified by the'vertical period. OEE + +## Bo NOT Modify: Forinformationonly Forinformationonly = + +VDB_—ssdsisé Vertical Displayegin == =. Foosss WO This eleven bit register specifies the half line on whic abjectprocessing begins. Object processing restarts on everythese line until the half line specifiedty the VDEfegistet:“Fhie:border colour (or black) is displayed outside active lines. WHEE OE WHEE VDE ss Veettigal DisplayEnd ==, = 00048 WO This eleven bit register specifies thé’balf line at which object processing ends. Due to a bug in the Jaguar Console, this register should be sét:#t $F FF to cause the Object Processor to process every line. + +VERB = = WerticalEqualizationSegin = FOOO4AA WO DONOI Modify; forinformationonly This eleven bit register specifies fhie.half line on which equalization pulses start. + +VEE __MerticalEqualizationEnd = Foo0ac, ss WO Do NOT Modify:Forinformationonly = This eleven bit register specifies the half line on which equalization pulses end. + +| + +{ + +© 1992-95 Atari Corp. + +Confidential Information PO® Property ofAtari Corporation + +June 7, 1995 + +, + +Jaguar Software Reference Manual - Version 2.4 + +1 + +_[Page][14] + +| } : ‘ : | 1 4 - + +z : + +This eleven bit register specifies the half line on which the VI interrupt is generated. This must be odd if the display is non-interlaced. This interrupt will occur once per frame when interlaced, that is every other field. + +These two 16-bit registers control the frequency of interrupts to the CPU and t6 the GPU. PREEOES PIT(] operate as a pair controlling the interrupts. on “CHEE The system clock is divided by (one plus the value in the first register). If the fist tegister contains zé86 the timer is disabled. The resulting frequency is divided by (one plus the value in the'seeoiad register) and these, output of this divider generates the interrupt. ohn eee eee Ee Do NOTModity:Forinformationonly This ten bit register determines the end position of the.equalization pulses. Equalizatién Sonsists of short sync pulses for several half lines on either side of vertical syne: These: pulses are generated twice: ger line. + +**==> picture [546 x 336] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||| +|---|---|---|---|---|---|---|---|---|---|---| +|This register specifies the CRY coiour to which|the line|buffer|is cleared.|7|,|3| +|Tt|©|ePUInterrupt|ContraiResister|FooEO «RW|tO| +|This register enables,|identifies|and|a¢knowledges|intezsupts|fd|the five different CPU|interrupt sources.|||7| +|The|interrupts sources|are|as follows!|Hee|OEE|—| +|Equate|Bit|Interrupt|Description|||a| +|C_VIDENA ||0|+ Mideo|This interrupt| +|Ee|is|generai¢d by the video time-base, on the line|||||=| +|_||selected|bythe|Vitggsster.||| +|C_GPUENA||1|GPU|EE|This interruptis|generated|by|the graphics processor writing|to an|]|7| +|C_OPENA|Object|“yPhsinterrupt|is generated by stop objects.|||_| +|C_PITENAS(32%e...||Timer|||This'gmterrupt|is generated by the PIT.|[| +|C_JERENA)|4° Ferry|This interrupt is generated by an input to Tom and is intended|for|||e| +|||ae|a cseeeeeem|use by Jerry. This|is an active high edge-triggered|interrupt-the|||||q| +|cee|“ue|||first interrupt|will occur on the|first rising edge after ithas been|||(RE| +|C_VIDCLR®:|When set,|this bit clears pending video time-base|interrupts.|if|S| +|C_GPUCLR |G28: GPU|22) When|set,|this bit clears pending GPU interrupts.|i;|4|‘4| +|C_OPCLR|[10|“2:2 Object gi:|When|set,|this|bit clears pending Object Processor stop object|:| +|C_PITCLR|When|set,|this|bit clears|pending PIT interrupts||| +|C_JERCLR|Jerry|When|set,|this bit clears pending Jerry|interrupts.|]| + +**----- End of picture text -----**
+ + +" + +© 1992-95 Atari Corp. + +Confidential Information JER Property ofAtari Corporation + +June7,1995 3 + +| Jaguar Software Reference Manual - Version 2.4 Page 15 a M@ Bits 0 to 4 enable the individual interrupt sources, ie. if bit 1 is set the graphics processor interrupt is enabled. Se = When read bits 0 to 4 indicate which interrupts are pending, i.e. if bit 3 is set there is an timer interrupt ij pending. Bits 8 to 12 clear pending interrupts from the corresponding interrupt source. Note that INT2 must always be written to at the end of a CPU interrupt service routine. + +i | i i] + +1] : 4 i | ; ; ; q 1 | ] ‘ 4 : : | : + +When an interrupt is applied to the CPU the bus priorities of the graphics ‘pracessor and Blitier e-reduced so that the CPU can service real time interrupts promptly. The bus priorities a#@festored by writing aty:value to this register. This should therefore always be done at the end of an interrupt service routine. After the: sprite to this port the Blitter or GPU may then restart, and no further instructions will the: be:executed until eittir:the next interrupt occurs, or the GPU or Blitter operation completes... EE Gee + +The colour look-up table translates an eight bit colour index into[a][ 16-bit][ physiéal][éolour.][ The][ eight][ bit][ index] comes from the object data, which may be 1,2.4 orS:hits:dn order to achieve a high: thzoughput there are two tables allowing two pixels at a time to be writteg amto the: ling buffer. There are 256 16+bif'entries in each table. Locations in the range F00400-5FE read:fram table A.Becations in the range F00600-7FE read from table B. Writing to either range writes to both iables. Writes to this: region of memory may be unreliable when an object with the ‘Release’ bit is part ofthe current object Hist. + +rr—“‘COsiOCOOSCC:OC:C:is*i* CC | There are two line buffers each of‘which consis of a 360 « 32cbit RAM. Each 32-bit long-word can be ] read/written as two 16-bit words. In 16-bit CRY mode each wétiis a CRY pixel; the less significant byte Ss the intensity. The word:with the lowest address corresponds tq:th€ left-most pixel. In 24-bit RGB mode each 4 32-bit long-word is a pixel: The less significant byséiofthe word at the lower address is the red value. The : more significant byte is tere¢n;value and the less'sggnifigant byte of the word at the high address is the : blue value. The fourth byte'is unused... | The first address range addresses line bigtter. A. The second addresses line buffer B. The third addresses the : line buffer currently selected for writing. PRe:fisst two address ranges are for test purposes the third is for the graphics. processor to assist the Object Proces86f:ii:preparing the line buffer. By additig 8000h to thé above, address ranges 32-bit writes can be made to the line buffer. This is mainly to accelera **te** h Blitter. 7, Soe eee Jerry and external peripheralviocéupy the 64k above the internal memory. All Peripheral Memory is 16 bits wide although it is likely that many devices will have eight bit buses. + +| + +eee © 1992-95 Atari Corp. Confidential Information JER Property ofAtari Corporation June 7, 1995 + +> ' / + += SNNNOOS DOOOIOD AO TT + +. gE: 14 q a | a 4a =. | 4 " poy | 8 — | Po _ ] Po | + +} =: + +| + +## . Page 16 PEONOeddantionsG EOD + +Jaguar Software Reference Manual - Version 2.4 TENE LE SIE SSE SE EEL -_ + +There are five basic object types + +## re rrr, C—*=“#LN” This object displays an unscaled bit mapped object. The object must be on a E® byte boundérin 64 bit RAM. + +## C—*=“#LN” + +|||Bits|Field
Description
|||| +|---|---|---|---|---|---| +|||3-13||YPOS
Thisfieldgivesthevalueinthe:yerticalcounter(ifhalfdines) forthefist
(top)lineoftheobject.Theverti¢al:counter islatched whe the. Object”
Processorstartsso ithasthesamg:value-across the whole line:Hftthe™
display isinterlacedthenumbeg isevelt For evenlinesandoddforodd
lines. Ifthedisplay isnon-intétlacedthenumberisalwayseven.The
objectwillbe active while theverticalcounter $#:¥POS andHEIGHT>|||| +||||
|
i
||14-23

24-42
43-63||HEIGHT
Thisfieldgivesthenumber@fdatalinesinthe object.As‘each lineis
displayed the:he¢ght isreduced:by:Gne
fornon-interlaced displaysorby
twoforinterlaced.displays. (Theheigbit’becomes zero ifthiswouldresult
inanegative vakue;)/ThenewvalueisWitten backtotheobject.Please
notethat
forscaled:bifitiap objects,HEIGHT should actuallybethe
— oa
ic
|LINK
This defines the addressof ihe nextobject,
Phese nineteen bitsreplace
Hits3to21 in'theregisterOLP®*Fiis:aflows anobjecttolinktoanother
‘@bjectwithin thesame
4 Mbytes.
|DATA
This defineswherethepixéEdatacanbefound.LikeLINKthis isaphrase
addréss. These twenty-one bits:define bits3to23ofthedataaddress.This
eon
allowsobjectdatatobepositionedanywhereinmemory.Afteraline iS
“Hunts. |displayedthenewdata addréssiiswrittenbacktotheobject.||}
|
|
—| +|||Bits
0-11|Field
~
‘Description
|
|XPOS

This:definestheXpositionofthefirstpixeltobeplotted.This 12bit field
nitive.
defines
sta#t positions intherange-2048to+2047.Address0referstothe|||
|| +|||12-14|{DEPTH “ses. |Thisdefines the number ofbitsperpixelasfollows:|||| +||||
|
||Fede
“celeeValue BitsperPixel Type
VideoModesAllowedIn
Sy
**|**
20
1bivpixel © CLUT
CRY16, RGB16,&DIRECT16
Ee
"| &
2bits/pixel
«=CLUT
"
"||{
|
—| +||||EES” 4
16bits/pixel
Direct
"
"
"
|
5
32bits/pixel
Direct
RGB24||:
]| + + + +i © 1992-95 Atari Corp. + +Confidential Information “JER Property ofAtari Corporation + +June7,1995 + +3 + +**==> picture [575 x 729] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||| +|---|---|---|---|---|---|---|---|---| +|Jaguar|Software Reference|Manual - Version 2.4|Page 17|;| +|||Jaguar|Software|Reference|Mani| +|15-17|||PITCH|This value defines how much data, embedded in the image data, must be|i| +|skipped. For instance two screens and their common Z buffer could be||| +|j|arranged|in memory in successive phrases (in order that access to the Z|i| +|;|buffer does|not cause|a page|fault). The value|8|* PITCH|is added|to the| +|used when|the pixel data|is contiguous|- a|vadiséef|zero|will|cause|the| +|||||data address when a|new phrase must be fetched. A|pitch value of|one is|;| +|7|same phrase to be repeated.|SEE| +|18-27||DWIDTH|This|is the data width|in phrases.|i.e. Daifor|the|next|lige 6£pixels can| +|be found|at DATA+8*DWIDTH|2225.|EEE||| +|1|28-37||IWIDTH|_..|This is the image width in phrases (must'b¢son zero). May be used:for|:| +|38-44|||INDEX|For images with|1 to 4 bits/pixel the top 7 to 4bits:of:the index provide|t| +|46|RMW|Flag to add object|to data|in|lineSuffer.| +|for intensity|and|the two coléux|vectors: 22:28.| +|i|The values are then signed offsets| +|GL|ERARS|Figo|make|logical colour zero|transparent”||| +|j|48|RELEASE|This|bit forces tke:@bject. Processor|to release thé:bus:between data|F| +|fetches.|This|shoutd|typicablj:be|set for low colour résglution objects| +|||(1 to 8 bits-pe#:pixel)|becailSé|there|is time for another bus master fo use|:| +||||||theshould bus be between.data held: by:the Objectfetches.|Processdf:Forditetcolour because resolutionthere|is very objectslittle the time bus|||H[| +|a|||between data fetekes:and other bus mastérs would|probably cause DRAM|||,|| +|||||page:faialts.thereby|sigwing the system. This bit may be set, however, in||| +|||Eb bit'sealed:bitmap objéets:|External|bussnasters, the refresh|||1| +|P||jechanism,|pd the|graphics|processor DMA mechanism|all have higher||||| +|thé|‘Hestipixel|to be displayed. This can be used to clip|hi| +|||49-54|| FIRSTPIX||“Phisfieldan‘#mage. identifiesThié significancééfthe|bits depends on the colour resolution of|'| +|||.|the object and whether the object|is scaled. The least significant|bit|is only|||A| +|HEEB|| significant for scaled object: where|the pixels are written into the line|||a| +|:|“Ee.| buffer one|at a tind:|The'reimaining|bits define the first pair of pixels|to be||| +|t|[es|Edisplayed.|In|1|bit’ per pixel mode|all five bits are significant,|In 2bits per||| +|{|||||Eee“|“tspuxel.field:displays mode|onlythe the whole top fourphrase. bits are significant. Writing zeroes to this||| +||| +|SCBITOBJScaled'BitMappedObiect| +|This objeét|displays|a scaled|bit|sapped object. The object must be on a 32 byte boundary|in 64 bit RAM.| +|Scaled bitmaps:will|not display properly in 24-bit RGB mode. The first 128 bits are identical to the bit| +|||mapped object|#xsépt|that TYPE isong. An extra phrase|is appended|to the object.| +|Bits|Field|Description|;| +|||0-7|HSCALE|Te his eight bit field contains a three bit integer part and|a|five bit fractional| +|buffer for each source pixel.|||:| +|o,|||part. The number determines how many pixels|are written into the line| +||}|8-15|||VSCALE|This eight bit field contains a three bit integer part and|a|five bit fractional||| +|“|||||||part. The number determines how many display lines are drawn for each|||.| +|||aspect|ratio.| +|||||| source line. This value equals HSCALE for an object to maintain|its|*| +|© 1992-95 Atari Corp.|Confidential Information 7E® Property of|Atari Corporation|June|7, 1995| + +**----- End of picture text -----**
+ + +**==> picture [2 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+.
**----- End of picture text -----**
+ + +**==> picture [554 x 357] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||| +|---|---|---|---|---|---|---|---| +|Jaguar Software Reference Manual|-|Version|2.4| +|Page|18|This eight bit field contains a three bit integer part anda|five bit fractional|1| +|16-23|||[REMAINDER]| +|part. The number determines how many display|lines are left to be drawn||| +|from the current source line. After each display line is drawn this value is|7| +|decremented by one. If it becomes negative then VSCALE is added to the||| +|;| +|remainder until|it becomes positive. HEIGHT|is decremented every|time| +|VSCALE|is added to the remainder. The new. REMAINDER|is written||| +|back to the object. This value should be iniulized|t6the.same|value as|‘| +|| VSCALE to produce a perfectly scaled fist line.|ccc| +|aes||Unused, write zeroes.|He|EE| +|epuoss|@iephicsProvescoropect|=|8|,| +|This object interrupts the graphics processor, which may act on behalf the Object Processét.|Phe|Object )| +|Processor resumes when the graphics processor writes to the OBF|3bject|Processor Flag) registefe2| +|Bits|Field|Description| +|| memory mappéa.in the object|cade registers OBI0-3], Sathe GPU can use||| +|||3-63|||DATA|These bits|may beasedby-the|GPU interrupt serviee:routine. They are,|!| +|i|||| them as data oea5 a pointer{o'additional them as data oea5 a pointer{o'additional as data oea5 a pointer{o'additional oea5 a pointer{o'additional a pointer{o'additional pointer{o'additional{o'additional|parameters.||| +|Execution continues with the object in the next phrase: Fhe continues with the object in the next phrase: Fhe with the object in the next phrase: Fhe the object in the next phrase: Fhe object in the next phrase: Fhe in the next phrase: Fhe the next phrase: Fhe next phrase: Fhe phrase: Fhe Fhe|GPU may set may set set|or|léar the (memory mapped) the (memory mapped) (memory mapped) mapped)| +|Object Processor flag and this can be used to flag and this can be used to and this can be used to this can be used to can be used to be used to used to to|redirect|the|Object Processor using:the following object. Processor using:the following object. using:the following object. following object. object.| + +**----- End of picture text -----**
+ + +**==> picture [519 x 348] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||| +|---|---|---|---|---|---|---|---| +|||| them as data oea5 a pointer{o'additional them as data oea5 a pointer{o'additional as data oea5 a pointer{o'additional oea5 a pointer{o'additional a pointer{o'additional pointer{o'additional{o'additional|parameters.||| +|Execution continues with the object in the next phrase: Fhe continues with the object in the next phrase: Fhe with the object in the next phrase: Fhe the object in the next phrase: Fhe object in the next phrase: Fhe in the next phrase: Fhe the next phrase: Fhe next phrase: Fhe phrase: Fhe Fhe|GPU may set may set set|or|léar the (memory mapped) the (memory mapped) (memory mapped) mapped)| +|Object Processor flag and this can be used to flag and this can be used to and this can be used to this can be used to can be used to be used to used to to|redirect|the|Object Processor using:the following object. Processor using:the following object. using:the following object. following object. object.| +|.| +|This object directs object processing either to the:LENK object directs object processing either to the:LENK directs object processing either to the:LENK object processing either to the:LENK processing either to the:LENK either to the:LENK the:LENK|addeess|or to the object in the following phrase. to the object in the following phrase. the object in the following phrase. object in the following phrase. in the following phrase. the following phrase. following phrase. phrase.| +|Bits|Field|Description| +|Branch object|is type|three|Hae||| +|3.13|WHst|goHdition|is used to determine where|to continue|||!| +|14-16|CC|eecea These bits specify’| +|||||OFprotessing:|a| +|||||||"2|Branch|to LINK if YPOS == VC or YPOS == 7FF|;||| +|eee||1|"Bratchto LINK if|YPOS > VC|po| +|saOE|3|Branchi#é|LINK|if Object Processor flag is set| +|te|CEH| 4|Branch to LINK if on second half of display line|;| +|17-23|||uatised|ieee| +|94-42|||LINK Gees.|Thig defines|the address of the next object if the branch|is taken. The|j| +|EE|address|is defined as described|for the bit mapped object.|;i|4|| +|unused|BeLat| + +**----- End of picture text -----**
+ + +. This object directs object processing either to the:LENK object directs object processing either to the:LENK directs object processing either to the:LENK object processing either to the:LENK processing either to the:LENK either to the:LENK the:LENK addeess or to the object in the following phrase. to the object in the following phrase. the object in the following phrase. object in the following phrase. in the following phrase. the following phrase. following phrase. phrase. + +d © 1992-95 Atari Corp. Confidential Information JPR Property ofAtari Corporation + +June7,1995 + +4 + +Jaguar Software Reference Manual - Verston 24 + +Page {9 + +é : A : ! + +j 1 j 1 + +' + +## STOPOBJ StopObiectt + +This object stops object processing and interrupts the host. + +Bits Field Description . TYPE Stop object is type four cesttitin. . 3 INT FLAG When set, CPU stop object interrupts areiénablediies. 4-63 | DATA These bits may be used by the CPU inté#yupt service'toutine.They are memory mapped so the CPU can use thé as data or as a'poutiier to additional parameters. cece epee + +© 1992-95 Atari Corp. + +Confidential Information TER Property ofAtari Corporation + +June 7, 1995 + +‘ % . 4 4 ' E : | ' | 4 : + +Page 20 + +| 4 " : : + +**==> picture [496 x 727] intentionally omitted <==** + +**----- Start of picture text -----**
+Jaguar Software Reference Manual - Version 2.4
20

.
Object [Processor][ Quick] s [ Reference]
’ (inverted fields are modifed by the Object Processor)
~SS Bitmap Object
TYPE = 0 sgitiigies,
Pathe beth her beech bo oo
DATA Pointer (Bits 23-3) LINK Pointer (Bits 23-3) HESCHT ypos 28h. [TYPE
64 56 48 40 32 24 “PE. B Eo
Leer berber beer reebercbeer berber
Unused FIRSTPIX INDEX WIDTH SWIDTHE::. EEEEPOS
) "
RELEASE REFLECT Ee “pred DEPTH
TRANSPARENT RMW we OEE
Scaled Bititiap Object oo
(Third phrase only. Phrases.ohe/and two are ihe'Sarnéias a Bitmap Object)
Phere bo eo Soe
___ GPU Interrupt Object”
64 56 48 nn ne! 16 8 0
Lert eer berrbertrerberebrer berber berber berth
|, Branch Object
64 Shite, 48 a0 ee, 3 2 "¢ ‘ 4
Lert rebel eet errberrteer rerbreebeertrerbeerbrecbeeor
BEL Unused SEE Link Pointer (Bits 21-3) Unused | CC YPOS TYPE}
Es EE Stop Object
64 a ee 32 24 16 8 0
Pee eo hee Eo oo eee eee
DATA TYPE
Enable Stop Object Interrupts
© 1992-95 Atari Corp. Confidential Information PER Property of Atari Corporation June 7, 1995
**----- End of picture text -----**
+ + +3 + +June 7, 1995 + +Page 21 + +| | + +7 , \ a \ i i | i q ‘ + +a Jaguar Software Reference Manual - Version 2.4 je Description of Object ProcessorPixelpath The following two diagrams show where the object data path fits into the Tom Chip. All the diagrams that follow are drastically simplified for clarity. + +**==> picture [517 x 599] intentionally omitted <==** + +**----- Start of picture text -----**
+| : Object Line Pixels, Videos| |
: Processor | > | Buffer Generator... Timing “250%
—| Interface SE | HERES Beetle
Control: Memory : ve Graphiegii3:... . tos
)
Jaguar Chip Block Diageain,._
The processor bus is a 64-bit data, 24-bit address #iujti-master bus. The bis, master can change on a cycle by
ig, CYC}e basis with no overhead. The external CPU caniréls this bus when it'ig:the bus master. The 10 bus is a 16
Hu = data 16 address bus used for reading and writing to internal: memory and registers. The bus interface logic and
memory controller allows transfers offany: WHE.(one to eight bytes) to be made to any width of external
memory. The bus interface accommodates 16'ang:32-bit microprocessors: The bus interface also generates a
, multiplexed address for dynamic RAMs. The miilfiplexed.address 18:4 function of memory width and number
ofcolumns. The memory controllérdaly performs RAS: cveles, when the row address changes. This allows
contiguous regions of memory to be 'degessed riiech faster. 8,
The line buffer is a bridge between two asynchronous parts of fixe chip. On one side are the processors and
[In][ fact][ there] [are][ two][ line][ buffers.][ While]
memory. On the other Sidé:are the video timing and [pixel][ genggators.]
one is written into by the €)bjéet. Processor, the othé£ is:zead BY the pixel logic. Each line buffer is a small
low words.
360x32 RAM with independentwrite strobes for thehighand
Each location in the liné buffer may cantain one 24-bit pixel or two 16-bit pixe's.
oo ; oo Object Data ; ‘
. Address “Object >| Write back Path ‘ Re
Data
Object Processor Biock Diagram
© 1992-95 Atari Corp. Confidential Information “JER Property ofAtari Corporation June 7, 7, 1995
**----- End of picture text -----**
+ + +' + +June 7, 7, 1995 + +' a = | ‘ 4 + +1 j j j 1 : { ' + +The Object Processor reads object headers and image data and writes back modified headers. The write back logic normally increases the data address by the data width. If the object is scaled then the data address is increased by a multiple of the data width and the vertical remainder is modified. The object data contains either physical colours in the case of 16 and 24 bits-per-pixel objects or logical colours in the case of 1,2,4 and 8 bits-per-pixel objects. Logical colours are translated into physical colours by the colour look up table or CLUT. ee HERI SHEE Deeata ,|: Latch Multiplexers CLUT i Latch Line ERE, fa pBaffer The Object Processor fetches data one phrase at 4 tiie until the immape data, for that header, is exhausted or until the line buffer address (X co-ordinate) has béé@me invalid. The[befiaviour][ of][ the][object][data][ path] depends on the colour resolution of the object (bits=peespixel) and on whetheethe object is scaled. In 24 bits-per-pixel mode each phrase contains two pixels (16:bits unused per piiase). The multiplexers select each in turn and one 24-bit pixel is weittes anio: the, line buifer:pet:clock cycle; The CLUT is bypassed for 24 In 16 bits-per-pixel mode each phrase contains four pivele! The multiplexers select two pixels at a time and two pixels are written into the line buffereach clegk cycle. The GLUT is bypassed for 16 bits-per-pixel objects. TE whi OE In 1, 2,4 and 8 bits-per-pixel modes each phrase contains 64, 32, 16 and 8 pixels respectively. The multiplexerstop bits from select the top two bits pixelsiat of tbe: patettea time. offset In 1. 2 (a and field 4bit,Hritiemodes:obyet tae header). pixel is The made two up eight to eight bit values bits by are taking used the as addresses to a pair of identical CLUTs yielding two sixteen bit physical pixels which are written into the line buffer every cycle. 3" Oe If an object is, scaled the Object Processor deais.swith one pixel at a time not pairs. Scaling is achieved by incrementing the line: buffer address independeritty:af-the counter controlling the multiplexer. For instance if the line buffer address igincremented twice as ofteii'as the counter then the image will be twice as wide. There aré:tWo line buffers A'& BeWhile A is written by the Object Processor B is being read by the pixel logic. At the:start of the next display tine the buffers swap over So A is displayed and B is written. This swap[all][ the][ signals][ attached][to][ the][ line][ buffers.] is effectively ‘achieved by multiplexéts[On] + +**==> picture [3 x 34] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +i" © 1992-95 Atari Corp. + +Confidential Information JER Property ofAtari Corporation + +June7,1995 + +| + +. + +4 + +ee = Jaguar Software Reference Manual - Version 2.4 Page 23 Mi =The above description is complicated by the following: ° : oe If a pair of pixels must be written to an odd location in the line buffer they must be swapped and one a pixel delayed. 4 . The line buffer address decrements if the object is reflected. | j . The colour to be written into the line buffer can be added to the previgiis Valéinstead. : ° One colour may be used as transparent and is not written into the ike buffer. OEE ee | : . The line buffers also appear as memory to the rest of the system. es, OE ; The pixel data path is shown in the following diagram. All the logic in this bax Fins from a different ¢idck to s the previous logic, this is the video clock. . EEE He ‘ ne Latch | 2:1 muxa CRY to ol com ao RGB In 24 bits-per-pixel mode the line buffer is read.it the vided clock frequency. The line buffer data is simply latched and presented at the pins as réd: green aid blue data bits: In CRY mode the line buffer is read at half the video clock frequency. Each read yields two 16-bit CRY values. These are multipiéXedinto the CRY to RGB:conversign:logic during succeeding video clock cycles. In this logic the more sign#figaitt.cight bits specify‘the: picture [1 x 16] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. Confidential Information “FER Property ofAtari Corporation + +June 7, 1995 + +Page 24 + +Jaguar Software Reference Manual - Version 2.4 + +i — F j + +The above picture is slightly complicated by the following: + +j = } | | - | 4 1 4 = ! ] | 4 |g . | » aa : + +. . + +| + +- ° The least significant bit in CRY and RGB16 modes can be sacrificed (treated as zero) and used to control an external video switch through the incrust output pin. + +- . In CRY and RGB16 modes a background colour may be written into the line buffer after it has been read. HEHE: + +- . In CRY and RGB16 modes the least significant bit may be used to determine wheitier the mode is CRY or RGB16. This could be used to drop a decompressed RGB pitiure into a CRYBicture without having to do a RGB to CRY conversion. Hees ERE, + +Theare average refresh frequency is defined by the REFRATEbits iit thé:MEMCON2 register: Refiesh-<¥jcles grouped together in order to lessen the impact on system perforsiazice:"However they cannot'bé performed in very large numbers or they would create “dead spots” in whichis processitig. was possible. This could disrupt the display or sound production. TEE WEEE Jaguarrefresh uses a counter to accumulate a count of refresh-cycles.When this counter reachesieight then eight cycles are done and the counter is set to zefQ.7° 22808 i.. WEEE Refresh cycles are also invoked when the Object Processor reaches thésend of the object list. After the Object Processor executes a STOP object JAGUAR perfatns as many refreshi¢¥cles as are necessary to decrement the refresh counter to zero. an WEEDS, This mechanism guarantees that the minimum refresh rate i8:maintained withdul interrupting the Object Processor and without creating "dead:spots':of tore than afew tpicroseconds.::." + +**==> picture [3 x 19] intentionally omitted <==** + +**----- Start of picture text -----**
+q
**----- End of picture text -----**
+ + +**==> picture [14 x 19] intentionally omitted <==** + +**----- Start of picture text -----**
+ae
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. Confidential Information FR Property ofAtari Corporation + +June 7, 1995 + +Page 25 + +| Jaguar Software Reference Manual - Version 2.4 + +’ :: i. : + +if + +) aL ee Jaguar produces a video output using eight digital bits each for red, green and blue. This allows each output to have two hundred and fifty-six intensity levels, and is enough to allow smopth shading from ofie:éelour to another. This twenty-four bit scheme is known as frue-colour. THEE “SHEE Jaguar can produce a display based on true colour pixels stored in memory in long srbxds, with eight bis 2 unused, and this is known as true colour mode. However, these:thizty-two bit pixels ‘aredarge and so consume a lot of memory; and they also consumea iot of memory bandwidilite fetch from RAM ‘far displays True-colour mode is therefore unattractive for general use, as mast fniages do not need its range of colours, and it is desirable to avoid the detrimental effects it has on perfgrmiance. Trug:colour mode is therefore a special case, and when it is used only true-colour images may be displayed. “28855. In normal operation, the Jaguar display system is aged on Siateen-bit pixels. Images iit Riemory may be[four][ or][ eight][ bit][ logical][célours.][ These][ logical] stored either as sixteen bit pixels, or may be stored:[as][ one, twa;] colours are used as indices into a Palette or Colgut-Look-Up-Tabie (LUT). which contains their corresponding sixteen-bit physical colours. cea CHEER if Sixteen-bit pixels may be stored as Six bits of greets; and five bits each forsediand blue, but this no jonger[red][ and] allows smooth shading. There is therefore.an additionaé scheme, known as the[‘CRY][ scheme][ (cyan.] intensity, see below) which still alloys smecosls intensity shadinige-T his CRY¥:s¢heme is now discussed in qecavGuouScheme a | coiivaiud Snatiniy Mequirements’ “ya (2 — The CRY scheme was derived principally to meet the requirements of Gouraud Shading. This is a technique that models the appearance of a lit curved:surface from a set of polygons. The problem the technique helps to overcome is that if the intensity due to afight:squrce is calculated for each polygon and the polygon is painted in that colou#; them'the polygons that make up:{hat:surface are each clearly visible. The technique of Goutaud’shading helps avoid this by calculating the intensity at each vertex, and ther each polygon edge, and hence along each scan line that makes up the display. If linearlyonly whitéafiterpolating fight sources along are cénsidered, then the only variation is one of luminous intensity, and not one of colour. It is:tbesefore attractive to‘have a colour scheme that contains an intensity vector, as the Gouraud shading calcufatioais.have then only {o:be performed for one value, rather than the three values that would have to be calculated3a true colouf scheme. As there is general agreement tiuit eight bits is enough to give smooth intensity shading (and it is a round | 4, number), it was therefore necessary to come up with. a scheme that allowed the colour to be expressed in eight a its. + +© 1992-95 Atari Corp. Confidential Information JER Property ofAtari Corporation + +June 7, 1995 + +Page 26 + +Jaguar Software Reference Manual - Version 2.4 rrtsr~—~—~«s—C“‘CCSCOC;#COUOC;i«i(;(C«CCz2#z+z+#;C + +§ . + +LL + +| : | : | j 4 | a 4 4 | 4 | 4 | , , _ 1 3 a | a j ’ | 3 ' _ _ i + +i + +**==> picture [483 x 215] intentionally omitted <==** + +**----- Start of picture text -----**
+The colour space to be modelled may be considered as the RGB WHITE
cube shown, where the lowest vertex represents black, and the
highest white. The three edges running out from black are the three
orthogonal vectors red, green and blue. The sum of these three ahs,
vectors can describe any point in the cube. The three lower vertices EE
therefore represent fully saturated red, green and blue, and the three Be Reece cree
higher ones yellow, cyan and magenta. ees PB,
BLUE Me. A GREEN OE gl BED
This colour space model is only one of many ways of considering PARQ f A
what the human brain ‘sees’, but it has the advantage of modelling:::. Ba, * "A Fee
the display system used by colour monitors, and of being WEEE TOR BEARIG ia?
mathematically simple. ee “SEU HEE?
Physical requirements .——rrt~tr—.._—=«iz ECiCCSC«sCi«sCséC(‘éséréel
**----- End of picture text -----**
+ + +The intensity vector can be considered as that component cf thé:sum of the red, green ané blue vectors thai lies along the diagonal of the RGB cube from blak[to][white.] “FH#S s8:not the ‘true! intensity, which is 2 weighted sum of red, green, and blue; but it bearS:é linear relationShig:tesit when the colour is not changed. It is necessary to come up with a scheme to encodé'4hé.colour value in the Semaining eight bits of the pixel. The following requirements were made on this schemieiiis.. ate 1. All two hundred and fifty-sixs#auss sBould represent valid, and diffeest, colours. 2. The colours should be well: spread outaérégs the colour space 222 2" 3. Colours should be able to be snixed by lingatly averaging their colour values. 4. An intensity value of zero muistbe black!” Ee As the remaining colour.space without intensity 1s two-dimensional, two vectors are required to represent a point in it. Ans, theta schepie was discarded as it would not meetitequirement two, and so a scheme based on two x, y vectors was choses... + HEE HEEB To meet requirement one’ the two'¥esiors must describe a point on a square area. As no existing colour space model is square when viéWed along the:inlensity axis, it was necessary to come up with a new one. The approach:chasen, after considerable expetitientation, was to take the view along the intensity axis of the RGBcube; which issbexagon, and distort it inté#:Square. This does not quite meet requirement 3, but is + +**==> picture [4 x 27] intentionally omitted <==** + +**----- Start of picture text -----**
+]
**----- End of picture text -----**
+ + +i( + +© 1992-95 Atari Corp. + +Confidential Information “JER Property ofAtari Corporation + +June 7, 1995 + +Jaguar Software Reference Manual - Version 2.4 + +Page 27 . + +; | : : : ' i 4 : : i i | | | il ; + +The colour mapping scheme chosen is based on defining 256 points on the upper surface of the RGB cube. + +In the figure shown, the hexagon GREEN ee corresponds to a view looking down onto Eo evan en GREEN vELLOW the RGB cube. This hexagon is distorted eee Gace onto a square, whose X and Y co-ordinates Seow eee are four-bit values. This defines 256 colour TEE ee { warns | levels. The choice of green as the primary Te OEE[ed] colour that lies on the middle of one face . lees eae eee was made after observing the effects of the | gue HEEB. 4 | oan fue three possible mappings, and corresponds Henge BS a ee with the expected result, as the human eye AOR EES siue oa a AED is least able to distinguish shades of green. MAGENTA WHEE y Note that in each of the three areas defined en on the hexagon and square, one of red, eee EE green or blue is at full intensity, and the others vary At the gentte. (white) they are all at'£ul intensity. The intensity scale for any given colour lies along the:fine between biick:-and the point on the top surface of the cube defined in the colour table. HEED OED _, Colours may be averaged by taking the average of tiigiz.eight-bit intensity: value, and each of the four-bit X ee) and Y components of the colour value. This will not pitédiive exactly the saffe'colour as the point midway between them in the RGB cube, but.willbe Chose to it. “2 ae, Ene This is a summary of the pros andtons of theCRY scheme: OEE Boe Advantages of CRY cm Pees : ¢ Smooth intensity shading from ‘T6sbit pixels” — ¢ Better matched to the capabilities of the human eye than 51655 bit RGB schemes [ * Suitable for efficiefifiGouraud shading . Ge ' Disadvantages Ee Be ee j « Steps are visible in'gtooth charige€iof saturation or hue + Translation from RGB to CRYis teestéaightforward } RGBIOCRY Conversion = | | The best technique is to calculate the intensity value, which is the largest of red, green and blue; and from this the ideal ROM eatry for that colour;[By][ scaling][ the][ RGB][ values][ by][ 255][/][ intensity.][ This can][ then][ be][ matched] to the actual ROM tables to find the'i€arest match. A quick way of doing this is by a lookup table. It is not necessary for this tohavie..2* entries;if turns out that taking the top 5 bits of each of the red, green and blue values (rounding where:appropriate}‘and using a 32768 element lookup table is adequate. + +4 + +© 1992-95 Atari Corp. + +Confidential Information JPR Property ofAtari Corporation + +June 7, 1995 + +HHS : ' : : s a. g g 4 Pl = & ' | | _ | 4 | 4 3 4 , 4 fr 4 _ a ; ] | { ; 1jj | q q a June7,1995 § + +**==> picture [590 x 733] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +|Jaguar Software Reference Manual -|Version 2.4|i| +|mamPage 28|eos|si: a| +|The eight-bit colour value|is used to index a look-up table of modifier values for each of red green and blue;| +|which is multiplied by the intensity value te give the output level for each drive to the display. The look-up| +|tables|are:| +|C0|ge|@e..|©| +|REE|34.34a|«34|«34|34|34|34|34|34.|34|34|34|« SREEBEPORG eee tA0| +|62|68|68|68|68|68|68|68|68|68|68|68|G#i°43|2. EEE,| +|230|Olen Is.| +|192|102|102|102|102|102|102|102|102|102|102|95|Te|[47]| +|535|235|135|135|135|135|235|2135|235|23°|130|104|7HES2|26|0 MERE.| +|169|169|169|169|169.169|169|169|169|170|141|113|858886|28|0°|eae| +|0|HEE| +|563|203|293|203|203|203|253|205|503|183|153|122|91 Bee.|[20]| +|537|237|237|237|237|237|237|237|530197|164|132|98|GHuEs2.|0|HE| +|555|255|255|255|255|255|255|255|247|214|162,148|115|62|Hig|7|HHS|:| +|555|255|255|255|255|255|255|255|225|235|2682273|143|112|STepsei.|fee|'| +|555|255|255|255|265|255|285|255|25°|255|227498270|142|113|“BB|aneee|:| +|171|145|T19|HEE|:| +|955|255|255|255|255|255|255|255|955|255|24982285087)| +|955|255|255|255|255|255|255|255|955|255|2556968|BeeEe00|177|153|s| +|955|255|255|255|255|255|255|255|255|255|298/255|257N2Se..208|187|a.| +|355|255|255|255|255|255|255|255|255|255|255|255|255|2553240|221|g| +|555|255|255|255|255|255|255|255|253.2859|255|255|255|255°|2552255|g| +|GREEN|0|«17)«34|«SE|EB|8S|102|115|P86 ES88RO|187|204|22)|2 382255.| +|6|19|38|5S?|77|96|215|13 GEES 4|1795492211|231|250|255|285|4| +|255|255|255|z55|Pl| +|9|21|43|64|86|107|129|1588472|193|2152286,| +|6|23|47|Pi|95|119|142|1662490|214|238|8859855|255|255|255|=| +|255|255|255|&| +|6|26|52|78|164|2130|156|1638288|234|255|25358285,| +|5|26|56|85|123|142|270|199|#3165255|255|255|PH5255|255|255|'| +|D|30)|BL|GL|122|253|183|214|248,855,255|255|2580855|255|255| +|0|32|65|98|132|164,G1REeSo|255|HSSE255|258|2558255|255|255| +|»|35|6S|G8|132|168|52|[PS,][ 255]|[255]|[2582][ 5%]|[2][ B5EBES]|[255]|[255]| +||||| +|D|390|61|91|122|£83"|283|BHB244|255|FRG|285:|25122 55|255|255|_| +|5|28|56|85|113|Be2|ive|19852 26..255|255°|eshERSS|255|255|255| +|G ORE|2582255|255|255|255|255|255|||4| +|55|26293|5247|7871|16495|Pig@ed42RG|256|182216G28S0|2EEH236|255|255|255|255|255|||4| +|23€|255|255|255|255|3| +|5|21|43|64|86|10%EtZ9|“862172|193 QRS.| +|6.19|«38|67|77|96|225|134|154|£73|V6RE211|231|250|255|255|4| +|0|i?|34|aSi|€8|€5|192|229|736|153|1965187|204|221|238|255|,| +|RISE|255|255|255 72§8:.255|255|252|255|255|255|285° 255|255|255|255|255|fr| +|955|255|255|285.865|255|255|255|Pesne55e29|255|255|255|240|221|_| +||| +|'|355|255|255|28beegRUeSS|255|255|PRBEBSS|TSS|255|252|220|208|18)|a| +|755|255|255|BHP 2558|258.255|259|555|255|255|248|224|200|177|153| +|255|255|255|285|255|2882885255|255|255|249|223|197|2171|145|119|;| +|255|255|255|255|255|2e5'ReRH255|255|255|227|198|170|141|113|65| +|255|235|204|173|143|112|81|Si|]| +|2552531 25H255.25525H.295255|255259|259355|2552582985BeSoR47|214|181|1468|115|82|49|17||| +|2898237|280231|237|537|237|237830|197|164|131|9|65|32|3|{| +|253|203|203°2G%:203|503|202|203|203|183|153|122|9!|62|30|9|;| +|£BS|169|169|166:469..169|169|169|169|170|141|113|35|56|26|0| +|Bahia35|135|135|138935|135|135|735|135|136|104|78|52|26|9| +|10202|102|102|1627282102|102|102|102|102|95|7i|47|23|0|1jj| +|||68|68.68|68|68|“BH€8|EF|6s|68:|«(068|«O68:«CO64|«C43:|21||| +|34|SGea4,|34|34|fae|[24]|34|34|34|34|34|34|34|19|G| +|GO|0600|HGH|OO|eo|8|oC|0|5|6|0|GC|6|&|q| +|q| +|a| +|i| +||| +|ii|©|1992.95 Atari Corp.|Confidential Information JPR Property ofAtari Corporation|June7,1995|§| + +**----- End of picture text -----**
+ + +: Jaguar Software Reference Manual - Version 2.4 ’ Graphics Processor Subsystem + +Page 29 + +: + +| | i + +| + +| + +## Graphics Processor Subsystem + +**==> picture [1 x 16] intentionally omitted <==** + +**----- Start of picture text -----**
+,
**----- End of picture text -----**
+ + +**==> picture [507 x 530] intentionally omitted <==** + +**----- Start of picture text -----**
+The Graphics Subsystem of Jaguar is a self-contained processing unit, whose view of the external system
processor and memory are controlled by a separate memory controller, which.is:1i0# art, the graphics system.
| The graphics subsystem transfers data to or from external memory by becoming the masigy S£the co-
| processor bus. This bus has a 64-bit (phrase) data path, and a 24-bit address; with byte resofution:cThis bus
| has multiple masters, and ownership of it is gained by a bus request/acknowlédge system, which 'ls:prioritised,
| i.e. ownership can be lost during a request (but not during a memory cycle). FHegraphics subsysten¥clually
| contains two bus masters, the Graphics Processor and the Blitter. OPER “HE
‘ The graphics subsystem also acts as a slave on the IO bus. Thisbiig.normally has a 16-bit Gata path, and!
f allows external processors to access memory and registers within:the Braphics subsystem. As:the data path
| within the graphics subsystem is 32-bit, all reads and writes must be [pales,] sees
j The memory within the Graphics Subsystem appears to be part‘of the general séiehine address space, both to
j the GPU and Blitter, and to external processors. The advantage to the GPU of havinglocal memory is both
that it is faster, and that it does not require ownershipi'd? tHe:system bus to be accessédi%,..
This diagram shows the architecture and data paths of the graphics'gubsystem: Oe
16/32-bit data 10 Bus. [75 Pe
Bus Slave Transfers CPU aédess to GPU oo
ocd GPU Bus Controller .
aaa _ | 32-bit-diita Local BUS :
Dual-port 32-bitier._| Paces eeeeececes Blitter |
Register File al; ice cece Registers
paca _ a . GPU Gateway
8 — to main bus
| Eo ' 64-bit data Coprocessor bus
ONEEE DG be nee Bus Master Transfers
**----- End of picture text -----**
+ + +a ©1992-95 Atari Corp. Confidential Information FER Property ofAtari Corporation June 7, 1995 + +Jaguar Software Reference Manual - Version 2.4 + +Page 30 + +j + +| + +| ' 2 & ; = § , = fog + +: | | i: | + +bo + +: + +a -_ June 7, 1995 1 + +| | + +si + +|TheGraphics sub-systemaddressspacecontains thefollowinglocations:
-FonIO GRLAGS___——[RW
TGPUflags
SN
ee ee|||||| +|---|---|---|---|---|---| +|rFO2I0c[GEND. |WGPUbig/ littleendian:Pee rR
PRW__[ GPO operation contol ites a —
FO211C |G_DIVCTRL
|W
|GPUdivisionmethod
CHEE
ea|||||| +|Ai_CLIP
Ww
BlitterAlchippingsize...
rrO220C[ALPIXEL. RW BlitterAlpixelpointer “228...
'F02210 _|Al_STEP
|W
Blitter.Al step
io|||||||| +||F0221C
FALING.
LW
BitterAlpixel'peisiterincrement
Fro220 [ALFING
«LW
liver Adpixel pointer incrementfraction||||||| +|F02234 |A2_STEP
"CTW
BIB
AQstep
|FO223C |BLCOUNT
“Ww
| Blitterloopieaunters
£02240
Blitter source data|||||
||| +|F02258
| B.SRCZ1 22:7228e.|W
Blitter sourceZdata 1|||||| +|02270 ztBING:
iW
ce|:Blitterintensityincrement||||||| +|roe [BsTOP gCTW
Blittercollisionstopcontro}
Blitterintensity register3|||||| +|F02284
Blitterintensity register
|
rro2ss jBI
EW
Blitterintensity register0|||||| +|B_ZO
W
BlitterZregister0
=03000[GRAM
RW___[LocalRAMbase|||||| + + + +© 1992-95 Atari Corp. Confidential Information “JER Property ofAtari Corporation + +Jaguar Software Reference Manual - Version 2.4 + +Page 31 + +| + +| + +he i These locations may be accessed by all processors except the GPU for read or write as appropriate at the | i above addresses, where they appear to the system as 16-bit memory. As they are all actually 32-bits, transfers 7 should always be performed in pairs, in the order low address then high address. + +In addition, for high-speed write operations by 32-bit or 64-bit bus masters (especially for blit transfers), they may be written to as 32-bit locations at an offset of plus 8000 hex from the addresses above. They are not readable at these addresses. eee + +The GPU addresses them all directly as 32-bit locations in 32-bit internal faemory, and they are not accessibie to the GPU at the plus 8000 hex offset. ee OHEEEEn + +a ©1992-95 Atari Corp. Confidential Information oR Property ofAtari Corporation June 7, 1995 + +Page 33 + +| + +| + +, + +. + +. : : : i + +**==> picture [206 x 21] intentionally omitted <==** + +**----- Start of picture text -----**
+Jaguar Software Reference Manual - Version 2.4
**----- End of picture text -----**
+ + +**==> picture [529 x 52] intentionally omitted <==** + +**----- Start of picture text -----**
+| GraphicsProcessom##§
This section describes the Jaguar Graphics Processor (GPU).
**----- End of picture text -----**
+ + +**==> picture [475 x 337] intentionally omitted <==** + +**----- Start of picture text -----**
+WalieeGphesProcesso?
The Graphics Processor (called here the GPU - Graphics Processor Unit) is 4 simpie, very fast, mieeds, :
processor. It is intended for performing the functions associated with generating Sraphics, such as thse.
dimensional modelling, shading, fast animation, and unpacking compressed images =... Hee
The graphics processor corresponds to the accepted notion of ‘& RISC Processor (Reduced tiistraction Set
Computer). This means that: Ee SEES
° most instructions execute in one tick fe OEE
° all computational instructions involve registers OEP COHERERE
° memory transfers are performed by load/store. instructions OPEEEE
. snstructions are of a simple fixed format,.withfew addressing modes “HERE
. there is a wealth of registers, and local.fiigh-speed tnenioty... WHE
It has several features to give high computational pawers, including: &s,
° ‘Highly pipe-tined architecture _ a
° one instruction per tick peak.tHroughput OE EES
- internal program and dataRAM' oa |
. register score-boarding #27 SHEE WHEE EEE
° ALU includes barrel shifter:and parallel stiultiplier!:: 5.
. systolic matrix multiplication” - ees
. fast hardware divide unit eae
. high-speed intégrupt response, including video object #iterrupts
**----- End of picture text -----**
+ + +oe Co j The GPU.is progtammed in the same way‘a8 abyeather micro-processor. It has a full instruction set with a broad rangeofarithmetic:instructions, including add, subtract, multiply and divide; Boolean instructions, and | bit-wis€ 3nstructions. Ithas:@:range of instructions for loading and storing values in memory, with either 7 register:indirect, register indirect plus register offset, or register indirect plus immediate offset addressing modes. It148:jump relative and'absolute instructions, both of which may be made dependent on combinations of the zero, carry:and negative flags.'There are also some more specialist instructions suited to computing matrix multipliés;‘atid.some useful aids to floating-point calculations. The GPU is a full 32-bitpideessotin that all internal data paths are 32-bits wide, and all arithmetic instructions (except multipty}:perform 32-bit computations. The instructions are 16-bits wide. {&@ TheIt also GPU has has 1K sixty-four of local high-speed internal 32-bit 32-bit general RAM, purpose which is registers, where its of instruwhi **c** tionsh thirty-t and **wo** are visiblerking data **a** tre o **n** eormally time. stored. It also has access to external memory via the 64-bit co-processor bus, and can perform byte, word, long-word and phrase data transfers on this bus. It can also execute its instructions from external RAM. © 1992-95 Atari Corp. Confidential InformationTER Property ofAtari Corporation June 7, 1995 + +**==> picture [2 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +June 7, 1995 + +. | CG + +as ' : | : S j i | ' 4 ] 4 | @ ; 4 : + +| a | b ' 2 | & + +| + +Page 34 Jaguar Software Reference Manual - Version 2.4 Desgnphiosopty— cr The GPU is a RISC processor, normally executing one instruction per tick, and therefore capable of very high instruction throughput. The RISC versus CISC debate is a complex one, and will not be discussed here. The RISC approach was chosen for the GPU principally because it occupies less silicon.[—] The RISC approach leads to a processor design without micro-code, effectively the instrixition set is the micro-code, and most instructions execute in one tick. The advantage is thatinstructions‘a @xecuted quicker, but the disadvantage is that some operations require more instructions to execute. eee The GPU is also intended to perform rapid floating-point arithmetic. It has nd fisating-point instructigas.as such, but has some specific simple instructions that allow a limited precision floating-point library to be: capable of in excess of 1 MegaFlop. “eee “BEBE Eg HES The GPU is intended to be programmed in assembly language, ait HOt in a compiled languageias the'tisks it is intended to perform are simple repetitive operations, best writteHin assembly language. OEE + +The GPU design makes extensive use of pipe-liniig:i0 improve its.throughput. This meaits that although the GPU can achieve a peak rate of one instruction per tick, each instructionis actually executed over several ticks, but only spends one tick at each pipe-line Stage. It is important'to: understand this as it does have some significant consequences on GPU behaviour. HEE erecta For a typical instruction, such as ADD, the pipe-line stages:are: a + +**==> picture [475 x 94] intentionally omitted <==** + +**----- Start of picture text -----**
+2 read operands frou segisters OES “eee, OAC
4 write result back to register ee ee
In addition to these stages;.apre-fetch unit attempts to maintain’ small queue of unexecuted instructions, to
keep the instruction executiog-unit busy. i hte
**----- End of picture text -----**
+ + +i + +| + +© 1992-95 AtariCorp. + +Confidential Information “PO® Property of Atari Corporation + +June7,1995 + +Jaguar Software Reference Manual - Version 2.4 ¢. w Register Score-Boarding =«—«— + +Page 35 + +| | q { + +| q1 + +{ & | + +j + +— an instruction would read a register that is still in the process of being computed by the ALU. 7 an instruction would perform a conditional jump, or add or subtract with carry, before the flags have WN been set as the result of some arithmetic operation. i — an instruction would read a register that is being read from internal memory. + +The main side effect of the pipe-lined nature of GPU operation is the interaction of instructions at different stages of the pipe-line. They may affect the same operand, or the same piece of the hardware, and so a conflict can potentially arise. + +**==> picture [6 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+-
**----- End of picture text -----**
+ + +**==> picture [556 x 305] intentionally omitted <==** + +**----- Start of picture text -----**
+1 - Read Operands RAM a ae |
For instance, if the instruction after an ADD was'a second ADD of andthekvalue to the same register; then if
L.aa w oldthe two value ins( t heructions value were from just to before follow the first eachADD). other Fortunately,through the pipe-line,theGPU hardWate tén:the second detects this ADD erroneous would use the
condition and suspends execution untill the correct value is #éady..Clock cycles that occur during these hold-
The fiseve shows the alate Slow assacintasvenir dhe gpvemBeus au auitiuenc iusiruciion. THe wick Ones
correspond to a pipe-line stage, so thaf:when an:instructionis:atthe Read Operands stage, the previous
;
4 instruction is at the Compute Result stage, and the one beforé'that at the Write Back Result stage.
**----- End of picture text -----**
+ + +4 + +1. The RAM used within ‘the GPU for its registers has‘only two data ports, so if the instruction at stage three has to write:back to adifféient register from the two registers being read by the instruction at stage one, then a clash occurs. “HEE Es. + +2. The instruction at stage one of the pipedling:may need to read a value being computed by the ‘Stageinstructionthree. attagé-two,OEE but this value will'not be available until the instruction at stage two reaches + +The GPU: operates what is knowH aéa score-board to help the programmer avoid a whole class of these problems. This fags registers that wilf/alter once some operation has been completed, and will force program flow to wait if'aninstruction reads atagged register. This mechanism also applies to the flags, and will wait + +, + +j + +© 1992-95 Atari Corp. + +Confidential Information “7@® Property of Atari Corporation + +June 7, 1995 + +, + +i | n + +Page 36 Jaguar Software Reference Manual - Version 2.4 — anrelatively instructionslow, wouldthis can read cause a register thata significant is thedelay. target of a divide operation - as the divide unit is ’1.. 1 q2 —_ an instruction would read froma register that is waiting to be ioaded from slow external memory 5 (which takes a variable amount of time). q ee |,r,rmrtrtrt~CSCOCiCO;COCOCOCCitiCéiéC(C(itéiétCiés . The score-board unit also controls the writing back of computed values. The tegisters are a bakk Gf:dual-port : RAM, so it is not possible to read two register values simultaneously while Waiting to a third. OEE 4 If the register to be written back to is being read by the instruction currently at stage. of the pipe-line; GF if ’ one of the operands of that instruction does not involve a register,read, then the writé-backwill be concealed. | Otherwise, the instruction will be held up one cycle while the caitipisted value is written backi::.... fe 4 The score-board unit controls all operations that involve writing td fegisions,, and will also genefate await : Be state if the instruction that would have executed reads two registezs, neither: Of which is the target of the write. = Write-back data sources are: wee OEE - _ the result of an ALU computation _ seine... EEE 7 —_ the result of a divide operation (this occuig in parallel witty the ALU) HE . the data from an internal load operation’ OEE i y — the data from an external load operation “fos. OH e If two of these are to be written back simultaneously, execufion is always heid:ap for a tick. One technique that can be used to help avoid ait states from the’ score-board unit is to interleave two sets of calculations, i.e. ensure that conseciztive instructiags do not use the Sasiie:stegisters, but that instructions two BS cc Lmhm”rm™mr™mrm™~—~™”.CrC;sCO;C;OCO®#CNCCO(tét(iwizs | Pipe-lining also affects the éxecution of jump instru¢tions. The'tiinsfer of control does not occur until the instruction after the jump dustruction has been execiited:‘Phas ¢an be confusing, but helps to increase the ; overall instruction throughput.The safest technique is tofollow all jump instructions with a NOP (null 4 operation), but it is quite reasonable'te place almost any other instruction here - but see the notes below on ; program control flow. OEE Memoryinetinet The Graphi¢s Graphi¢s Processor is intended'to operate in parallel with the other processing elements in the Jaguar is intended'to operate in parallel with the other processing elements in the Jaguar intended'to operate in parallel with the other processing elements in the Jaguar operate in parallel with the other processing elements in the Jaguar in parallel with the other processing elements in the Jaguar with the other processing elements in the Jaguar the other processing elements in the Jaguar other processing elements in the Jaguar processing elements in the Jaguar in the Jaguar the Jaguar Jaguar system. In Grdet:to do this, In Grdet:to do this, Grdet:to do this, do this, this, a well-behaved GPU program should only make occasional use of the main well-behaved GPU program should only make occasional use of the main GPU program should only make occasional use of the main program should only make occasional use of the main should only make occasional use of the main only make occasional use of the main make occasional use of the main occasional use of the main use of the main of the main the main main ( memory bus. TiGPU therefore hasfour Kilobytes of local memory, organised as 1K locations of thirty-twoGPU therefore hasfour Kilobytes of local memory, organised as 1K locations of thirty-two therefore hasfour Kilobytes of local memory, organised as 1K locations of thirty-two hasfour Kilobytes of local memory, organised as 1K locations of thirty-two Kilobytes of local memory, organised as 1K locations of thirty-two local memory, organised as 1K locations of thirty-two memory, organised as 1K locations of thirty-two organised as 1K locations of thirty-two as 1K locations of thirty-two 1K locations of thirty-two locations of thirty-two of thirty-two thirty-two ; This memory memory is intended intended to be Sed for both program and data. both program and data. program and data. and data. data. It can be cycled at the graphics processor can be cycled at the graphics processor be cycled at the graphics processor cycled at the graphics processor at the graphics processor the graphics processor graphics processor processor j + +Memoryinetinet The Graphi¢s Graphi¢s Processor is intended'to operate in parallel with the other processing elements in the Jaguar is intended'to operate in parallel with the other processing elements in the Jaguar intended'to operate in parallel with the other processing elements in the Jaguar operate in parallel with the other processing elements in the Jaguar in parallel with the other processing elements in the Jaguar with the other processing elements in the Jaguar the other processing elements in the Jaguar other processing elements in the Jaguar processing elements in the Jaguar in the Jaguar the Jaguar Jaguar system. In Grdet:to do this, In Grdet:to do this, Grdet:to do this, do this, this, a well-behaved GPU program should only make occasional use of the main well-behaved GPU program should only make occasional use of the main GPU program should only make occasional use of the main program should only make occasional use of the main should only make occasional use of the main only make occasional use of the main make occasional use of the main occasional use of the main use of the main of the main the main main memory bus. TiGPU therefore hasfour Kilobytes of local memory, organised as 1K locations of thirty-twoGPU therefore hasfour Kilobytes of local memory, organised as 1K locations of thirty-two therefore hasfour Kilobytes of local memory, organised as 1K locations of thirty-two hasfour Kilobytes of local memory, organised as 1K locations of thirty-two Kilobytes of local memory, organised as 1K locations of thirty-two local memory, organised as 1K locations of thirty-two memory, organised as 1K locations of thirty-two organised as 1K locations of thirty-two as 1K locations of thirty-two 1K locations of thirty-two locations of thirty-two of thirty-two thirty-two This memory memory is intended intended to be Sed for both program and data. both program and data. program and data. and data. data. It can be cycled at the graphics processor can be cycled at the graphics processor be cycled at the graphics processor cycled at the graphics processor at the graphics processor the graphics processor graphics processor processor clock rate, and so is extremely fast. It may be viewed as a simple cache RAM, with software cache control - this technique is known as visible caching. When the graphics processor is executing code out of internal RAM, program fetch cycles will occupy less than half the RAM bandwidth. To load up a program into the RAM within the GPU, the best technique is to use the blitter. Set it to blit phrases, and use the 32-bit GPU address range (see below). + +© 1992-95 Atari Corp. Confidential Information “JPR Property ofAtari Corporation + +June 7, 1995 + +Page 37 + +| + +yy + +| ) + +7 j : + +## Jaguar Software Reference Manual - Version 2.4 + +**==> picture [513 x 304] intentionally omitted <==** + +**----- Start of picture text -----**
+wv To the GPU programmer the local RAM, local hardware registers, and external memory all appear in the
same address space. The GPU memory controller determines whether a transfer is local or external, and
generates the appropriate cycle. The only programming difference is that only 32-bit transfers are possible
within the GPU local address space, whereas 8, 16, 32 or 64-bit transfers are permitted externally.
The local RAM sits on an internal GPU 32-bit bus. Also present on this bus are. various GPU control registers,
and the Blitter control registers. When a GPU transfer occurs outside the logit address Space, a gateway
connects the local busto the main bus. If a sixty-four bit transfer is requested, a special:register is used for the
other half of the data. ees OEE
The address space is organised as follows: A Ss
F02000 - FO21FF Graphics processor control registers OE ce
F02200 - F022FF Blitter registers fs, THEE EES
This local address space is also available to external devices via the yo mechisiisdin.,
The GPU local bus can therefore perform transfers :{6#three.quite separate mechatifsitis:These are, in
— Instruction fetch oo OCEEEEE
**----- End of picture text -----**
+ + +## BxiemialView ofGPUSpase + +The GPU internal address space is accessible by anytither Jaguarbus imaster, i.e. the CPU, the Blitter and the 4 DSP car al! aanus GPLLintamnal Sate This is nant of the Jaguar I/O space within Tom. This is normally g viewed as 16-bit read/write memory:but by adding 8000 hex'i¢:the addresses it is also available as 32-bit a write only memory, which is faster to access for a bus master ‘hich can perform 32-bit transfers. Specifically, i | this allows the blitter t@:¢epy data into the GPU space more rapidly than it would using the 16-bit space — for 4 maximum transfer speed:1sse:the blitter in phrase mode, writitig to the 32-bit address range. Please note that g the 68000 in the Jaguar @érisoie taay not address this'$2:bit'wide memory. $F Transfers to/from addrésses within the'Yange SFO2000-SFO7FFF and $F1A000-SF1FO00 are executed 32 bits | at a time using a latch mechanism and must ibe handled carefully by external processors. When a 16-bit word : is read fromthe:GPUat a longword-alignéd address, a 32-bit read is performed. The high word is transferred j and the ow word-3§ Jatehed. Any 16-bit read operation at a GPU longword-aligned address + $2 simply | transfersthe latched data... When a 16-bit word is written (6'a longword-aligned address, the data is latched. When a 16-bit word is written to: Jéngword-aligned address + $2, 32-bits (the written word and latch) are transferred. The GPWane Data Ordering Conventions The GPU can operate in both a big-endian and little-endian environment, and as long as the memory interface ’ ie is programmed to the correct endian mode, and the transfer requested is the width of the operand required, y then this operation is largely invisible to the programmer. The GPU is itself either-endian - this means that the first instruction of the pair in a long-word is programmable. This is controlled by the BIG_INST bit. - + +] + +## © 1992-95 Atari Corp. + +**==> picture [2 x 21] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +Confidential Information TER Property ofAtari Corporation + +June 7, 1995 + +ions + +| | 7 | | : 1 j | + +, + +The GPU has a set of load and store instructions, each of which take two register operands. One register is used to provide the address, the other is either read to supply data to be stored or is written with load data. Load and stores may be performed at byte, word, long-word and phrase width. Bytes.and words are aligned with bit 0, and when loaded the rest of the register is set to zero. When phrasés ars read Of:written, a register within the GPU local address space should already contain the other long-waitd for store Operations, or is loaded with the other long-word for load operations. Performing phrase load$iand stores is the:fastestway of transferring blocks. com WEEE Load and store operations may also be performed using one of two simple indexed addressing schemes: “these are both based on using either R14 or R15 as a base register, with either a five bit ‘unsigned offset (in long: words) encoded into one of the register fields or another registeE:¢Ontaining the offset: THEI s.a two tek: overhead involved in using these instructions, as the address has t@ cofputed. OE In local memory, only long-word reads and writes are permitted. 9 Load and store operations will normally complete in one tick, ortwo ticks for indeed, addresses. The transfer may not be complete at this point, and if another load.or.store operation occurs befté'tlie previous one has unit;“ Which is described completed it will be held up. Load data is written under the control of the score-board elsewhere. ee ce The gateway between the GPU local bus and the:external co-processof biis contains a control block for generating external memory transfers. When this bidtk.is idle, load and stgz¢:operations complete as quickly as they would in local memory. For load operations, #&:data is not loaded inta:the target register, however, until the external transfer has taken place:"The score-board taechanism prevetizs:use of this data before it has been loaded, but other computationmaytake place. If there is andther load gestore instruction in the program before the gateway has completed its:transfer, then[it][ will][ be][ held'tip][until][ the"gateway][is][ idle.] + +Due to a bug in the Jaguar Console, DMA transfers are tot permitted. + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +The GPU:gontains a powerful ALU section, which'as well as the normal arithmetic and Boolean functions, all with 32-bit'word size, coniains:a perform their respective functionsin16 by one 16 tick. fast parallel multiplier, and a 32-bit barrel shifter, both of which The GPU alsa Gontains a divide unit: ‘This performs serial division at the rate of two bits per tick, on 32-bit unsigned operands;;producing a 32-bit quotient. The operation of this runs in parallel with normal GPU operation. Es Le + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+J
**----- End of picture text -----**
+ + +| | | + +i © 1992-95 Atari Corp. + +Confidential Information FPR Property ofAtari Corporation + +June 7, 1995 + +. + +Jaguar Software Reference Manual - Version 2.4 + +Page 39 + +| : | | | | | | | | | | | | + +**==> picture [551 x 352] intentionally omitted <==** + +**----- Start of picture text -----**
+@,. @ The ALU has the following set of flags:
Z zerTo set appropriately by all arithmetic operations, normally being set if the result of
| the operation was zero.
N negative set appropriately by all arithmetic operations, normally being set if the result of
the operation was negative (bit 31 is a one). cuttin.
C carry set according to carry or borrow out of all add andsubtragtoperations; set with the
| bit that is shifted out of shift and rotate operatigng'for shift by:aneydeft undefined
by other arithmetic operations. i HEGRE |
interrupts, ccc lc
The GPU can be interrupted by five sources. Interrupts force a call to'an address in local RAM aven by
sixteen times the interrupt number (in bytes), from the base of RAM: Etig'the responsibility ofthe”
programmer to preserve the registers and flags of the underlying:¢ode. Primary.register 31 is the interrupt
stack pointer. Primary register 30 is corrupted when instructifl o wn is transferied:tothe interrupt service
routine. Neither register should be used for any other.purpose when interrupts aré‘enabiled.
Interrupts are allocated as follows: Se WEEE
# Interrupt
Object Processor: “HEE
& lw
° [1 (iseryinterpt
| 0 = €PU intertape: fa
**----- End of picture text -----**
+ + +The flags register contains individual jiiterruptienables for cath of these sources, as well as a master interrupt mask for all interrupts. When the master interrupt mask is set,te:primary register bank is selected (see When an interrupt occurs; thé’master interrupt mask Bit-is set: The individual enables are not affected, but no other interrupts will be serviced itil the mask bit iscleared:The interrupt service routine should normally clear the master interrupt tHask, aid the.appropriate interrupt latch, and enable higher priority interrupts The value pushes onto the R31 stack is the addiéss of the last instruction to be executed before the interrupt occurred;‘The 'interrupt'service routine should thegéfore add two to this value before using it to return from the The interrupt latches may be readin the status port, and are cleared by writing a one to their clear bits, writing ° The cause ofthe Interrupt may be determined by the location jumped to, but not from the flags register, as more than one interriipf Jatch bit may:be set. There is a certain degree of interruptprioritization, in that if two interrupts arrive within a few ticks of each other, the higher numbered will be serviced first. Beyond this, interrupt prioritization is under software 5X wi control, as described above. The only operations that are atomic are single instructions, or certain instruction combinations (see below). Interrupts may be disabled by clearing all the enable bits. It is therefore not practical for the interrupt stack to be shared with the underlying code, unless all interrupts are masked across stack operations. + +© 1992-95 Atari Corp. Confidential Information FER Property of[Atari][ Corporation] + +June 7, 1995 + +i + +Jaguar Software Reference Manual - Version 2.4 + +_ PageAn example 40 interrupt service routine, which does no more than clear the interrupt, is shown below. The + +i < + +- |4 j | 4 _ 7 | ‘ q ; _ =. . | 3 y ' 1 : j | | : j : | | 1 41 4 + +interrupt source was interrupt 2. int_serv: movei #G_ FLAGS, 130 ; point R30 at flags register load (r30),r29 ; get fiags belr #3,r29 ; clear IMASK etc bset #11,2729 ; and interrupt 2 latehgseiiin. load (r31),r28 3; get last instruction addease: ss... addq ‘#2,r28 ; point at next to:be' executeg@iign, _ addq #4,r31 ; updating the stagkpointer eset store 129, (r30) ; restore flags co OHH Similar interrupt service routines can handle all the interrupts. Note the followins points about this code _ Registers R28 and R29 may not be used by the underlyinig:code as they are corrupied. (you may choose to use any two registers in bank #0), in addition ta[R30-and][ R31][ which][ aré’always:sGrnipted] by the interrupt process itself. Note: R30 is automatically: sorupied. when an interrupt occurs not just - py the interrupt service code as shown. Pca EEE — Interrupts are re-enabled on the instruction after the jump. If they were enabled any sooner then no other interrupt service routine would be able:te ise: R.28 and R29, as they could:potentially corrupt If the interrupt source was the Object Processoi; thenthe interrupt gervice routine should read the Object Code registers, if required, and then re-start the Object Processor by wifizig[to][ the][ Object][ Processor][ Flag] + +**==> picture [1 x 30] intentionally omitted <==** + +**----- Start of picture text -----**
+:
**----- End of picture text -----**
+ + +- meee eee It is necessary for certain operations to be atomi¢, #.¢;3iteerupts may iiot occur during these operations. Three GPU instruction types temporarily #eek.out intertupts ‘while they complete their operation. These are: — Immediate data moves, using the MOVE! instruction. ‘Iiiterrupts are locked out while the two words of immediate data are fetched. Feey + +- — Matrix multiply @perations, using the MMUES.instniction. Interrupts are locked out until the operation has completed:=. EEE + +- —_ Multiply and accumulate operations, using the IMULTN and IMACN instructions. The result register is not preserved by interrupts, #ad'therefore any multiply/accumulate operation must consist of a sequenve-of IMULTN and IMACN instructions followed by a RESMAC instruction, with no intervening iastructions. The IMULTN'aad IMACN instructions are always atomic with the + +- Jgueceeding instruction. See the section below on multiply/accumulate instructions. + +- —_ “Juimp instructions arealways atomic with the instruction which succeeds them. + +- | mS La Program control normally euaeupwards through memory executing instructions sequentially. The GPU can also transfer program flow by performing jump instructions. Two types of jump are supported, relative and absolute. Jump relative takes a signed five-bit offset, which is treated as an offset in words, and added to the program counter. Jump absolute transfers the contents of a register into the program counter. + +- ' © 1992-95 Atari Corp. ConfidentialInformation “JPR Property ofAtari Corporation June7,1995 + +June7,1995 + +, oe | j + +| . + +1 + +[ Jaguar Software Reference Manual - Version 24 Page 41 if i Both types of jump may be conditional on the contents of the ALU flags. If the appropriate condition is not © met, then the jump instruction is ignored and program flow continues with the next instruction after the jump. The instruction after a jump is always executed. This is a side-effect of the pre-fetch queue. Programmers ; may choose either to place a NOP after every jump instruction, or may take advantage of this to place a useful ? instruction after the jump which will be executed whichever branch is followed... | The program counter may also be copied into a register. oP ee 7 The GPU can cease operation by clearing the GPUGO bit in the GPU contol register (desepbed: below). It j may-iuen only be restarted by an external write to this register, or by a resgh.. EEE | ‘SiigleStep Operation ] As an aid to the debugging of GPU programs, the GPU can be sét td'single step through pragilins;:Bausing : between instructions until restarted. This operation is controlled by:and:external CPU as follows?!" ; 1. Set up the program counter, then set the GPUGO and SINGLE_STEP xontrol bits in the control ‘ register. OE f -2,._-—-Poll for the SINGLE_STOP flag in the staus register.- at this point the first iustiaction has been 3. Set the SINGLE_GO bit in the control tegister (keeping GPUGO and SINGLE_STEP set). 4. Poll for the SINGLE. STOP flag being sé#(his is the read versionOf the SINGLE_STEP flag), which oe indicates that the next instruction has been executed. “HEE | If the GPU register file is to be réad from or written to, then singlé-steppine will have to be suspended and an appropriate transfer routine run, Wikich will require:that the:GPUGO bit must be cleared first and the program j counter modified. Unfortunately, cleating theGPUGObit has the effect of altering the value in the program counter, as the pre-fetch queue is disearded. Therefore, after'st¢p4 above, the following operations should be performed: “se ee — read the program gounter value fie oP | — clear the GPUGO contol bit “EEE — read or write t6:thie register filé‘as required | —_ add two.tothe program counter Valié’read | It is necessary to add tW6'té the program counter, as the value read reflects the last instruction executed (or last word ‘Gfimmediate data ifjt'was MOVE]. illegal Inctrudtion Gombingfions ° Do not place a MOVELiistriction after a jump, as the jump will take effect before the data is fetched, and so will change where the immediate data is fetched from. é ° Do not place two jump instructions sequentially, the results are not predictable, and may not be relied + +: + +- ° Do not place a MOVE PC to register instruction immediately after a jump, the value read can not be relied upon. . + +- ° Do not follow an IMULTN instruction by anything other than another than an IMACN instruction. + +ve © 1992-95 Atari Corp. Confidential Information FRProperty ofAtari Corporation June 7, 1995 + +| + +| 1 picture [374 x 252] intentionally omitted <==** + +**----- Start of picture text -----**
+)
Code # Condition Description
Sy
00100 Jump if carry fiag is,clear EE
00101 NC NZ Jump if carry flag's§:¢¥ear and zero flag is clear
g1000 | 8 |C__| Jump'iFcatsy Magis set
01001 | 9 {CNZ | Fiump if carry ffag is set and zero: tap is clear
01010 Jutap if carry flag ib Set dd zero flag is set
10101 NN NZ Junipif negative flag is cleataiid zero flag is clear
10110 NN Z::.. Jump if negative flag is clear:and zero flag is set
11001 Jump if negativeflag $s'set and zero flag is clear
11010 ‘Jump if negative flag isset and zero flag is set
Tae eae
**----- End of picture text -----**
+ + +## Multiply and Aceufucceinstuctons + +The GPU supports multiply and aceiimulate (MAC) operations. These involve multiplying two values together, and:ddding their product té thesum of the products of some previous multiply operations. These are typically used formatrix multiply and digital filtering type applications. Due to the pipe-lined natuié-of the design, the multiply and its associated add do not take place in the same cycle. MAC instructionsaré not: therefore like other instructions, in that a special instruction is needed to write back their result. + +I + +© 1992-95 Atari Corp. + +Confidential Information 7, 0 WN Property ofAtari Corporation + +June 7, 1995 + +w s + +: Jaguar Software Reference Manual-Version24 ge ' wv Take as an example multiplying R8 times R9, R10 times R11, R12 time R13, and placing the sum of their pS products in R2. All values are signed. The instructions are as follows: ' imultn r8,xr9 ; compute the first product, into the result z imacn r10,ril ; second product, added to first 1 imacn r12,r13 ; third product, accumulated in result ; resmac x2 ; sum of products is writtenshO..r2 MAC instructions may only be followed by further MAC instructions or by the RESMAC: instruction. No ' other cumbinations are permitted. eee eee ee Systolic Matrix Multiplies : The GPU contains a mechanism GPU contains a mechanism contains a mechanism a mechanism mechanism for performing integer performing integer integer matrix miultiplies at a burstate a burstateate O£the maximul + +: The GPU contains a mechanism GPU contains a mechanism contains a mechanism a mechanism mechanism for performing integer performing integer integer matrix miultiplies at a burstate a burstateate O£the maximul obtainable from the hardware multiplier, which is one multiply per:fick. This is generally sigefuls-but has been designed in particular for the matrix multiplies required by the Diserete Cosine Transform algorithm. One technique for this involves performing two 8x8 integer matrix rpultiplies'in Sixecession on a matrix, using the ; same fixed coefficients, but rotated for the second multiply.“ Meee The GPU therefore has a MMULT instruction, which:initiatesasequence of betwee fiiree and fifteen multiply/accumulate instructions, as described abigve, Corréspanding to one product ter##:of the result matrix. One of the source matrices is held in the secondaey register bank,the. other in local RAM. The matrix held in registers is packed, i.e. two elements per registet:This allows all Of an Sight-by-eight matrix to be stored in i the secondary register bank, and is the raison d‘élte-of the second bariki2%:, WFwo = Awhich matrixis always multiplyin is the initiated secondary by the regisiet MMULTbank, instrustiGit:-Thiscontainingthe-first takes as two eleniénts its $G1srce of parameter the matrix the row. register,Its destination parameter is the register,in the currently selected fegister. bank, i which to write the result. The matrix held in RAM may be accessed in either increasing row or itcreasing column order, in other words the data for each successive multiply:operation,aré eithierone!location or the matrix width apart. Like interrupts, the systolic operation is perfornied by forcing internally generated instructions into the instruction stream. The. first instruction is IMULTN, the middi¢:anes IMACN, and the last RESMAC. These have their operands médifiedin the manner described above!" The MMULT instruction shouid:aot be preceded bya LOAD or STORE instruction. + +## Mmm + +The divide iinit perforttis unsigned division, taking'as operands 32-bit divisor and dividend, giving a 32-bit quotientand a 32-bit remainder. The quotient is the result of the divide instruction, and replaces the dividend in the destination register. Divides are performed at the rate of two bits per tick, so that the complete divide operation:completes in sixteen t¢kS:,The divide instruction has no effect on the flags. If another instruction attempts to read the quotient or start another divide operation while the divide unit is active, then wait states.will be inserted:until the divide unit has completed. The remainder register may beiéad after the divide has completed, this value in this register may either be positive, in which case it coiitaitisthe actual remainder, or negative, in which case it contains the remainder minus the divisor. Divides may also be performed on unsigned 16.16 bit values, by setting the offset control flag in the divide control register. The quotient is then also an unsigned 16.16 bit value. + +rn © 1992-95 Atari Corp. Confidential Information TR Property ofAtari Corporation June 7, 1995 + +Saar Senenieenena + +_ os + +{[—] + +‘Page 44 en + +Jaguar Software Reference Manual - Version 2.4 + +aq 1 a 4 & a . ] 2. ; = 1 { : , 4 | OF a a s _ ; ) Po + +‘ ] , : j + +The GPU contains a register file of sixty-four thirty-two bit registers. All of them may be used as general purpose registers, although some are also assigned special functions. All instructions contain two five-bit register operand fields, although they are not always used as such. Where an instruction referencesa register, this five-bit field is turned into the registeriaddress: There are two banks of these 32-bit registers,.primary and secondary. The primary register bank, bank 0, isdiWavSiused for interrupt service. This is forced by the IMASK bit, when it is set selection of:bank 0 is forced:HE IMASK is clear REGPAGE is obeyed. THEE ce Bank select bits are provided in the flags register, and special MOVE instructions low data to be moved, + +Roma The GPU internal address space is accessible to an external bus taster at any'timié’s.external access having data into the local the highest priority on the GPU local bus. This means that the Blitter may be used'td:ddad The local address space is accessible for read orwwrite at the addresses given elsewhere in this document, and these locations are presented as sixteen bit mem@ry;.which must always:be accessed as long words in the order low address then high address. HE WHEE To allow faster transfers into the GPU space, all the repistérs are also available as thirty-two bit memory, at an offset of 8000 hex from their normakadditsses. At this:addtess, the internal:‘taemory is write only. The 68000 may not access this memory as if transters data 16-bitsatatime, gee If the Blitter is being used to writeinto the GPU space,:then phrase wide transfers may be performed, as the bus control mechanism will automatically divide Bese Up'4¢ suit the width of the memory being addressed. + +ne Ls ae The pack and unpack instyHictidis provide a means far avsfaging up to 32 CRY pixels. The unpack operation leaves the intensity value: uachasged;:shifts the lower colournibble up 5 bits, and the higher colour nibble up 10 bits. The pack operatiée reverses hiss. + +**==> picture [421 x 77] intentionally omitted <==** + +**----- Start of picture text -----**
+oo UE, pack
Colour fisid 4 ee! Colour field 2 intensity field
**----- End of picture text -----**
+ + +Register containing unpacked pixel There are five unused bits above each field in an unpacked pixel, allowing up to 32 unpacked pixels to be added together. If a power of two unpacked pixel values are added, then a shift can be used to re-align them prior to packing the average value. + +© 1992-95 Atari Corp. Confidential Information “JER Property ofAtari Corporation + +June 7, 1995 + +. : | + +| + +: + +b: r iy JaguarThe bits. Software Referencethat do not contain Manual. packed - or Version 2.4 unpacked pixel. data are always set to zero. This is useful for anti-aliasing and scaling effects. + +## Page 45 + +This section describes the internal registers of the Graphics processor. Nofe that soitie:Gf these are read or write only. ‘ HEE EEE , All GPU registers are 32-bit, and will require all 32 bits to be written. — + +**==> picture [553 x 484] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||| +|---|---|---|---|---|---|---|---|---| +|This register provides status and control bit for several important|GPU-functions. Control|bits|aig| +|Bits|Equate(s)|Description|_| +|ZERO_FLAG|The ALU zero flag, set if thé:tesult of thé'd#st:arithmetic|operation was| +|1|zero.|Certain|arithmetic instructions do not affectthe|flags,|see above.| +|CARRY_FLAG|The ALU carry: flag,|S8F|Or.cleared by carry/borroW|Gtit-of the| +|definedadder/subtraet,and|reflects|ca#ry|out of|some shift operations, but it is not| +|2|after:|other|arithmetic|'apésations.| +|NEGA_FLAG|The ALU negative flag, set if the'Fésizlt.of the last arithmetic operation| +|was|negative.|ih.|Es| +|||wv|3|IMASK|Interrupt|mask,|set|b¥:the|interrupt contrdl:logic at the start of the service| +|a|ToHtHG, aiid. is cleared:by: the interrupt service routine writing a 0. Writing||| +|4-8|42to|this ‘Iocition has noéff6edi..| +||GCPUENA|‘einterrupt|enable|bits.for|interrupts:0:4:|The status of these|bits is| +|G_PITENAG_JERENA|{overridden|byIMASK:Themeaning of these bits are:| +|G_OPENA|‘8.€PU Inti,| +|1|Jerry|Interrupt|7,| +|G_BLITENA:.|2|Timing Generator|2?| +|9-13|G_CPUCLRffeP"|UE Interrupt latch clear bits. These bits are used to clear the interrupt latches,| +|G_JERCLR#"|“which-may be read from the status register.|Writing a zero to any of these| +|G_PITCLR|bits|}eaves.it|unchanged,|and|the read value is always zero.| +|JL|GBLIFCER|We| +|14|28 EREGPAGE|2s,|[|Switches from register bank 0 to register bank|1. This function|is| +|ae|“eleeesd|overridden by the IMASK flag, which forces register bank 0 to be used.| +|This|bit must not be set due to a bug in|the Jaguar Console.||| + +**----- End of picture text -----**
+ + +**==> picture [2 x 16] intentionally omitted <==** + +**----- Start of picture text -----**
+.
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. + +Confidential Information 7O® Property ofAtari Corporation + +June 7, 1995 + +Page 46 + +Jaguar Software Reference Manual - Version 2.4 + +i + +| + +j j [ 1 { ' ] ] + +| + +> WARNING- writing a value to the flag bits and making use of those flag bits in the following instruction - will not work properly due to pipe-lining effects. If it is necessary to use flags set by a STORE instruction, then ensure that at least two other instructions lie between the STORE and the flags dependent instruction. If . it is necessary to use flags set by an indexed STORE instruction, then ensure that at least four other instructions lie between the STORE and the flags dependent instruction. + +| + +**==> picture [495 x 381] intentionally omitted <==** + +**----- Start of picture text -----**
+Gone” oo nauconor Register Foz Mieonly
This register controls the function of the MMULLT instruction. Control bits:36;, _ -
Bits Equate(s) Description
4 |MATCOL When set, this control bit maké:the matrix held in'tHenibry. [be][ accessed:]
ema Adare Register FOze | Wrteonly
This register determines where, in local RAM, the.giiatrix teléin| memory is. WHEE)
Bits Equate(s) Description
eePMatixadcresy
GiEND YateOraanigaueniRebisted /Fa2I0G Iwate only
This register controls the physical jayout of pixel data and GPU 1G registers. Tf its current contents are
unknown, the same data should be#Eitten to boththe‘low:dad high 16-bits.
Bit Equate(s) Description
BIG_IO When this bit is set, 32-bit registers in the CPU I/O space are big-endian,
oon. i.e. the more significant 16-bits:appear at the lower address.
1 | BIG_PIX “222228. | When this bit is sefthe pixel Organisation is big-endian. See the discussion
EEEEEEEES elsewhere in this document:
BIG INST <7 “fe¥Bea this bit is set the order of word program fetches is big-endian.
**----- End of picture text -----**
+ + +Gipe gi/i@PU ProgramCounigi 7 Foatio” Read/Write The GPU program counter inigy-be written whenever the GPU is idle (GPUGO is clear). This is normally used by the CPU:to govern where progzam execution will start when the GPUGO bit is set. The GPU program counter may be read at any time, and will give the address of the instruction currently being executed:If the.GPU reads it, this. must be performed by the MOVE PC,Rn instruction, and not by performing a load from? tz... Gee The GPU program counter takisk always be written to before setting the GPUGO control bit. When the GPUGO bit is cleared, the program counter value will be corrupted, as at this point the pre-fetch queue is discarded. + +© 1992-95 Atari Corp. Confidential Information “7O® Property of Atari Corporation + +1 + +June7,1995 + +| + +| | + +. | + +| + +## Jaguar Software Reference Manual - Version 2.4 y ic. crau = CPU ContorStatus Register "> Fo2tT4 + +## Readiris + +## Page 47 + +This register governs the interface between the CPU and the GPU. + +**==> picture [564 x 653] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||| +|---|---|---|---|---|---|---|---|---| +|Bits|Equate(s)|Description| +|GPUGO|This bit stops and starts the GPU. The|CPU or.GPU|may write to this| +|register at any time. The status of this bitditer|a|system,|reset may be| +|externally|configured.|Pecee| +|1|CPUINT|Writing a 1 to this bit causes the GPU iginterrupt the CPU.|There|is no| +|need for any acknowledge,|and no need'té'¢lear the bit to zerd,|Writing|a| +|zero has no effect.|A value of zero is always tead.|LE| +|2|FORCEINTO|Writing a 1 to this bit causes a GPUinterrupt|fype:0,|There|is no néed-for| +|any acknowledge, and no n¢éd.to clear the bit tozero:Writing a|zetg|has| +|no effect.|A value of zero is|always|read.|Baraat| +|[This][means]|that| +|3.|||SINGLE_STEP|When this bit is set GPU singke-stepping|[is][ enabled.]| +|[until]|[a][ SINGLE_GO]| +|program execution will pauséafter|each|[instruction,]| +|command is issued.|TEE|CEE| +|The read status ofthis|flag, SINGLE_STOP,|‘itidi¢ates whether the GPU| +|has actually stepped,|and’should|be polled before #siing|a further single| +|step commasid.'A one‘néans|the GPU is awaiting a|SENGLE_GO| +|4|SINGLE_GO|Writing a one:t6:this bit advances|propram|execution by one instruction| +|when executio#'is|paused|in single-step|tiode.|Neither writing to this bit| +|;| +|HOE|writing a Zero, will|have|any effect. Zero is always| +|7|w|at anyother|time,| +|eebils|indicate which interrupt request| +|‘The|status ofthese| +|6-10||G_CPULAT|‘| faterrupt latches.| +|and|the appropriate|bit should be cleared by the| +|G_JERLAT|‘:fatch|is currentivactive;| +|G_PITLAT|‘ioletrupt seewice routine;|sing the INT_CLR bits in the flags register.| +|G_OPLAT|Writing to these bits has naeffect. The meaning of these bits|are:||| +|GBLITLAT;,||0|CPU|Interrupt.|ES| +|||"ey|[1|Semy Interrupt.|,| +|Ee|OTB, Object Processor| +|eee|[ae|Bitter| +|ii||BUS_HOG| +|ao|'Ehis bit should not be set in the Jaguar Console.| +|12-15||VERSION22000|These bits allow the GPU version code to be read. Current version codes| +|EO|are:| +|“SEEET|Pre-production|test silicon| +|.| +|Ly|w|2FutureFirstva p|r|iantsoductionof the release GPU may_|contain|additional|features|or| +|enhancements,|and this value allows software to remain compatible with| +|all versions.|It is intended that future versions will be a superset of this|;| +|GPU.| +||| +|© 1992-95|Atari Corp.|Confidential Information|“JER Property ofAtari Corporation|June 7, 1995| + +**----- End of picture text -----**
+ + +eee + +~ + +eee oe 4 + +~ ee + +f aa + +| : + +_ Page 48 + +Jaguar Software Reference Manual - Version 2.4 + +: . 4 % + +/ + +Po { = + +This 32-bit register provides the high part of GPU phrase reads and writes. It is physically a single register, and therefore a phrase read followed by a phrase write will write back the same high data unless this register + +GOREMAINE DIide Unitremainder: > Foatie Readeny This 32-bit register contains a value from which the remainder after a division maybe calculated. Referin the + +> GuveTREDieeunCoRIRIC Wma Bit Equate(s) Description DIV_OFFSET If this bit is set, thenthe divide unit performs division of unsigned 16.16 bit numbers, othegWasé 32-hit unsigned integer divisiar:is performed. + +i + +© 1992-95 Atari Corp. + +Confidential Information “JER Property of Atari Corporation + +June7,1995 | + +Jaguar Software Reference Manual - Version 2.4 + +Page 49 + +**==> picture [159 x 23] intentionally omitted <==** + +**----- Start of picture text -----**
+r een
**----- End of picture text -----**
+ + +This section describes the Jaguar Blitter. | io Blitter is an abbreviation for bit block processor. It purpose is to process,‘by filling or copying, biscks of bits or pixels. These blocks may be one contiguous piece, or they may be sub-blocks(such as rectangles}:within a The Blitter may also be seen as a hardware engine designed for painting and moving pixelsias quickly a8 possible - it performs a variety of graphics operations at a rate ligited:largely by the memory. access speed. It is used as an aid to the GPU, allowing a GPU program to process: high-Jevel graphics operations, whilst the Blitter, in parallel, performs the low-level repetitive pixel-by-pixel operatiGAgs 2: andgradients associated witk:e.polygon, while the For example, the GPU might calculate the co-ordinates Blitter draws the strips of pixels. Alternatively, the GPU:[might][be][processing][ text][ with][attributes,][ and] computing font addresses and window positions;:while the’Blitter:paints the characters. The Blitter can perform a variety of operations i blocks of memibey; including: + simple memory copies _ _— iy ° = Copies and fills of rectangles within windows OSE HG *_ Tine-drawing a Ee coal EP ~ | imageraionandsang | li ¢ single-scans of polygons fills’ &, a “ “ a + Gouraud shading + Z-buffering ee The Blitter can operate on 1; 24, 8 16 or 32 bit packed'pixels, with considerable flexibility with regard to the The tour de force of the Blitter is its ability. to generate Gouraud shaded polygons, using Z-buffering, in sixteen bit pixel mode. A lot of the logi¢'i#i:thie Blitter is devoted to its ability to create these pixels four at a time, and:fa: intensity write tem at a rate limited only'by the. bus bandwidth, using the GPU to calculate the Z and generate[realistic] gradients animatéd and start and[312.] eraphics. stop pixels on atine-by-line basis. This will give the system the ability to ee ee ee The Blitter is programmed by settitig up a description of the required operation in its registers. These are accessible in the systemtaémorymap, and so may be set by the GPU or by an external processor. The registers control the three functional blocks that make up the Blitter, the address generator, data path, and . w control logic. Each of these is described in the sections that follow. The descriptions that follow give a fairly dry account of how the Blitter works. These are useful for reference, but for an introduction to how to use the Blitter use the examples further on. + +: . + +© 1992-95 Atari Corp. Confidential Information JER Property of Atari Corporation + +June 7, 1995 + +| ' : | + +i | , + +7 + +| | + +' j a | 4 P 4 4 = q ] q j + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +**==> picture [506 x 684] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 50 Jaguar Software Reference Manual - Version 2.4
The Blitter architecture is summarised in the Figure below:
Graphics Processor Data Bus ComparatorAddress
Address _jeakefe Address
Registers pra s:Génerator
State Machines i eee WHEE
feria. _
: “EEtband
Data PGEEEEE eae Co-processor
Co-processor Data In . SHEE Outpat
Feo Intensity or Z ae
oe oa
The address generator generates an address withita window of pixels. A window is a packed array of pixels
_ in memory,and may weil béthe data associated with an Object Processor object. A window is described by
its base address and width. A:pointer into this window is set up for the Blitter start position, and is
programmiéd:interms of its X aid: ¥address. The ability to program the address generator in pixel address
terms considerably,simplifies the task [of][ preparing][ Blitter] commands.
In addition to these registers, various other registers contain specific values to allow considerable flexibility in
how the pointers are moditied during Blitter operations.
The Blitter has two address‘generation units, used for the source and destination addresses of copy operations,
etc. The two address generators are called Al and A2. A1 is normally the destination address register and A2
the source, although these roles may be reversed. Al is more sophisticated in its address generation
capabilities than A2.
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. + +; + +**==> picture [23 x 296] intentionally omitted <==** + +**----- Start of picture text -----**
+'
|
a
4
q
'
**----- End of picture text -----**
+ + +Confidential Information FER Property ofAtari Corporation + +June 7, 1995 + +w " + +**==> picture [579 x 448] intentionally omitted <==** + +**----- Start of picture text -----**
+Jaguar Software Reference Manual - Version 24 Page 51
" M® The address register block looks like this:
"9 ALBASE F02200 Al base address
Al_FLAGS F02204 Al control flags
Al_CLIP F02208 Al clipping size cents.
AlPIXEL | F0220C Al pixel pointer ee |
Al_STEP F02210 Ai step integer part ce os
| Al FSTEP | F02214 Al step fractional part 7 7 :
Al_FPIXEL | F02218 AY pixel pointer fraction TE 3
Al_INC F0221C Al increment integer parties... TE Be 7 ae
Ai_FINC F02220 Al increment fractional part, —
A2 BASE | F02224. | A2 base address i
- OE
A2_FLAGS | F02228 A2 control flags
AdPIXEL | F02230 ADpixelpoiter "
AD STEP | F02234 A2 step integer,part ee
All notions of address within the Blitter correspond with the concept SEs window. A window is a rectangle of
pixels, stored in memory as a lineaf'array of packed phrases. A window is described by a base register, and
has a width and height, both in pixéis-A set of flagsdescripethe size of those pixels, their physical layout in
memory, and various aspects of how'the pointet'is updated. “2:8,
The address itself is generated from a pixel pointer. This has an X and Y value, and again is in pixels. The
pointer may point to areas:outside the window, and:Al supports ‘hardware clipping of addresses outside the
**----- End of picture text -----**
+ + +The X and'® paintéts are sixteen bit values. Hawever, the address generation mechanism will only generate valid addresses for¥: values in the range 0-4095' ‘i.e. it treats Y values as 12-bit unsigned values. The higher order bitsof Y are ignored,Kis treated as an unsigned 16-bit value, but only values from 0-32767 are valid in The address generator derives the window width from a very simple six-bit floating-point format. The width value has a fourbitunsigned exponéat, and a three bit mantissa, whose top bit is implicit, and which has the point after the impiicittop bit. This:is similar to a cut down version of the IEEE single precision format without the sign bit. It‘mustgive whole number of phrases in the current pixel size. Valid exponent values areintherangeO-11. 0 For example, a window width of 640 is 1010000000 binary, i.e. 1.01 x 2“9. Therefore the mantissa takes the value 01 (implicit top bit), and the exponent 1001. The width is therefore 1001 01 in binary. Note that there is a window bounds clipping mechanism for the A1 pointer, which treats the X and Y as signed sixteen bit values. This is described elsewhere. + +: + +I ©1992-95 Atari Corp. Confidential Information PER Property ofAtari Corporation June 7, 1995 + +Jaguar Software Reference Manual - Version 2.4 nl + +: . & 4 4 i : : 4 q , | 4 : f 4 , 4 q | 4 | 4 q ’ : ; : q : 4 | + +, ; + +——Page 52 + +; Both Blitter address generators can update their pointers so that they describe a raster scan over a rectangle. Along a scan line, the pointer may be updated either by one pixel or to the next phrase boundary, depending on how the Blitter is currently operating. Refer to the Data Path section for further details. At the end of a scan line, the pointer is updated by a step value, which is the distance tn:X and Y to the start of by the Blitter's the next scan line. This action of scan across the block, then step to the next start, ‘isconolied snner and outer control loops, the inner loop traversing a scan line, and the'duiter loop adding the:step value. Thus the inner loop length is the block width, and the outer loop length the!bieck height. PEE, In addition to these modes, both address registers have certain special modes:? Ss. TE tHe geinter, so that the A2 may have a Boolean mask applied to its pointer. This is logically ANDedwith pointers may not exceed the bounds of a rectangle, whose sides atta power of two pix Joag. This is:ee? intended to repeat a source texture or pattern over a larger destinaiion azea, €.8- filling a wail with @sepeated Al supports address updates based on a Digital Differential Andilyzer. This techivique produces successive address by adding an increment to the pointers, both of which have integer andfrastiGnal parts, and is used in particular for line-drawing and rotating images. ee cee The pointer and increment of Al, in both X and.¥, have sixtees bitinteger parts and sixteen bit fractional parts. The step value used on the outer loop addgess update also hasisteger and fractional parts. a ___[—] Z The Blitter has a sixty-four bit datapath, with 4 variety ofregisteriedt-can be used to process entire phrases at : once, or one pixel at a time. Pixelsimay the one, two, four, eight, sixteen OF thirty-two bits wide, and are always stored in a packed manner! 25. Ee Data registers are: cE ae Oe B_SRCD F02240 Source data, or computed intensity fractional parts PBSRCZ1 | F02258" ‘Sense Z1, or computed Z integer parts B_SRCZ2 [02260 Source22, Gr. computed Z fractional parts BPAID ° FOR26B:.. Pattern data,or computed intensity integer parts BING| F02274 | increment When writing or copying pixels, arbitrary alignment of the source and destination data is allowed, and the Blitter aligns the source to mateh fhe destination data when required. When transferring phrases the source and destination address pointers do not need to be aligned to the same point in a phrase, the Blitter will automatically align the source to the destination, but only for pixels of eight . bits or larger. If two source phrases must be read before a destination phrase can be written, then the ‘ SRCENX flag must be set to ensure that enough source data is fetched for the blit to operate correctly. © 1992-95 Atari Corp. Confidential Information JER Property ofAtari Corporation June7,1995 + +| a e “ i ] + +| + +| + +| + +| + +Jaguar Software Reference Manual - Version 2.4 Page 53 There are therefore two source data registers, to provide current source and previous source for alignment. There is also a destination data register, which can be logically combined with the source, and is also used to restore the destination data area when only parts of it are updated. There is a parallel mechanism for Z data, used for Z-buffering. This allows the depth of the data about to be written to be compared with the depth of the data already present on the Screen, and the write of the new data inhibited if the data already present has a higher priority. This applies to Sixtesia bit fixe] mode only. There are therefore two source Z registers and a destination Z register. pee _— + +- ¢ the logic function unit _ s “HEE ue * computed Gouraud shaded data He _ The default is the LFU output. The ADDDSEL flag selects adder output, PATDSEL Selects the pattern register, and GOURD selects computed data. EE Ee “HEE Write Z may come from Le _ 7 + +- Se The GOURZ flag selects computed Z:data. OEEEEE be (EREE Overriding both these selections i§ a mechanism to write back‘uBGhigtiged destination data. If a mode is enabled where data may be inhibited, e.g. bit-to-byte¢xpansion, or Z buffering, then a pre-read of the + +- . destination data should be performed:This also applies to pixel sizes of less than eight bits. + +- | Data Comparators © oes + +- | There are three data comparators available withinthe Bhittér, These are: . The bit comparator. This 1s used for bit to pixel expansion, and selects a bit or group of bits from the source data register, using a counter which is cleared every time the inner loop is entered. The bit is then used to control whether apixelis written at the current location. + +- ° The 2 comparator. This is used in 16-bit pixel mode to compare the 16-bit un-signed integer Z {attribute of apixelion the screen, the destination Z, with that about to be written, the source Z, and to “prevent the write operation if the pixel on the screen has a higher priority. + +- ° The data comparator. This is used to provide a means to make block copies with transparent colours, and #0Help with flood fill byperforming searches. It compares pixel values in either 8 or 16-bit pixel comparemodes. ft normally comparesthe source data register with the pattern data register, but it may also destination data with the pattern data. + +- The comparators may be used £6 achieve three effects: + + - ° When painting pixels one at a time a Comparator output can be used to inhibit the write of a pixel, leaving the previous value unchanged. + +**==> picture [56 x 19] intentionally omitted <==** + +**----- Start of picture text -----**
+June 7, 1995
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. + +Confidential Information FPR Property ofAtari Corporation + +Page 54 + +Jaguar Software Reference Manual - Version 2.4 + +qq a | 3 q | | Z | } 4 | 4 7 q ; | 4 4 . 4 + +. + +| + +| + +° When painting pixels a phrase at a time, the comparator outputs can force destination data to be written back. If this has been previously read then the data will be left unchanged, if not then a background colour can be used, stored in the destination data register ° The action of the Blitter can be stopped altogether. This may be used for collision detection, searching, etc. Note that the bit comparator can only produce a mask to operate over an entire phrase 1n:8-bit pixel mode. + +Businterface The Blitter accesses memory through the 64-bit co-processor bus, and takes full advantage of the width aud high-speed of this bus. The Blitter will normally cycle this bus at a rate limited onty::bythe speed of the #288 external memory, although there is a one-tick overhead when tutziing round from a read4'4 write transfer All external memory is viewed by the Blitter as being phrase wide if the: physical layout is nareawer then the memory controller expands the transfer into the appropriate numberof transfers. The Blitter requests the bus at the start of an operation, and will not stop requesting it, until the entire[granted][the][ bus] operation is complete. As described elsewhere, higher priority bus masters can requést'énd[be] during a Blitter operation, and this will suspend Blitfer operation until the higher priority:epéeration has released the bus. Bae oe “ + +! + +© 1992-95 Atari Corp. + +Confidential Information “JER Property of Atari Corporation + +June7,1995 + +} | Jaguar Software Reference Manual - Version 2.4 Page 55 7 ST | ‘ The following is a list of all the externally accessible locations within the Blitter. The data registers may only | be written to while the Blitter is idle. + +Page 55 + +' AiBNSE SR Rase Restater! Restater! yr orozz00 || wiitetoniy| , 32-bit register containing a pointer to the base of the window painted to by Al. containing a pointer to the base of the window painted to by Al. a pointer to the base of the window painted to by Al. to the base of the window painted to by Al. the base of the window painted to by Al. base of the window painted to by Al. of the window painted to by Al. the window painted to by Al. window painted to by Al. painted to by Al. to by Al. by Al. Al. This addeess'inust, be be | AcorLagS AT raseResiser ecm RaaaA Wits enly | A set of flags controlling various aspects of the Ad window dnd how addresses are updated: Bits Equate(s) Name Description : 0-1 |PITCH1~4PITCH1~4 | Pitch The distance between sticgessive phrases of pixel data in between sticgessive phrases of pixel data in sticgessive phrases of pixel data in phrases of pixel data in pixel data in data in in the . window data structure. Gaps Gaps igy.be used to provide to provide provide alternate Bee pixel maps maps f6r.double-buffering, for Z data, and for other Z data, and for other data, and for other and for other for other other control a ele information. "The information. "The "The distance betwegii'two successive betwegii'two successive successive phrases of . 2° V/pikeleis given by fwo'o.the given by fwo'o.the by fwo'o.the fwo'o.the power of this value, with of this value, with this value, with value, with with one special | eee casé}'1.¢. apitch of O'trigasis apitch of O'trigasispitch of O'trigasis of O'trigasis O'trigasis pixel data phrases are data phrases are phrases are are contiguous, Be means:1:phrasegaps,gaps, 2 means 3 phrase gaps; but 3 means 3 phrase gaps; but 3 3 phrase gaps; but 3 gaps; but 3 but 3 3 means 2 . ee eeeee phrase: gaps, gaps, Whigh may be especially useful for may be especially useful for be especially useful for especially useful for useful for for double-buffered + +All address registers are 32-bits unless otherwise indicated. a ee AiBNSE SR Rase Restater! Restater! yr orozz00 || wiitetoniy| 32-bit register containing a pointer to the base of the window painted to by Al. containing a pointer to the base of the window painted to by Al. a pointer to the base of the window painted to by Al. to the base of the window painted to by Al. the base of the window painted to by Al. base of the window painted to by Al. of the window painted to by Al. the window painted to by Al. window painted to by Al. painted to by Al. to by Al. by Al. Al. This addeess'inust, be be phrase + +**==> picture [480 x 272] intentionally omitted <==** + +**----- Start of picture text -----**
+Bits Equate(s) Name Description
0-1 |PITCH1~4PITCH1~4 | Pitch The distance between sticgessive phrases of pixel data in between sticgessive phrases of pixel data in sticgessive phrases of pixel data in phrases of pixel data in pixel data in data in in the
window data structure. Gaps Gaps igy.be used to provide to provide provide alternate
pixel maps maps f6r.double-buffering, for Z data, and for other Z data, and for other data, and for other and for other for other other control
ele information. "The information. "The "The distance betwegii'two successive betwegii'two successive successive phrases of
2° V/pikeleis given by fwo'o.the given by fwo'o.the by fwo'o.the fwo'o.the power of this value, with of this value, with this value, with value, with with one special
eee casé}'1.¢. apitch of O'trigasis apitch of O'trigasispitch of O'trigasis of O'trigasis O'trigasis pixel data phrases are data phrases are phrases are are contiguous, 1
Be means:1:phrasegaps,gaps, 2 means 3 phrase gaps; but 3 means 3 phrase gaps; but 3 3 phrase gaps; but 3 gaps; but 3 but 3 3 means 2
ee eeeee phrase: gaps, gaps, Whigh may be especially useful for may be especially useful for be especially useful for especially useful for useful for for double-buffered
| "=" | 7buffer displays, 48it allows two phrases of pixels to each phrase
of Z-buffer data - thére is no need to double buffer the Z data..
“i.
3-5 | PIXEL1 “A Pixel size The pixel size; Where the actual pixel size is 2“n, n is the value
PIXEL2 f° "sie, | stored here: Values 0-5 are allowed.
PIXELS oo
6-8: |ZOFFS1-6": |Zoffset | This value gives the offset from a phrase of pixel data of its
oe oe tte corresponding Z data in phrases. Values of 0 and 7 are not used.
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. + +Confidential Information “FER Property ofAtari Corporation + +June 7, 1995 + +**==> picture [610 x 689] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||| +|---|---|---|---|---|---|---|---|---|---| +|||Page|56|$$. $$$.|Jaguar|SoftwareReferenceo_OManual|-|Version 2.4|oO4:| +|BFt|9-14|||See Desc.|Width|This width is distinct from the width in pixels stored in the| +|[|window register, and is the width used for address generation.|:| +|The width|is a six-bit|floating point value|in pixels, with a four bit|‘| +|\|unsigned exponent,|and|a|three bit mantissa,|whose|top|bit|is|4| +|'|implicit, and which has the point after the implicit top bit. This is|S| +|similar to the IEEE single|precision|format|without the sign bit.|It|4| +|the|ilerent pixel|size. The|g| +|||must give a whole number ofphrases:| +|||;|following is a list of valid widthigguates:|WHEE|4| +|||/|WID2|WID28|‘3WiD160|WID89G2::.|||4]| +|||WID4|WID32|WiDL92|WID1024::.|||Z| +|||WID6|WID40|WID234%:,|WID1280|22:|=| +|WID8|WID48|WID256:2:|,WID1536 2|=| +|WID12|WIBG4:|8.|WID384|W208"|4| +|WID14|WIRBO|8|WD 448|WID2560|||:|=| +|WID16|WID96|—"‘WHH51.2|WID3072|i|4| +|WID20.-|WID112.—|WID64Q..|WID3584|-| +|WID342|eWID128|——_|WID768".|=| +|16-17|| See Desc.|X add ctrl.|These:Gontrol the update:ofthe X pointer on each pass round the|||4| +|||inner lodp. Values are:|Oe|||@-| +|XADDPHR (00)|-|Add|phrase width and truncate to|q| +|||ee|phrase|boundary|(sets phrase mode)| +|||fk|28XADDPIR(OD)..-|Add pixel size, effectively add one.|||[ae| +|ce|‘SEADDINC (11) “=|Add the|increment|—_|2| +|||@| +|;|18|||See Desc.|Y add cit,|| This bit:¢gntotshow|the Y pointer is updated within the inner| +|"=||Gncrement mode.|2222.|/| +|||“122.1|loopéftis overridden|by the X control bits if they are in add|s| +|||19|TXSIGNSUB|[Xsiga.,|||This birtiay| +|fe|be set in conjunction with the|X add pixel size mode|POG| +|age|“Hea, other modes.| to make theopération subtract pixel size. It should not be set|with|Poe,|8| +|"Makes|the Y add one mode into Y subtract one.|7| +|Ace|A¥enppiny’Size”|9|Fozz08|Wiiteonly| +|This register register|contains the size in the size in size in in|pixels, and is optionally used for clipping writes, so that if the pointer leaves and is optionally used for clipping writes, so that if the pointer leaves is optionally used for clipping writes, so that if the pointer leaves optionally used for clipping writes, so that if the pointer leaves used for clipping writes, so that if the pointer leaves for clipping writes, so that if the pointer leaves clipping writes, so that if the pointer leaves writes, so that if the pointer leaves so that if the pointer leaves that if the pointer leaves if the pointer leaves the pointer leaves pointer leaves leaves|1| +|the|window:|bounds|no write isperftmed. The width is an unsigned fifteen bit value in the low word, the write isperftmed. The width is an unsigned fifteen bit value in the low word, the isperftmed. The width is an unsigned fifteen bit value in the low word, theperftmed. The width is an unsigned fifteen bit value in the low word, the The width is an unsigned fifteen bit value in the low word, the width is an unsigned fifteen bit value in the low word, the is an unsigned fifteen bit value in the low word, the an unsigned fifteen bit value in the low word, the unsigned fifteen bit value in the low word, the fifteen bit value in the low word, the bit value in the low word, the value in the low word, the in the low word, the the low word, the low word, the word, the the| +|height an urisignéd an urisignéd urisignéd|fifteen|bit value value|it|the high word. The top bit of each word high word. The top bit of each word word. The top bit of each word The top bit of each word top bit of each word bit of each word of each word each word word|is ignored. ignored.| +|The window origia{0,9).is origia{0,9).is|always|at|the|top left hand corner of the window, and so clipping is performed left hand corner of the window, and so clipping is performed hand corner of the window, and so clipping is performed corner of the window, and so clipping is performed the window, and so clipping is performed window, and so clipping is performed and so clipping is performed so clipping is performed clipping is performed is performed performed| +|when the pointer values the pointer values pointer values values|aré:negative,|or when the pointer values are greater than or equal to these values. when the pointer values are greater than or equal to these values. the pointer values are greater than or equal to these values. pointer values are greater than or equal to these values. values are greater than or equal to these values. are greater than or equal to these values. than or equal to these values. or equal to these values. equal to these values. to these values. these values. values.|If| +|the desired desired|clip rectangledoes:net rectangledoes:netdoes:netnet|have|its top left corner at the window origin, then the window base register top left corner at the window origin, then the window base register left corner at the window origin, then the window base register corner at the window origin, then the window base register at the window origin, then the window base register the window origin, then the window base register window origin, then the window base register origin, then the window base register then the window base register the window base register window base register base register register| +|should be modified to make be modified to make modified to make to make make|it the top left corner of the clip rectangle. the top left corner of the clip rectangle. top left corner of the clip rectangle. left corner of the clip rectangle. corner of the clip rectangle. the clip rectangle. clip rectangle. rectangle.|q| + +**----- End of picture text -----**
+ + +This register register contains the size in the size in size in in pixels, and is optionally used for clipping writes, so that if the pointer leaves and is optionally used for clipping writes, so that if the pointer leaves is optionally used for clipping writes, so that if the pointer leaves optionally used for clipping writes, so that if the pointer leaves used for clipping writes, so that if the pointer leaves for clipping writes, so that if the pointer leaves clipping writes, so that if the pointer leaves writes, so that if the pointer leaves so that if the pointer leaves that if the pointer leaves if the pointer leaves the pointer leaves pointer leaves leaves the window: bounds no write isperftmed. The width is an unsigned fifteen bit value in the low word, the write isperftmed. The width is an unsigned fifteen bit value in the low word, the isperftmed. The width is an unsigned fifteen bit value in the low word, theperftmed. The width is an unsigned fifteen bit value in the low word, the The width is an unsigned fifteen bit value in the low word, the width is an unsigned fifteen bit value in the low word, the is an unsigned fifteen bit value in the low word, the an unsigned fifteen bit value in the low word, the unsigned fifteen bit value in the low word, the fifteen bit value in the low word, the bit value in the low word, the value in the low word, the in the low word, the the low word, the low word, the word, the the height an urisignéd an urisignéd urisignéd fifteen bit value value it the high word. The top bit of each word high word. The top bit of each word word. The top bit of each word The top bit of each word top bit of each word bit of each word of each word each word word is ignored. ignored. The window origia{0,9).is origia{0,9).is always at the top left hand corner of the window, and so clipping is performed left hand corner of the window, and so clipping is performed hand corner of the window, and so clipping is performed corner of the window, and so clipping is performed the window, and so clipping is performed window, and so clipping is performed and so clipping is performed so clipping is performed clipping is performed is performed performed when the pointer values the pointer values pointer values values aré:negative, or when the pointer values are greater than or equal to these values. when the pointer values are greater than or equal to these values. the pointer values are greater than or equal to these values. pointer values are greater than or equal to these values. values are greater than or equal to these values. are greater than or equal to these values. than or equal to these values. or equal to these values. equal to these values. to these values. these values. values. If the desired desired clip rectangledoes:net rectangledoes:netdoes:netnet have its top left corner at the window origin, then the window base register top left corner at the window origin, then the window base register left corner at the window origin, then the window base register corner at the window origin, then the window base register at the window origin, then the window base register the window origin, then the window base register window origin, then the window base register origin, then the window base register then the window base register the window base register window base register base register register should be modified to make be modified to make modified to make to make make it the top left corner of the clip rectangle. the top left corner of the clip rectangle. top left corner of the clip rectangle. left corner of the clip rectangle. corner of the clip rectangle. the clip rectangle. clip rectangle. rectangle. } © 1992-95 Atari Corp. Confidential Information IER Property ofAtari Corporation June7,1995 + +June7,1995 + +| + +| =. + +| | | + +| + +| AAcRING’? AN Inéreinient Bfmetion/ 97/9 F02220°» Write only This is the fractional parts of the increment described above. + +## 1 Jaguar Software Reference Manual - Version 24 Page 57 | A= et mmm OOS Raat + +| | This register contains the X (low word) and Y (high word) pointers onto the window, and are the location } where the next pixel will be written. They are sixteen-bit signed values. If X and Y values go out of range = positively then they will advance through memory (X will wrap onto the next line, Y will go off the end of the @ ~~ window). Only X values in the range 0-32767 and Y values in the range 0-4095:idl:produce valid addresses | from the address generator, values outside this range are for clipping purposes Only. 282. ALsten oa sep vas mn rome wares The step register contains two signed sixteen bit values, which are the X step (iéw Word) and Y step (high | word). These may be added to the X and Y pointer on each passround the outer loop, between passes through the inner loop. OE Sa | When calculating the step value for phrase-mode blits, note that the X pointer will be left pointing at‘the start of the first phrase not written by the blit.an Ad oFSTER TAN Step Fraction Value 1 F02214 “aie only i The step fraction register may be added to the fractional parts Of He'Al pointer in the same manner as the step value. This is used when Al is being used'fG'scan over the source Gf a scaled or rotated image. me AAoRPIKEL “AN PINel Pointer Fraction. FozaIB Readiite 4 This register contains the fractional parts of the pointer when At isbeing bed to implement a DDA. based and the Y part in the high word. address generator, for line-drawing,etc.The X part is.in the lowWord. Arne nnn een Or eriaIC wien The increment is added to.the pointer value within the inner loap'when the address update is in add increment mode. This register contaias'the two 16 bit signed integer parts of the increment, the X part is in the low word, the Y part in the high word... EEE + +| + +poo BASe CAD Baebnauister et )Foazas Tete only 32-bit register cdptaining a pointer to the base of the window pointed to by A2. This address must be phrase + +© 1992-95 Atari Corp. + +Confidential Information JPR Property ofAtari Corporation + +June 7, 1995 + +; Page 58 + +Jaguar SoftwareReference Manual - Version 2.4 + +' E | ' | :' | a 4 ; | 4 | q a q a. 3 4 + +| 1 - Add one Add one one ee Ce with theX add pixel size mode to make theX add pixel size mode to make the add pixel size mode to make the pixel size mode to make the size mode to make the mode to make the to make the make the the 19 | Xsign Xsign This bit may be set ingonjunction bit may be set ingonjunction may be set ingonjunction be set ingonjunction set ingonjunctiongonjunction operation subtract pixel subtract pixel size. It should'not be.set with other modes. with other modes. other modes. modes. | 20. |Ysign | Makes the Y add one Makes the Y add one the Y add one Y add one add one one ‘siide into Y subtract Gi6... subtract Gi6... Gi6... | This register is used as the window aie only if thé sense that it Hasebe used 10 AND mask the pointer . register when the Mask flag is set. “This causes the address.to wrap withisi'4 Tectangular area and may be used | This register contains the register contains the contains the ¥ (low word) and Y (high Y (high (high ord) posaters onto the window, and are the location onto the window, and are the location the window, and are the location window, and are the location and are the location are the location bit sgned values. If X and Y values go out of range and Y values go out of range Y values go out of range values go out of range go out of range out of range of range range ; where the next pixel will the next pixel will next pixel will pixel will will be: written. written. They are sixteeii sixteeii + +| { : + +| + +Aset of flags controlling various aspects of the A2 window and how addresses are updated. + +**==> picture [496 x 250] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||| +|---|---|---|---|---|---|---|---| +|Bits|Name|Description| +|Por|[rich||| +|[3-5| +|[68|| Pixelsize||As Al.|ek| +|[9-14||Zoffset|[|AsAl.|Be|PE| +|[iS|[Mask[Width|__|| As Enab es A|l|.|Boolean AND masking of the A2|pointeroo by:its.window|register.cs 22245.| +|the inner loop.|#22:| +|16-17|| X add ctrl.|These control the update of the X pointer on each passitgiund| +|||QO - Add phrase width (truncate to phrase boundary)|EEE bean| +|01|- Add pixel size (effectively add oné¥|2|OSE| +|10|- Add zero|EEE|Se| +|)| +|18|| Y add ctrl.|This0 - Add bit controls zero|how the Ycntte, pointer isupdated withia:the-inner loop.OPER||| +|1|- Add one Add one one|ee|Ce| +|with|theX add pixel size mode to make theX add pixel size mode to make the add pixel size mode to make the pixel size mode to make the size mode to make the mode to make the to make the make the the| +|19|| Xsign Xsign|This bit may be set ingonjunction bit may be set ingonjunction may be set ingonjunction be set ingonjunction set ingonjunctiongonjunction| +|operation subtract pixel subtract pixel|size.|It|should'not|be.set with other modes. with other modes. other modes. modes.| +|||20. |Ysign|| Makes the Y add one Makes the Y add one the Y add one Y add one add one one|‘siide|into|Y subtract Gi6... subtract Gi6... Gi6...| + +**----- End of picture text -----**
+ + +This register contains the register contains the contains the ¥ (low word) and Y (high Y (high (high ord) posaters onto the window, and are the location onto the window, and are the location the window, and are the location window, and are the location and are the location are the location bit sgned values. If X and Y values go out of range and Y values go out of range Y values go out of range values go out of range go out of range out of range of range range where the next pixel will the next pixel will next pixel will pixel will will be: written. written. They are sixteeii sixteeii positively then they will advance through memory (X will wrap onto the next line, Y will go off the end of the window). Only X values’in the range 0:32767 and Y values in the range 0-4095 will produce valid addresses from the addressgenerator, values outside'thas range are for clipping purposes only. ea ot n= The step‘register contains two signed. sixteen bit values, which are the X step (low word) and Y step (high word). Thesé:iHay,be added to the cand Y pointer on each pass round the outer loop, between passes through When calculating the step value for pirase-mode blits, note that the X pointer will be left pointing at the start of the first phrase not writerby tbe biit. + +© 1992.95 AtariCorp. + +| + +1 + +ConfidentialInformation “AOR Property of Atari Corporation + +June 7, 1995 + +| | + +| | + +| + +**==> picture [560 x 723] intentionally omitted <==** + +**----- Start of picture text -----**
+i 1 Jaguar Software Reference Manual - Version 2.4 Page 59
i Gonrolnegisies
Si BOCMD “Command Register = iii F022 Write only
@ This register describes the operation of the Blitter. A write to this register initiates: Hitter. operation, so it
j should be written to last when setting up a Blitter command. Control bits ae
' Bits 0-5 enable corresponding memory cycles within the inner loop. Destinatign.write cycles are tijways
performed (subject to comparator control), but all other cycle types are optiongh::. eeceen
De SRCEN ~~ | Enables a souce data read as part of he inner loop operas
1 | SRCENZ Enables a source Z read as part of thé isner loop operation-"Eisbit is ignored
2 |SRCENX Enables an "extra" source data read af the sta¢t af.an inner loop operation. This is
bit-to-pixel expansion. If SRCENZ is set an extra ‘Ligadis also performed.
| Co Seeeaeee
3 DSTEN Enables a destination data:tead:p a rts of inner loop operaiige;.Thismust always
be performed for pixelssitialiertHani®bits,where part of the'déStination data
write will need to restére the data that 'Was.previously there.
y ~ the effect ofintibiting destitiatiatwrites within the:inner loop, but Blitter
| operation wiltcontinte,
| 7eeeSet to #ef0. ee
. Bits 8-10 enable address updates wiikiin the outer loop. Thes¢'should only be enabled when required as there
is a one-tick overheadper update. OEP ee OEE
|e UPDAIFa __..| Ade d thee fractional part inner loop operations of the Al in step thé outervalue lo p.t o the fractional part of the Al pointer |
[GRA10 Aner he SRL a eer ee
[loop
hee te the 2step value to the A2 pointer between inner loop operations in the outer |
Reverses the notinal toles of the address registers from A] as destination and A2
fe geeeos.| as source to A2 as déstization and Al as source.
12 GOURD “| Bnable Gouraud shaded data updates within inner loop, i.e. the intensity gradient
es }¥gactional part, repeated four times, is added to the computed intensity fraction
cio register (a.k.a. destination data), then the intensity gradient integer part is added
. . oh“lee | with @ka. thé:¢arry paltem from data). theprevious add to the computed intensity value register
13. |ZBUFF |Enable polygon Z data updates within the inner loop, i.e. add Z fractions to the Z
8 ‘integerstea(source (source Z 1). Z 2), then add with carry the Z integer part to the Z
i w {44 Enable carry into the top byte of the intensity integers in Gouraud data updates
\ (leave clear for CRY mode).
sR15 TOPNEN ooEnable carryeeinto the top nibble of the intensity integers in Gouraud data updates
I
; © 1992-95 Atari Corp. Confidential Information AR Property ofAtari Corporation June 7, 1995
**----- End of picture text -----**
+ + +Jaguar Software Reference Manual - Version 2.4 + +: + +| Bits 16-17 select alternative write data - the default source is the 16-17 select alternative write data - the default source is the select alternative write data - the default source is the alternative write data - the default source is the write data - the default source is the data - the default source is the - the default source is the the default source is the default source is the source is the is the the Logic Function Unit, whose output is Function Unit, whose output is Unit, whose output is whose output is output is is | controlled by the LFUFUNC bits. || 17 |ADDDSEL | Selectssource data the sum is a signed of source offset. and Leave destination TOPBEN data as and theTOPNEN write data. clear Note and that the the source | data gives three signed offsets for each of the CRY fields,.and the intensity value 5 i will saturate. Set TOPBEN and TOPNEN and sixtben bit saturating adds are | | : . | performed. This can be used to lighten and darkén:images. THs works only is 164 | . 18-20 |ZMODE These bits give the conditions under which the Z éatmparator generatesae thhibit. Setting them all to zero disables the Z comparator. fhis:can only operate in EOsDit } per pixel mode. eae Tee | | bit 0 - source Jess than destination 25.. cece GEE | | bit 2 - source greater than destination pecrer eee OEE | 21-24 | - The bits control the data produced by the: logic function unit. The output is the @ [ Boolean OR of the following minterms> eee } 4 I bit 0 - NOT source AND NOT[destination] CHEE P| bit 2 - source AND N@Fdestinatioa:::5... OE | a bit 3 - source AND destination WHEE | 4 | | The following are assignéd equates for combinations of the above: q |: | LFU_CLEAR —€f05. LFU_LSAD: S&D LFUNOTS =1S... LFULNSORD — !S|D 4 | LFUNOFD 2 'D |&LFUSORND — S/!D | 4 f LFU_N'SXORD '(S*D) “2.-FU_SORD S|D | ff | «4 LFU_LNSORND = !S|!D = LFU_ONE ones | _ the pixel value comparator compare destination data with pattern data rather § 4 | | 25 ‘Make | “than source data with pattern data. i a | 26 |BCOMPEN “EEnable write inbibit on the output from the bit comparator. This works pixel by =| = } 4 pixel in any Size, Wut over whole phrases only on 8-bit pixels. When operating in | picture [213 x 26] intentionally omitted <==** + +**----- Start of picture text -----**
+L Jaguar Software Reference Manual - Version 2.4
**----- End of picture text -----**
+ + +**==> picture [34 x 26] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 61
**----- End of picture text -----**
+ + +**==> picture [517 x 584] intentionally omitted <==** + +**----- Start of picture text -----**
+29 BUSHI
j
Setting BUSH cerosslong-blits- may disturb the sereen
This bit should not be used due to a bug in the Jagwat:Gonsole.
:
30 |SRCSHADE | This bit uses the IINC register to modify the intensity of data:tead from the source
_ | address, and may be used to lighten or darken itdages. It may be:nsédin
conjunction with GOURZ, but not GOURD. The:data read from the:satixce is
modified, so source data should be selected using the.LFU as the write Gath: This
|
j is particularly intended for performing flat shading ontexture mapped SUrEagES.
ei- a ae
Bit State Description
IDLE When set, the blitter is completely idle and its last bus transaction is |
completed. ao
1 STOPPED When set, the blister 48'stopped in its collision détéétion mode - see the
collision confrgi register Below. “eee
inner SREADX
” 4 inner SLREADX Diagnostic only... WHEE
inner SREAD Diagnostic only. 22:85. eee
inner DREAD “Psagnosti¢ obly. Tieatl
[8| inner DEREAD [Diagnostic OB. rs CERES
5Tinner DWRITE | EBagnostic ony,
inner DZWRITE
12 | outer INNER::.. Diagnostic only. HEE
13 | outer AIFUPBATE | Diagnostic onlyfies..
outer ALUPDATE:=: |.Diagnostic only 22 eeeee
Bcountilmieounters neater ear yFezesc “ Witeonly
The low word is the numibey 6f iterations of the inner loop operation. This is a sixteen bit value which reloads
the inner }gop counter on each entry to the inner loop.
The high ward isthe number ofiterations of the outer loop. This is a sixteen bit value which is loaded directly
into the outerloap counter. Eee
The counters both accept values in'the range 1 to 65536 (encoded as 0).
**----- End of picture text -----**
+ + +: + +© 1992-95 Atari Corp. Confidential Information PO Property of Atari Corporation + +June 7, 1995 + +|[Page][ 62] + +Jaguar Software Reference Manual - Version 2.4 + +1 = q ' ‘ 4 Y : = | = | | || + +| + +i z + +buns All data registers are sixty-four bits, unless otherwise noted. + +The source data may be pre-loaded with data for bit-to-byte expansion. The'spiirce data tegiiter also serves to hold the four sixteen bit fractional parts of intensity when computing Gouri shaded intensity... je “peTore=r -peetnation Data Register! FOzRAS! | Write only") This 64-bit register holds the destination data - which may be cidféy read in the innertogp tallow ae Or.jtmay be used to Bwve background or unmodified pixels to be written back correctly when in phrase-mode, paper colours, if it is not read. Ee OEE pousTz we bectnationz nasser” = POzebO Reon This 64-bit register holds the destination Z value, ind may be used.as the data register. = pisnezmconerzneaaets | nn Hiss niteony The source Z register 1 is also used to hold the four intéget:parts of computed Z. eisncze’Source’z Heuister2 Roane Wetponiy The source Z register 2 is also used:ta:hold the folst fraction patts of computed Z. ecparo smeeanern Daanegicter Ul) ees awateony The pattern data register alsa sérves to hold the comipuiigaiatensity integer parts and their associated colours. ment oo Romero Witte only BfiNC Intensity incremen’ This thirty te bi register holds the integer‘aiid fractional parts of the intensity increment used for Gouraud thé colour value, and should therefore normally be left set to shading.Note that the top eight bits will! modify ene eer nee ETA ion This thirty-two bit register holds the integer and fractional parts of the Z increment used for computed Z + +: + +| + +© 1992-95 AtariCorp. + +Confidential Information “JPR Property of Atari Corporation + +June 7,1995 + +Page 63 + +| This registers allows the Blitter to be stopped when an inner loop write inhibit occurs. Blitter stop will occur | in painting in pixel-by-pixel mode (X add control is 1), BKGWREN is clear, and one of BCOMPEN, 7 DCOMPEN or ZMODEO-2 is set, along with the matching condition. @ The Blitter operation may at that point be resumed or aborted. Peete + +| | ' + +| + +## Ss Jaguar Software Reference Manual - Version 2.4 a BSTOR = hollision'contfol——— ORR R Wiiteconly + +**==> picture [2 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+_
**----- End of picture text -----**
+ + +**==> picture [480 x 98] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||| +|---|---|---|---|---|---|---|---|---| +|°| +|Bit|Name|Description| +|0|||RESUME|Writing a one to this bit when the|Blitter has skapped under the|ali6ve|conditions| +|will cause|the Blitter to resume operations.|Writizig:a zero has no effects:| +|1|ABORT|Writing a one to this bit when the Blitter has stopped|tinder|the above conditions| +|||will cause the Blitter|to terminate|the current|operation:|and.revert|to|its|idle:sfate.| +|Writing a zero has no effect.|et|TENGE|ese| +|STOPEN|Set this bit to enable Blitter collision $t6ps::|Clear|it to disable thers; /22222"| + +**----- End of picture text -----**
+ + +**==> picture [521 x 150] intentionally omitted <==** + +**----- Start of picture text -----**
+pero ntentyse rene wiite only
: Bie _imensity2 =. Foeeso mneonly
| BH intensityi =», Foezea §=Wilteonly
| Bio _—sintensityo i“ sR Ozeee Wille only
4 These four registers provide an alternate view of the:computed intensity integer parts (pattern data) and
£., computed intensity fractional parts (source data) régastérs, They are a convéitient way of updating the
2 intensity values for Gouraud shading. .Rash:register is @:24:bit value (8.16 bifiumber), with the top eight bits
" —_—iunused, that modifies the corresponding fieHis of the computed: iatensity integer and fractional part registers.
' Note that the colour fields in the pattern data registers are unafféétedby Writes to these registers.
**----- End of picture text -----**
+ + +**==> picture [497 x 54] intentionally omitted <==** + +**----- Start of picture text -----**
+B27 2m + +j.- === Foeeso $ Witeonly
Bz mt i —“‘C*lLCC*é COG OCWiitccnly
B20 2 = 4) Ro2zes Wateonly
**----- End of picture text -----**
+ + +These registers are analagous to‘the ittensity registers, and are for Z buffer operation. They affect the corresponding parts ofthe computed'Z imteger (source Z1) and computed Z fraction (source Z2) registers. They are 32 bit values (16.16 bit numbers}. + +| + +EN © 1992-95 Atari Corp. Confidential Information PPR Property ofAtari Corporation June 7, 1995 + +- Page 64 + +64 Jaguar Software Reference Manual - Version 24 1 - Moccsuropemtion section discusses some of the typical modes of operation of the Blitter. discusses some of the typical modes of operation of the Blitter. some of the typical modes of operation of the Blitter. of the typical modes of operation of the Blitter. the typical modes of operation of the Blitter. typical modes of operation of the Blitter. modes of operation of the Blitter. of operation of the Blitter. operation of the Blitter. of the Blitter. the Blitter. Blitter. It is by no means a by no means a means a a complete |g to all possible modes, but will show how to do certain common operations. This is the best way to learn all possible modes, but will show how to do certain common operations. This is the best way to learn possible modes, but will show how to do certain common operations. This is the best way to learn modes, but will show how to do certain common operations. This is the best way to learn but will show how to do certain common operations. This is the best way to learn will show how to do certain common operations. This is the best way to learn show how to do certain common operations. This is the best way to learn how to do certain common operations. This is the best way to learn to do certain common operations. This is the best way to learn do certain common operations. This is the best way to learn certain common operations. This is the best way to learn common operations. This is the best way to learn operations. This is the best way to learn This is the best way to learn is the best way to learn the best way to learn best way to learn way to learn to learn learn = to use use the Blitter. Throughout this section, section, flags in flags registers that are not mentioned should:always:Deset in flags registers that are not mentioned should:always:Deset flags registers that are not mentioned should:always:Deset that are not mentioned should:always:Deset are not mentioned should:always:Deset not mentioned should:always:Deset mentioned should:always:Deset should:always:Desetset to Zero. Registers , 4 are not mentioned need not be set up. not mentioned need not be set up. mentioned need not be set up. not be set up. be set up. set up. up. HP OTUREEEE 4 pickMeves & simplest of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter another. The Blsiter The Blsiter Blsiter The Blsiter Blsiter Blsiter | 4 very rapid way rapid way way rapid way way way of transferring data? data? data? _ perform this operation one phrase at a time, and operation one phrase at a time, and one phrase at a time, and phrase at a time, and at a time, and a time, and time, and and operation one phrase at a time, and one phrase at a time, and phrase at a time, and at a time, and a time, and time, and and one phrase at a time, and phrase at a time, and at a time, and a time, and time, and and phrase at a time, and at a time, and a time, and time, and and at a time, and a time, and time, and and a time, and time, and and time, and and and it is therefaré:a is therefaré:a therefaré:a is therefaré:a therefaré:a therefaré:a source address of the data should be stored in the A2 base register, and the destination address of the data should be stored in the A2 base register, and the destination of the data should be stored in the A2 base register, and the destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination address of the data should be stored in the A2 base register, and the destination of the data should be stored in the A2 base register, and the destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination of the data should be stored in the A2 base register, and the destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination base register, and the destination register, and the destination and the destination the destination destination register, and the destination and the destination the destination destination and the destination the destination destination the destination destination destination address 4 4 4 the Al Al Al base register. If these are not phrase aligned addresses then they register. If these are not phrase aligned addresses then they If these are not phrase aligned addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they register. If these are not phrase aligned addresses then they If these are not phrase aligned addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they If these are not phrase aligned addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they phrase aligned addresses then they aligned addresses then they addresses then they aligned addresses then they addresses then they addresses then they shioild't¢e rounded down toa phrase toa phrase phrase toa phrase phrase phrase | @ boundary, and the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The and the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The and the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The into the X pointer. The the X pointer. The X pointer. The pointer. The The the X pointer. The X pointer. The pointer. The The X pointer. The pointer. The The pointer. The The The Y = pointer should be set to zero. should be set to zero. be set to zero. set to zero. to zero. zero. should be set to zero. be set to zero. set to zero. to zero. zero. be set to zero. set to zero. to zero. zero. set to zero. to zero. zero. to zero. zero. zero. OE , 4 The length of the block should be stored in the innel length of the block should be stored in the innel of the block should be stored in the innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel length of the block should be stored in the innel of the block should be stored in the innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel of the block should be stored in the innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel be stored in the innel stored in the innel in the innel the innel innel stored in the innel in the innel the innel innel in the innel the innel innel the innel innel innel Sounder =the =the =the number represents‘thé ‘hizmber of pixels, so represents‘thé ‘hizmber of pixels, so‘thé ‘hizmber of pixels, so ‘hizmber of pixels, so of pixels, so pixels, so represents‘thé ‘hizmber of pixels, so‘thé ‘hizmber of pixels, so ‘hizmber of pixels, so of pixels, so pixels, so‘thé ‘hizmber of pixels, so ‘hizmber of pixels, so of pixels, so pixels, so ‘hizmber of pixels, so of pixels, so pixels, so of pixels, so pixels, so pixels, so so 1 q largest block that can be copied block that can be copied that can be copied can be copied be copied copied block that can be copied that can be copied can be copied be copied copied that can be copied can be copied be copied copied can be copied be copied copied be copied copied copied is 32767 32767 32767 pixéis;wherewherewhere 32+bit pixels are set this is 128K: For smaller set this is 128K: For smaller this is 128K: For smaller is 128K: For smaller 128K: For smaller For smaller smaller set this is 128K: For smaller this is 128K: For smaller is 128K: For smaller 128K: For smaller For smaller smaller this is 128K: For smaller is 128K: For smaller 128K: For smaller For smaller smaller is 128K: For smaller 128K: For smaller For smaller smaller 128K: For smaller For smaller smaller For smaller smaller smaller , 4 blocks it is usually easier to it is usually easier to is usually easier to usually easier to easier to it is usually easier to is usually easier to usually easier to easier to is usually easier to usually easier to easier to usually easier to easier to easier to work in bytes. The in bytes. The bytes. The The in bytes. The bytes. The The bytes. The The The Outer counter shotild bé:set to one. shotild bé:set to one. one. shotild bé:set to one. one. one. FY The Blitter needs to be told how to update the pointeis Blitter needs to be told how to update the pointeis needs to be told how to update the pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis Blitter needs to be told how to update the pointeis needs to be told how to update the pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis needs to be told how to update the pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis to update the pointeis update the pointeis the pointeis pointeis update the pointeis the pointeis pointeis the pointeis pointeis pointeis after each read each read read each read read read aiid Write cycle, so the add control bits Write cycle, so the add control bits cycle, so the add control bits so the add control bits the add control bits add control bits control bits bits Write cycle, so the add control bits cycle, so the add control bits so the add control bits the add control bits add control bits control bits bits cycle, so the add control bits so the add control bits the add control bits add control bits control bits bits so the add control bits the add control bits add control bits control bits bits the add control bits add control bits control bits bits add control bits control bits bits control bits bits bits ] ‘ ; are set to zero to indicate phrase mode in both addréss flags set to zero to indicate phrase mode in both addréss flags to zero to indicate phrase mode in both addréss flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags set to zero to indicate phrase mode in both addréss flags to zero to indicate phrase mode in both addréss flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags to zero to indicate phrase mode in both addréss flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags in both addréss flags both addréss flags addréss flags flags both addréss flags addréss flags flags addréss flags flags flags registers. HEE f 4 Having set these, set these, these, set these, these, these, a command command command is stored stored stored ti thé command register,.with the SRGEN bit set to enable source register,.with the SRGEN bit set to enable source the SRGEN bit set to enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source register,.with the SRGEN bit set to enable source the SRGEN bit set to enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source the SRGEN bit set to enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source bit set to enable source set to enable source to enable source enable source set to enable source to enable source enable source to enable source enable source enable source reads, and the LFUFUNC bits set to and the LFUFUNC bits set to the LFUFUNC bits set to LFUFUNC bits set to bits set to set to to and the LFUFUNC bits set to the LFUFUNC bits set to LFUFUNC bits set to bits set to set to to the LFUFUNC bits set to LFUFUNC bits set to bits set to set to to LFUFUNC bits set to bits set to set to to bits set to set to to set to to to 1100 to'select. source data: data: data: Efthe.source4@'not phrase aligned,the.source4@'not phrase aligned,4@'not phrase aligned, phrase aligned, aligned,the.source4@'not phrase aligned,4@'not phrase aligned, phrase aligned, aligned,4@'not phrase aligned, phrase aligned, aligned, phrase aligned, aligned, aligned, then the the the ; 4 SRCENX bit must be set. bit must be set. must be set. be set. set. bit must be set. must be set. be set. set. must be set. be set. set. be set. set. set. ae Hee . Rectangle Moves Moves a. Rectangle moves are vety:like block moves, but use a two-dimensional moves are vety:like block moves, but use a two-dimensional are vety:like block moves, but use a two-dimensional block moves, but use a two-dimensional moves, but use a two-dimensional but use a two-dimensional a two-dimensional two-dimensional data set rather than the one-dimension set rather than the one-dimension rather than the one-dimension than the one-dimension the one-dimension one-dimension | 4 of a block a block block operation. This:bringsin various new congepts. This:bringsin various new congepts.in various new congepts. new congepts. congepts. 8 , 7 A two-dimensional two-dimensional array Gf pixels is.stored in memory Gf pixels is.stored in memory pixels is.stored in memory in memory memory #84 linear array of phrases. This will usually be the linear array of phrases. This will usually be the array of phrases. This will usually be the of phrases. This will usually be the phrases. This will usually be the This will usually be the will usually be the usually be the be the the { 7 data field of a a bit-mappedobject.object. Fhe Blitter has to know the width of this window of pixels. As an address in Blitter has to know the width of this window of pixels. As an address in has to know the width of this window of pixels. As an address in to know the width of this window of pixels. As an address in know the width of this window of pixels. As an address in the width of this window of pixels. As an address in width of this window of pixels. As an address in of this window of pixels. As an address in this window of pixels. As an address in window of pixels. As an address in of pixels. As an address in pixels. As an address in As an address in an address in address in i. the window, window, in pixel terms, is given pixel terms, is given terms, is given is given given by#hé:X-pointer plus the width times the#hé:X-pointer plus the width times the plus the width times the the width times the width times the times the the Y pointer; a multiply operation a multiply operation operation , is necessary to:compute the address. To avoid address. To avoid To avoid avoid the.need for a hardware multiplier in the Blitter address a hardware multiplier in the Blitter address hardware multiplier in the Blitter address multiplier in the Blitter address in the Blitter address the Blitter address Blitter address address q generator,the Widththe Width Width iS‘rather strangely encoded encoded j * Blitter window width is‘expressed as a floating-point number. The actual value has a four-bit exponent and a window width is‘expressed as a floating-point number. The actual value has a four-bit exponent and a width is‘expressed as a floating-point number. The actual value has a four-bit exponent and a is‘expressed as a floating-point number. The actual value has a four-bit exponent and a‘expressed as a floating-point number. The actual value has a four-bit exponent and a as a floating-point number. The actual value has a four-bit exponent and a a floating-point number. The actual value has a four-bit exponent and a floating-point number. The actual value has a four-bit exponent and a number. The actual value has a four-bit exponent and a The actual value has a four-bit exponent and a actual value has a four-bit exponent and a value has a four-bit exponent and a has a four-bit exponent and a a four-bit exponent and a four-bit exponent and a exponent and a and a " three-bit mantissa, whose top bitis.implicit. This allows Blitter window widths to be any value whose binary whose top bitis.implicit. This allows Blitter window widths to be any value whose binary top bitis.implicit. This allows Blitter window widths to be any value whose binary bitis.implicit. This allows Blitter window widths to be any value whose binaryis.implicit. This allows Blitter window widths to be any value whose binary This allows Blitter window widths to be any value whose binary allows Blitter window widths to be any value whose binary Blitter window widths to be any value whose binary window widths to be any value whose binary widths to be any value whose binary to be any value whose binary be any value whose binary any value whose binary value whose binary whose binary binary ] 4 form has has #6:#hore than three significant digits followed by some number of zeroes. three significant digits followed by some number of zeroes. significant digits followed by some number of zeroes. digits followed by some number of zeroes. followed by some number of zeroes. by some number of zeroes. some number of zeroes. number of zeroes. of zeroes. zeroes. 4 As an example, an example, hefe. are how various svindow widths encode: are how various svindow widths encode: how various svindow widths encode: various svindow widths encode: svindow widths encode: widths encode: encode: i : Value Binary Floating-point Encoded : : =25:00G0000 10100 10100 1.01 x 2%4 x 2%4 0100 01 01 | —s0|| b00001010000- | —_101x2%6 —_101x2%6 [LT 900010000000. |[[_-1.00x2°7_]] | 011100 1 640] oori9000000.—fOx2"9 T0011 ] Ti1900000000 | iix2i {10 : a a____ © 1992-95 Atari Corp. Confidential Information FRProperty ofAtari Corporation June7,1995 4 + +| Moccsuropemtion { This section discusses some of the typical modes of operation of the Blitter. discusses some of the typical modes of operation of the Blitter. some of the typical modes of operation of the Blitter. of the typical modes of operation of the Blitter. the typical modes of operation of the Blitter. typical modes of operation of the Blitter. modes of operation of the Blitter. of operation of the Blitter. operation of the Blitter. of the Blitter. the Blitter. Blitter. It is by no means a by no means a means a a complete | guide to all possible modes, but will show how to do certain common operations. This is the best way to learn all possible modes, but will show how to do certain common operations. This is the best way to learn possible modes, but will show how to do certain common operations. This is the best way to learn modes, but will show how to do certain common operations. This is the best way to learn but will show how to do certain common operations. This is the best way to learn will show how to do certain common operations. This is the best way to learn show how to do certain common operations. This is the best way to learn how to do certain common operations. This is the best way to learn to do certain common operations. This is the best way to learn do certain common operations. This is the best way to learn certain common operations. This is the best way to learn common operations. This is the best way to learn operations. This is the best way to learn This is the best way to learn is the best way to learn the best way to learn best way to learn way to learn to learn learn E how to use use the Blitter. u Throughout this section, section, flags in flags registers that are not mentioned should:always:Deset in flags registers that are not mentioned should:always:Deset flags registers that are not mentioned should:always:Deset that are not mentioned should:always:Deset are not mentioned should:always:Deset not mentioned should:always:Deset mentioned should:always:Deset should:always:Desetset to Zero. Registers i that are not mentioned need not be set up. not mentioned need not be set up. mentioned need not be set up. not be set up. be set up. set up. up. HP OTUREEEE i pickMeves | The simplest of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter simplest of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter another. The Blsiter The Blsiter Blsiter The Blsiter Blsiter Blsiter very rapid way rapid way way rapid way way way of transferring data? data? data? i will perform perform this operation one phrase at a time, and operation one phrase at a time, and one phrase at a time, and phrase at a time, and at a time, and a time, and time, and and operation one phrase at a time, and one phrase at a time, and phrase at a time, and at a time, and a time, and time, and and one phrase at a time, and phrase at a time, and at a time, and a time, and time, and and phrase at a time, and at a time, and a time, and time, and and at a time, and a time, and time, and and a time, and time, and and time, and and and it is therefaré:a is therefaré:a therefaré:a is therefaré:a therefaré:a therefaré:a The source address of the data should be stored in the A2 base register, and the destination address of the data should be stored in the A2 base register, and the destination of the data should be stored in the A2 base register, and the destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination source address of the data should be stored in the A2 base register, and the destination address of the data should be stored in the A2 base register, and the destination of the data should be stored in the A2 base register, and the destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination address of the data should be stored in the A2 base register, and the destination of the data should be stored in the A2 base register, and the destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination of the data should be stored in the A2 base register, and the destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination base register, and the destination register, and the destination and the destination the destination destination register, and the destination and the destination the destination destination and the destination the destination destination the destination destination destination address 4 4 4 the Al Al Al EF base register. If these are not phrase aligned addresses then they register. If these are not phrase aligned addresses then they If these are not phrase aligned addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they register. If these are not phrase aligned addresses then they If these are not phrase aligned addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they If these are not phrase aligned addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they phrase aligned addresses then they aligned addresses then they addresses then they aligned addresses then they addresses then they addresses then they shioild't¢e rounded down toa phrase toa phrase phrase toa phrase phrase phrase | boundary, and the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The and the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The and the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The into the X pointer. The the X pointer. The X pointer. The pointer. The The the X pointer. The X pointer. The pointer. The The X pointer. The pointer. The The pointer. The The The Y pointer should be set to zero. should be set to zero. be set to zero. set to zero. to zero. zero. should be set to zero. be set to zero. set to zero. to zero. zero. be set to zero. set to zero. to zero. zero. set to zero. to zero. zero. to zero. zero. zero. OE The length of the block should be stored in the innel length of the block should be stored in the innel of the block should be stored in the innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel length of the block should be stored in the innel of the block should be stored in the innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel of the block should be stored in the innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel be stored in the innel stored in the innel in the innel the innel innel stored in the innel in the innel the innel innel in the innel the innel innel the innel innel innel Sounder =the =the =the number represents‘thé ‘hizmber of pixels, so represents‘thé ‘hizmber of pixels, so‘thé ‘hizmber of pixels, so ‘hizmber of pixels, so of pixels, so pixels, so represents‘thé ‘hizmber of pixels, so‘thé ‘hizmber of pixels, so ‘hizmber of pixels, so of pixels, so pixels, so‘thé ‘hizmber of pixels, so ‘hizmber of pixels, so of pixels, so pixels, so ‘hizmber of pixels, so of pixels, so pixels, so of pixels, so pixels, so pixels, so so the largest block that can be copied block that can be copied that can be copied can be copied be copied copied largest block that can be copied block that can be copied that can be copied can be copied be copied copied block that can be copied that can be copied can be copied be copied copied that can be copied can be copied be copied copied can be copied be copied copied be copied copied copied is 32767 32767 32767 pixéis;wherewherewhere 32+bit pixels are set this is 128K: For smaller set this is 128K: For smaller this is 128K: For smaller is 128K: For smaller 128K: For smaller For smaller smaller set this is 128K: For smaller this is 128K: For smaller is 128K: For smaller 128K: For smaller For smaller smaller this is 128K: For smaller is 128K: For smaller 128K: For smaller For smaller smaller is 128K: For smaller 128K: For smaller For smaller smaller 128K: For smaller For smaller smaller For smaller smaller smaller | blocks it is usually easier to it is usually easier to is usually easier to usually easier to easier to it is usually easier to is usually easier to usually easier to easier to is usually easier to usually easier to easier to usually easier to easier to easier to work in bytes. The in bytes. The bytes. The The in bytes. The bytes. The The bytes. The The The Outer counter shotild bé:set to one. shotild bé:set to one. one. shotild bé:set to one. one. one. | | The Blitter needs to be told how to update the pointeis Blitter needs to be told how to update the pointeis needs to be told how to update the pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis Blitter needs to be told how to update the pointeis needs to be told how to update the pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis needs to be told how to update the pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis to update the pointeis update the pointeis the pointeis pointeis update the pointeis the pointeis pointeis the pointeis pointeis pointeis after each read each read read each read read read aiid Write cycle, so the add control bits Write cycle, so the add control bits cycle, so the add control bits so the add control bits the add control bits add control bits control bits bits Write cycle, so the add control bits cycle, so the add control bits so the add control bits the add control bits add control bits control bits bits cycle, so the add control bits so the add control bits the add control bits add control bits control bits bits so the add control bits the add control bits add control bits control bits bits the add control bits add control bits control bits bits add control bits control bits bits control bits bits bits i are set to zero to indicate phrase mode in both addréss flags set to zero to indicate phrase mode in both addréss flags to zero to indicate phrase mode in both addréss flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags set to zero to indicate phrase mode in both addréss flags to zero to indicate phrase mode in both addréss flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags to zero to indicate phrase mode in both addréss flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags in both addréss flags both addréss flags addréss flags flags both addréss flags addréss flags flags addréss flags flags flags registers. HEE | Having set these, set these, these, set these, these, these, a command command command is stored stored stored ti thé command register,.with the SRGEN bit set to enable source register,.with the SRGEN bit set to enable source the SRGEN bit set to enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source register,.with the SRGEN bit set to enable source the SRGEN bit set to enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source the SRGEN bit set to enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source bit set to enable source set to enable source to enable source enable source set to enable source to enable source enable source to enable source enable source enable source reads, and the LFUFUNC bits set to and the LFUFUNC bits set to the LFUFUNC bits set to LFUFUNC bits set to bits set to set to to and the LFUFUNC bits set to the LFUFUNC bits set to LFUFUNC bits set to bits set to set to to the LFUFUNC bits set to LFUFUNC bits set to bits set to set to to LFUFUNC bits set to bits set to set to to bits set to set to to set to to to 1100 to'select. source data: data: data: Efthe.source4@'not phrase aligned,the.source4@'not phrase aligned,4@'not phrase aligned, phrase aligned, aligned,the.source4@'not phrase aligned,4@'not phrase aligned, phrase aligned, aligned,4@'not phrase aligned, phrase aligned, aligned, phrase aligned, aligned, aligned, then the the the SRCENX bit must be set. bit must be set. must be set. be set. set. bit must be set. must be set. be set. set. must be set. be set. set. be set. set. set. ae Hee | Rectangle Moves Moves i Rectangle moves are vety:like block moves, but use a two-dimensional moves are vety:like block moves, but use a two-dimensional are vety:like block moves, but use a two-dimensional block moves, but use a two-dimensional moves, but use a two-dimensional but use a two-dimensional a two-dimensional two-dimensional data set rather than the one-dimension set rather than the one-dimension rather than the one-dimension than the one-dimension the one-dimension one-dimension of a block a block block operation. This:bringsin various new congepts. This:bringsin various new congepts.in various new congepts. new congepts. congepts. 8 i A two-dimensional two-dimensional array Gf pixels is.stored in memory Gf pixels is.stored in memory pixels is.stored in memory in memory memory #84 linear array of phrases. This will usually be the linear array of phrases. This will usually be the array of phrases. This will usually be the of phrases. This will usually be the phrases. This will usually be the This will usually be the will usually be the usually be the be the the data field of a a bit-mappedobject.object. Fhe Blitter has to know the width of this window of pixels. As an address in Blitter has to know the width of this window of pixels. As an address in has to know the width of this window of pixels. As an address in to know the width of this window of pixels. As an address in know the width of this window of pixels. As an address in the width of this window of pixels. As an address in width of this window of pixels. As an address in of this window of pixels. As an address in this window of pixels. As an address in window of pixels. As an address in of pixels. As an address in pixels. As an address in As an address in an address in address in Hl the window, window, in pixel terms, is given pixel terms, is given terms, is given is given given by#hé:X-pointer plus the width times the#hé:X-pointer plus the width times the plus the width times the the width times the width times the times the the Y pointer; a multiply operation a multiply operation operation is necessary to:compute the address. To avoid address. To avoid To avoid avoid the.need for a hardware multiplier in the Blitter address a hardware multiplier in the Blitter address hardware multiplier in the Blitter address multiplier in the Blitter address in the Blitter address the Blitter address Blitter address address generator,the Widththe Width Width iS‘rather strangely encoded encoded | Blitter window width is‘expressed as a floating-point number. The actual value has a four-bit exponent and a window width is‘expressed as a floating-point number. The actual value has a four-bit exponent and a width is‘expressed as a floating-point number. The actual value has a four-bit exponent and a is‘expressed as a floating-point number. The actual value has a four-bit exponent and a‘expressed as a floating-point number. The actual value has a four-bit exponent and a as a floating-point number. The actual value has a four-bit exponent and a a floating-point number. The actual value has a four-bit exponent and a floating-point number. The actual value has a four-bit exponent and a number. The actual value has a four-bit exponent and a The actual value has a four-bit exponent and a actual value has a four-bit exponent and a value has a four-bit exponent and a has a four-bit exponent and a a four-bit exponent and a four-bit exponent and a exponent and a and a | three-bit mantissa, whose top bitis.implicit. This allows Blitter window widths to be any value whose binary whose top bitis.implicit. This allows Blitter window widths to be any value whose binary top bitis.implicit. This allows Blitter window widths to be any value whose binary bitis.implicit. This allows Blitter window widths to be any value whose binaryis.implicit. This allows Blitter window widths to be any value whose binary This allows Blitter window widths to be any value whose binary allows Blitter window widths to be any value whose binary Blitter window widths to be any value whose binary window widths to be any value whose binary widths to be any value whose binary to be any value whose binary be any value whose binary any value whose binary value whose binary whose binary binary form has has #6:#hore than three significant digits followed by some number of zeroes. three significant digits followed by some number of zeroes. significant digits followed by some number of zeroes. digits followed by some number of zeroes. followed by some number of zeroes. by some number of zeroes. some number of zeroes. number of zeroes. of zeroes. zeroes. As an example, an example, hefe. are how various svindow widths encode: are how various svindow widths encode: how various svindow widths encode: various svindow widths encode: svindow widths encode: widths encode: encode: Value Binary Floating-point Encoded =25:00G0000 10100 10100 1.01 x 2%4 x 2%4 0100 01 01 | —s0|| b00001010000- | —_101x2%6 —_101x2%6 [LT : 900010000000. |[[_-1.00x2°7_]] | 011100 | 640] oori9000000.—fOx2"9 T0011 Ti1900000000 | iix2i {10 a a____ | + +The simplest of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter simplest of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter of all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter all Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter Blitter operations is a block move, copying one area of memory:oxto another. The Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter operations is a block move, copying one area of memory:oxto another. The Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter is a block move, copying one area of memory:oxto another. The Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter a block move, copying one area of memory:oxto another. The Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter block move, copying one area of memory:oxto another. The Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter move, copying one area of memory:oxto another. The Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter copying one area of memory:oxto another. The Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter one area of memory:oxto another. The Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter area of memory:oxto another. The Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter of memory:oxto another. The Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter memory:oxto another. The Blsiter another. The Blsiter The Blsiter Blsiter another. The Blsiter The Blsiter Blsiter The Blsiter Blsiter Blsiter very rapid way rapid way way rapid way way way of transferring data? data? data? will perform perform this operation one phrase at a time, and operation one phrase at a time, and one phrase at a time, and phrase at a time, and at a time, and a time, and time, and and operation one phrase at a time, and one phrase at a time, and phrase at a time, and at a time, and a time, and time, and and one phrase at a time, and phrase at a time, and at a time, and a time, and time, and and phrase at a time, and at a time, and a time, and time, and and at a time, and a time, and time, and and a time, and time, and and time, and and and it is therefaré:a is therefaré:a therefaré:a is therefaré:a therefaré:a therefaré:a The source address of the data should be stored in the A2 base register, and the destination address of the data should be stored in the A2 base register, and the destination of the data should be stored in the A2 base register, and the destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination source address of the data should be stored in the A2 base register, and the destination address of the data should be stored in the A2 base register, and the destination of the data should be stored in the A2 base register, and the destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination address of the data should be stored in the A2 base register, and the destination of the data should be stored in the A2 base register, and the destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination of the data should be stored in the A2 base register, and the destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination the data should be stored in the A2 base register, and the destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination data should be stored in the A2 base register, and the destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination should be stored in the A2 base register, and the destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination be stored in the A2 base register, and the destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination stored in the A2 base register, and the destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination in the A2 base register, and the destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination the A2 base register, and the destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination A2 base register, and the destination base register, and the destination register, and the destination and the destination the destination destination base register, and the destination register, and the destination and the destination the destination destination register, and the destination and the destination the destination destination and the destination the destination destination the destination destination destination address 4 4 4 the Al Al Al base register. If these are not phrase aligned addresses then they register. If these are not phrase aligned addresses then they If these are not phrase aligned addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they register. If these are not phrase aligned addresses then they If these are not phrase aligned addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they If these are not phrase aligned addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they these are not phrase aligned addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they not phrase aligned addresses then they phrase aligned addresses then they aligned addresses then they addresses then they phrase aligned addresses then they aligned addresses then they addresses then they aligned addresses then they addresses then they addresses then they shioild't¢e rounded down toa phrase toa phrase phrase toa phrase phrase phrase boundary, and the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The and the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The and the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The the offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The offset (in the pixel size set) from the phrase bogindary writtes into the X pointer. The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The (in the pixel size set) from the phrase bogindary writtes into the X pointer. The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The the pixel size set) from the phrase bogindary writtes into the X pointer. The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The pixel size set) from the phrase bogindary writtes into the X pointer. The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The set) from the phrase bogindary writtes into the X pointer. The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The from the phrase bogindary writtes into the X pointer. The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The the phrase bogindary writtes into the X pointer. The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The phrase bogindary writtes into the X pointer. The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The writtes into the X pointer. The into the X pointer. The the X pointer. The X pointer. The pointer. The The into the X pointer. The the X pointer. The X pointer. The pointer. The The the X pointer. The X pointer. The pointer. The The X pointer. The pointer. The The pointer. The The The Y pointer should be set to zero. should be set to zero. be set to zero. set to zero. to zero. zero. should be set to zero. be set to zero. set to zero. to zero. zero. be set to zero. set to zero. to zero. zero. set to zero. to zero. zero. to zero. zero. zero. OE The length of the block should be stored in the innel length of the block should be stored in the innel of the block should be stored in the innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel length of the block should be stored in the innel of the block should be stored in the innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel of the block should be stored in the innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel the block should be stored in the innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel block should be stored in the innel be stored in the innel stored in the innel in the innel the innel innel be stored in the innel stored in the innel in the innel the innel innel stored in the innel in the innel the innel innel in the innel the innel innel the innel innel innel Sounder =the =the =the number represents‘thé ‘hizmber of pixels, so represents‘thé ‘hizmber of pixels, so‘thé ‘hizmber of pixels, so ‘hizmber of pixels, so of pixels, so pixels, so represents‘thé ‘hizmber of pixels, so‘thé ‘hizmber of pixels, so ‘hizmber of pixels, so of pixels, so pixels, so‘thé ‘hizmber of pixels, so ‘hizmber of pixels, so of pixels, so pixels, so ‘hizmber of pixels, so of pixels, so pixels, so of pixels, so pixels, so pixels, so so the largest block that can be copied block that can be copied that can be copied can be copied be copied copied largest block that can be copied block that can be copied that can be copied can be copied be copied copied block that can be copied that can be copied can be copied be copied copied that can be copied can be copied be copied copied can be copied be copied copied be copied copied copied is 32767 32767 32767 pixéis;wherewherewhere 32+bit pixels are set this is 128K: For smaller set this is 128K: For smaller this is 128K: For smaller is 128K: For smaller 128K: For smaller For smaller smaller set this is 128K: For smaller this is 128K: For smaller is 128K: For smaller 128K: For smaller For smaller smaller this is 128K: For smaller is 128K: For smaller 128K: For smaller For smaller smaller is 128K: For smaller 128K: For smaller For smaller smaller 128K: For smaller For smaller smaller For smaller smaller smaller blocks it is usually easier to it is usually easier to is usually easier to usually easier to easier to it is usually easier to is usually easier to usually easier to easier to is usually easier to usually easier to easier to usually easier to easier to easier to work in bytes. The in bytes. The bytes. The The in bytes. The bytes. The The bytes. The The The Outer counter shotild bé:set to one. shotild bé:set to one. one. shotild bé:set to one. one. one. The Blitter needs to be told how to update the pointeis Blitter needs to be told how to update the pointeis needs to be told how to update the pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis Blitter needs to be told how to update the pointeis needs to be told how to update the pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis needs to be told how to update the pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis to be told how to update the pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis be told how to update the pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis told how to update the pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis how to update the pointeis to update the pointeis update the pointeis the pointeis pointeis to update the pointeis update the pointeis the pointeis pointeis update the pointeis the pointeis pointeis the pointeis pointeis pointeis after each read each read read each read read read aiid Write cycle, so the add control bits Write cycle, so the add control bits cycle, so the add control bits so the add control bits the add control bits add control bits control bits bits Write cycle, so the add control bits cycle, so the add control bits so the add control bits the add control bits add control bits control bits bits cycle, so the add control bits so the add control bits the add control bits add control bits control bits bits so the add control bits the add control bits add control bits control bits bits the add control bits add control bits control bits bits add control bits control bits bits control bits bits bits are set to zero to indicate phrase mode in both addréss flags set to zero to indicate phrase mode in both addréss flags to zero to indicate phrase mode in both addréss flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags set to zero to indicate phrase mode in both addréss flags to zero to indicate phrase mode in both addréss flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags to zero to indicate phrase mode in both addréss flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags zero to indicate phrase mode in both addréss flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags to indicate phrase mode in both addréss flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags indicate phrase mode in both addréss flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags phrase mode in both addréss flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags mode in both addréss flags in both addréss flags both addréss flags addréss flags flags in both addréss flags both addréss flags addréss flags flags both addréss flags addréss flags flags addréss flags flags flags registers. HEE Having set these, set these, these, set these, these, these, a command command command is stored stored stored ti thé command register,.with the SRGEN bit set to enable source register,.with the SRGEN bit set to enable source the SRGEN bit set to enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source register,.with the SRGEN bit set to enable source the SRGEN bit set to enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source the SRGEN bit set to enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source SRGEN bit set to enable source bit set to enable source set to enable source to enable source enable source bit set to enable source set to enable source to enable source enable source set to enable source to enable source enable source to enable source enable source enable source reads, and the LFUFUNC bits set to and the LFUFUNC bits set to the LFUFUNC bits set to LFUFUNC bits set to bits set to set to to and the LFUFUNC bits set to the LFUFUNC bits set to LFUFUNC bits set to bits set to set to to the LFUFUNC bits set to LFUFUNC bits set to bits set to set to to LFUFUNC bits set to bits set to set to to bits set to set to to set to to to 1100 to'select. source data: data: data: Efthe.source4@'not phrase aligned,the.source4@'not phrase aligned,4@'not phrase aligned, phrase aligned, aligned,the.source4@'not phrase aligned,4@'not phrase aligned, phrase aligned, aligned,4@'not phrase aligned, phrase aligned, aligned, phrase aligned, aligned, aligned, then the the the SRCENX bit must be set. bit must be set. must be set. be set. set. bit must be set. must be set. be set. set. must be set. be set. set. be set. set. set. ae Hee + +| + +1 7 Jaguar Software Reference Manual - Version 2.4 Page 65 4 : The largest width value allowed is the last value one in this table - the smallest width is one phrase in the @ «current pixel size. The width must always be a whole number of phrases in the current pixel size. : Rectangles are blitted like a raster scan, i.e. a line of pixels is transferred, then the pointer advances one line a and transfers the next scan line of the rectangle. This jump from the end of one line to the start of the next is = given by the step value. If pixels are being transferred one at a time, then the step. value for X is the window | width minus the rectangle width. If pixels are being transferred one phrase,at4 timié, ‘Bien the X pointer is left @ pointing at the start of the next phrase after the end of the block, and so the'step valué'shoaitdbe reduced 1 Clipping may be performed by the Al address generator, and simply prevents writes occurring ‘at addresses Z outside the window boundaries, i.e. X or Y either negative or grater than the widow size. The windowisize is & programmed in the Al window size registers. This is not much faster than writitig {hé-clipped pixels, soif a § _large number of pixels are to be clipped then it is worth performingthe clipping at ‘higher-level. AEE Character painting is a particular example of a class of operations requiring bit #8 pixel expansion. As well as 1 character painting, this may include such things as:ba¢kground patterns, simple texture fills, etc. When bit to pixel expansion is being performed, hie sourcé data 18.used as a bit mask. Bits are extracted from the source data and if they are set then the corresponding pixel is:paitited in the currently selected output data form, if the bit is clear then either the pixel is leftianchanged, or a background colour is written. "7 This allows character painting to paint the charactéts Gily, leaving the batkgtound unchanged (if the destination data is read), or with another:ealour writ **t** he. ‘paper’et6 areas (pré-loaded into the destination | Character painting can be performed one pixel ‘at’ time.in all sctéen modes, and can also be performed one phrase at a time in eight and sixteen:bit per pixel: odes: The bit selection counter is reset every time ihe dnner loop is left, so bit packed data patterns may be up to eight pixels wide. cee + +- The Blitter can rotate and Scale intageéias a single operation. Consider takinga rectangular image and okiting it into a window. ° The bounding:rectangle of the rotated image is calculated in the destination window. . This rectangle is fi¢n transformed into the source image co-ordinate system. . “ADs used as the destination address register and performsa raster scan over the bounding rectangle, pixel-by-pixel. The width arid height of the blit are given by the size of this bounding rectangle. + +- ° Al perforzis.a scan over thé: Source image, with the increment integer and fraction set up to describe a scan over thefirst.line ofthe:translated bounding rectangle. The step and fraction parts then translate it to the start of thenext'scan. + +- iJ . onlyClipping be enables is generated when when A1 lies A1 withinis outsidethe bounds the boundsof the ofsource the sourceimage, image, soclipping thatthe writesrotated atform A2 will . correctly. + +Consider as an example, a 12 pixel square image starting at (10,10) in a window. We would like to rotate this image clockwise by 30 degrees, make it larger by a factor of 1.3, and move it across by 30 pixels. + +**==> picture [1 x 17] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. Confidential Information“7O® Property of Atari Corporation June 7, 1995 + +~ ae _ a a ij : Ve i Page 66 Jaguar Software Reference Manual - Version 2.4 | i 1| programFirst it is below necessary shows to transpose how to do the square'sthis: co-ordinates into the target co-ordinate system. The basic :» im | 100 deg30 = .523598775 7 110 PRINT “Co-ordinates? " ] J 120 INPUT xi, yi ' 130 x = xi - 16 : 140 y = yi - 16 of hed Ellin. | : 150 xs = (x * COS(deg30)) - (y * SIN(deg30)) eae CC ] t 160 ys = (x* SIN(deg30)) + (y * COS(deg30)) eee OTHER | i 170 x = xs * 1.3 ee cece ; 210 PRINT "Translated: ", INT(x + .5), INT(y + -5) 0 “SHess.| ce Er This translates the vertices of the square as follows: oe Ee oe | : (10,10) -> (43,5) Eee, OEE” | i (21,10) -> (56,12) SEE = | | (21,21) -> (48,25) oan | The bounding box is therefore from X = 36 to 56, and-¥:%.9.to25. The vertices of titig ate.then translated ij back to the source co-ordinate system, as shown by:anethexbasic. program: CHEE g 100 degm30 = ~.523598775 ees OEE : i 110 PRINT "Co-ordinates? " “HAE aceeterem 4 } 130 x = xi - 46 oo a I 140 y = yi = 16 “Ee "8 | 150 x= x / 1.3 hein. WEES bat wo yey /13 0 ge ee 7. 170180 xsys == (x(x ** COSSIN(dégm30))(degim30)) —"Mtybr+ (¥EF COS(degm30}}iigne”SIN (deQEgQ}Jissasiiiy =| i **2** 1000 y=ys+16PRINT "Reverse tramslatedt”,geINT(x"#255), INT(y + .5) a i This translates the vertices of the bounding box as follows: Hee : j (36,25) -> (49726) 4] | We then set up Al as the source address register, making its window base the top left hand corner of the ] source image,:and-its window size the image'$izé;The A1 pointer will traverse the translated bounding box. rr 4 | Gourdud Shadingand 2 Buffering OU | Gouraud shading is a simple techitiqiie for modelling lit curved surfaces, which are represented bya series of ; ’ polygons. To'make.the surface appear curved, the intensity must vary smoothly, rather than being uniform = over each polygon: {36uraud shading #pproximates to the appearance of the curved surface by computing the PF intensity at each vertex; using a veriéx normal, and some suitable illumination model. The vertex intensity is , | ‘, then linearly interpolated'across'thepolygon edges, and the edge intensities are linearly interpolated across rf ; the polygon scan lines. -_ j 7 Gouraud shading is only an approximation to the appearance of the curved surface, and may appear unnatural F where there are large intensity changes across single polygons. However, it is much more attractive thannot «4 q graduating the shading at all. Better shading can be achieved with Phong shading, where the normals are 4 q 7 interpolated, but this is much more computationally intensive, and is not feasible within the Blitter. 4 1 | © 1992-95 Atari Corp. Confidential Information “JER Property ofAtari Corporation June 7,1995 3 ’ + +| + += + +| Jaguar Software Reference Manual - Version 2.4 Page 67 ® 7-buffering involves attaching a Z value attribute to each pixel, which corresponds to how far away it is from - the observer. When pixels are drawn on the screen, their Z values can be compared with the Z of the pixels already there, and the existing data preserved if closer to the observer. Z-buffering therefore provides a simple | means of achieving hidden surface removal. The Blitter can perform Gouraud shading and Z-buffering in sixteen bit pixel modeonly. Each blit creates one | scan line of a polygon, with the graphics processor responsible for re-calculating t¢ Start, length and gradient | parameters for each scan line. Four pixels and their associated Z values caii:be calculated! as:fast as the memory interface can write them out, so the bus rate is always the limiting:£actor. HEE | To calculate the Z and intensity values, the Blitter contains registers which represent the Z and intensity with a sixteen bit integer and sixteen bit fractional part. The intensity integer also €dittains the colour valtié;:80 | intensity is prevented from overflowing into the colour information. The TOPBEN ad TOPNEN bits:enable | There are four of these thirty-two bit values for intensity, and four for'Z, so that four pixels tnay be eatculated in parallel. There are also thirty-two bit Z and intensity incrementtepisters;:which give the amount added to each pixel for each write. ae OSE At each pass round the inner loop; the sixteen-bit fractional part of the intensity increment is added to the fractional parts of the intensity values, held in the source:data.register. Then the eight-bit integer part of the intensity is added with carry out of the fractionaiadd to the #Meger pixel values in the pattern data register. : BothCarry the is prevented intensity and from the propagating Z values saturate. from intensity This:ttieans to colour.that if A:siilar they reachmechanismtheir lowestgoverns Z. or highest values they jg ate clipped there, rather than wrapping round. For‘exainple, adding one toa'#, value of FFFF hex will give : FFFF, not the overflow result 0000. ages. CHEER HEE To take an example, consider blittifig an 18 pixel-strip of Goutatid shaded. 2-buffered pixels. The Blitter command registers would be programmed as follows (all other registers need not be written). Address registers are set up as follaws: = Al_BASE 0x01600008° Tne window basé atidress Al PITCH 1 Pixel data and Zkdata alternate Al PSIZE Hed 16-bit pixels 22° Al _ZOFFS “En, 2 data is one pk¥ase up from pixel data Al WIDTH “Goes 20-pixélwindéwi' 1.01 x 2°4 = 0100 01 A1_ADDC GEHEHE ES Add one pHraSé”to address Ai_WIN_X 20° lunees. Window width Al WIN_Y ES “aeeewWindow height Al PTR_X 1 ““omvpst pixel at address 0,1 Al_PTR Yiguisiie,, 0 Receee Data registers aré'sét up’assuming the first pixel fias an intensity of C7.2833, and a colour of 00. The intensity gradient:is minus 15.9265:The values for the first four pixels have to be set up (the left-most is actually off the edgeOf the strip, so theintensity gradient is subtracted from it). Similarly, the Z of the first pixel is E7E7.E000)and the Z gradient'is Minus 1818.1FFF. Pattern “2 Bepc00C700B1 069: Intensity integer parts and colour data Source “EBRDCRACT7D6B1C23E:, Intensity fractions Source 21 FREFETEICFCFBIB? Z integer parts Source 22 FFFFEOS96OO2A002 Z fractional parts I Inc FFAQB66C@ 22tntensity increment (four times minus 15.9265) w Z Inc SFOFBO04 Z increment (four times minus 1818.FFFF) Control information is set up as follows: Inner count 18 Strip width Outer count 1 Single pixel high strip DSTEN 1 Read destination data, to restore if necessary DSTENZ 1. Read destination Z, to compare with computed Z © 1992-95 Atari Corp. Confidential Information “PO® Property of Atari Corporation June 7, 1995 + +June 7, 1995 + +**|** i || a rei 1 + +- Version 2.4 & ; + +ok}q : _ 4 . 4 & + +Page 68 Jaguar Software Reference Manual DSTWRZ 1 Write destination 2, restoring or replacing CLIP_AlGOURD 11 ClipGouraudwithindatawindowcomputation enabled GOURZ 1 Z buffer data computation enabled PATDSELZMODE 13 WriteOverwritepatternexistingdata data if the new Z value is greater than or equal to the existing Z value The numbers here are pretty arbitrary, but they show the general idea. es + +j + +© 1992-95 Atari Corp. + +Confidential Information “JER Property ofAtari Corporation + +June7,1995 + +b + +Page 69 + +, + +| | | | + +- | Jaguar Software Reference Manual - Version 2.4 4: =ri‘Thisis 4.43 MHz forPAL
and 3.58MHzforNYSEandshouldhavea50%duty| +|||Videoclock.
Thisig a multipleof the pixel clock (which 1S typicallybetween6MHzand12
MHz)‘and must be tiététo theehroma clock in order toavoid the "wood grain| +|||
||Processorclock.
Thisdeterminesthespeedofthemesiory interface, thegraphicsprocessor, the
24objectprocessorandthedigital sound processor. Thisclockisdividedbytwoto
“HfBtovideaclockforanexternalprocessor.| +|||Threeregisters control the clock logi¢ tiJerry.Theratiobetween thevideoclockandthepixelclockis
determinedbyTOM.
WEEE| + + + +## CLKY =~ Pipeessorciock divider = F010 ss WO Do NOW Modify: Forinformation only, + +This register only used if the progegsor clock is generated by PLL. This ten bit register determines the frequency ratia: between the processéf'clock oscillator input (PCLKOSC) and the processor clock divider output (PCLKDIV); §8:PLL clock synthesis PCLKDIV is typically locked to CHRDIV so the processor clock frequency willbe 9 “22222 eueete + +## (N+1)*CHRDIV + +y whereN is the value written to this register. This register is initialised to one on reset. The PCLKDIV output produces a pulse every N + 1 PCLKOSC cycles. + +a ©1992-95 Atari Corp. Confidential Information 7@® Property of Atari Corporation June 7, 1995 + +Jaguar Software Reference Manual - Version 2.4 + +| + +| | + +LY | g a | | ql g = f 4 | | j — SS : { | : : | 4 | + +2 ‘ i + +## Page 70 + +DoNOTThis register Modif is onl **y** used: For if theinformation processor clockonly is generated by PLL. This ten bit register determines the frequency ratio between the video clock (VCLK) and the video clock divider output (VCLKDIV). As before in PLL clock synthesis VCLKDIV is typically locked to CHRDIV so the videoSlock.frequency will be whereN is the value written to this register. This register is initialised to zéieon reset. The VELRRIV output produces a pulse every N + 1 VCLK cycles. SHEE cen | Do NOT Modify: Forinformationonly This six bit register determines the frequency ratio between the chroma escillator (CHRIN, CHROUT) and she chromia:aséiilator frequency byN+1 | the chroma clock divider output (CHRDIV). The divider divides’ This register is 7 where N is the value written to the register. The CHRDIV output has a 50% dutyeyele. | initialised to 3Fh (divide by 64) on reset. ee. THEE The most significant bit of this register enables the chroma dscilbitoronto the VCLK pin. This bit is clear on Where PLL synthesis is used this register 1S typicablyleft as reset. This provides the lowest reference : frequency for generating PCLK and VCLK. EEE Be OEE , f For non-PLL synthesis the chroma crystiil 1s some smail'maliiple ofthe chroma carrier and this frequency is be used as the video clock. This register 3s written: with the apprepriate:-number to: generate the chroma frequency | on the CHRDIV pin and bit 15 is ¢et:to enable the erystal frequeney:onte He VCLK pin. Jerry contains two identical timers. Each consists oftwo sixteea bit dividers. The first stage (loosely called the pre-scaler) divides théprodessor clock by N + 1: The second stage divides this frequency by M+1, where It is therefore possible to achieve frequency 1 N and M are the values written #¢:their associated registers: division in the range four t¢ fourbuon... . The outputs of the second stages may be aset:to interrupt either of the digital sound processor or the external | It is intesided that tinter Gné-is used to generate the’Sample rate frequency for sound synthesis and that timer | two is used,to generate a‘twNgiG:tempo frequency. The timers may however be used for other purposes. It | should bé:soted that writing toadbe-associated registers presets the counters so they could be used to provide | programmable delays. Also the repisters are readable which can be used to measure time accurately. This might be used:in:deyvelopment to help: profile code or to help measure the time between joystick events. There are four registéts dssociated with the timers. The read addresses are different to the write addresses. + +ips ss Timer2Prescaler 10004 WO The pre-scalers divide the processor clock by N + 1 where N is the 16 bit value written to them. The prescalers are down counters which are loaded when the register is written and when they reach zero. They are © 1992-95 Atari Corp. Confidential Information JPR Property of Atari Corporation June7,1995 + +Jaguar Software Reference Manual - Version 2.4 Page 71 readable, this is really for chip test purposes, but they might be used by the DSP to measure short events with + +Page 71 + +| + +precision. + +pita. —sTimer2Divider = NOG WO These dividers divide the output from the corresponding pre-scalers by Ni: where ‘NS the.16 bit value written to them. The dividers, like the pre-scalers, are down counters whigh:are loaded wher tie.register is written and when they reach zero. cece ecco When they reach zero they may interrupt either of the DSP or the CPU. These isiterrupts are independently + +There are six interrupt sources which may interrupt the externiil microprocesssii: The interrupt sources are as + +## ) + +## ) + +- e External A rising edge on the EINT}O} input to Jerry may cause an intereapt. * DSP The DSP may generaté 4A interrupt by writing to a port. ia ¢ Timers Both timers may generate interrupts. “22%, ¢ Sync. The synchronous serial interface can generateingerrupts as described below. ° UART The asynchronous serial'interface can generate istezrupts as described below. It is likely that only one or two interflipt souldes would HotrBally be directed at the microprocessor. Some of the above are mainly of relevance:{a'the DSPin'sound synthesis, The Interrupt control register enables, identifies and acknowledges CPUinterrupts from the.six different interrupt sources. + +## siNTeTALornternipt{ControfRegister’ | F1og20" RW + +**==> picture [500 x 226] intentionally omitted <==** + +**----- Start of picture text -----**
+Name Bit Description
P)EXTENA| _@.__| Enable external interupisis
Ty-TIMIENA| 22° | Endbig Timer One (sample rate) interrup's.
J TIM2ENA Enable TitHet:Two (tempo) interrupts.
J ASYNENA# 2: Enable Asyichraious Serial Interface interrupts.
J_SYNENA 8 Enable Synchronous Serial Interface interrupts.
_EXTELR PB | Clear pending external interrupts.
TDSPCLR,. | 9 | Cleat pending DSP interrupts.
TTIMICLR Cleat pending Timer One (sample rate) interrupts.
J_TIM2CLR ae7 Cleat pending Timer Two (Tempo) interrupts. |
J_ASYNCLR "Clear pending Asynchronous Serial Interface interrupts.
J SYNCLR Clear pending Synchronous Serial Interface interrupts.
**----- End of picture text -----**
+ + +Bits 0 to 5 enable the individual interrupt sources. When read bits 0 to 5 indicate which interrupts are pending. Bits 8 to 13 clear pending interrupts from the corresponding interrupt source. © 1992-95 Atari Corp. Confidential Information “JPR Property ofAtari Corporation + +**==> picture [2 x 18] intentionally omitted <==** + +**----- Start of picture text -----**
+;
**----- End of picture text -----**
+ + +} + +June 7, 1995 + +Jaguar Software Reference Manual - Version 2.4 + +: + +_ Page 72 + +) + +. + += a | ; | a | | P| “ .ro” ‘ : : : ) ! : | | + +| || + +|| | | + +t + +| + +**==> picture [553 x 644] intentionally omitted <==** + +**----- Start of picture text -----**
+The synchronous serial interface is controlled by seven registers. These are all within the local address space
of the DSP, and so may be accessed by the DSP without any external bus overhead. Other processors may
access them at these addresses. All transfers to them should be 32-bit, but the registers themselves are only
scuK:*oetwsenatciocerrequsneyi URIRRO WON
This eight bit register determines the frequency of the internally generated sé#ial:clock. The frequenay:is.
Serial Clock Frequency = System Clock Frequency / (2:%:(N+1)) EE Be
where N is the number written to this register. Es SEES UE
a, ae
-
Bit Name Description
FO) PINTERNAL When set this bff enables the serial clock and word strobe outputs.
RESERVED Seito zero. <<
2 |WSEN This bit enables the:generation of word siobe pulses. When set JERRY
producesa word ste6bé:qutput which is alfemnately high for 16 clock
farthercyekisaid [high] ‘tow [piiises.] for 16-eigckicycles. [ This] [bitis] [ignored.] When'éieared [when] [INTERNAL] Jerry will [ is] not generate [ cleared.]
3 FRSnG iinetinterrupts Oi the rising edpe ofOtwert word strobe.seme
4 PFALLING | “Enables interapts on the falieng edge of word strobe.
5 EVERY WORD Enables interrupts on the MSE of every word
) Abbe transmitted or received. 5°
RIpAC™ Po Right transmitdata(to DACs) FAR
[pac _Lefitransmitdata (to DACs) FIAIC WOU
These two,sixtebit r gisters e n: hold data to be fraBsmitted. Note that these registers have right and left
swapped Si pUIpOSE: |. we
uno gy en vengigtaattor's) ENR WO
| HID |Rlghttransmitdata(oS) | FIA WOU
These two sixteeti bit segisters hold data to be transmitted.
/ RAXD light [recelvedata(from{’'s)] FIAM@C RO
| These two sixteen bit registers hold received data.
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. Confidential Information “JER Property ofAtari Corporation + +June 7, 1995 4 + +Page 73 INO TRO + +| + +Jaguar Software Reference Manual - Version 2.4 estate Ses sms + +**==> picture [514 x 310] intentionally omitted <==** + +**----- Start of picture text -----**
+Bit Name Description
Ws This bit reflects the state of the Word Strobe pin. Do not use this to check for data |
ready, use the Interrupt control register.
| Aeyachronous Serial Interface (ComLynxand Mig)
The asynchronous serial interface consists of two wires, UARTI, the receive dab input and UARTO the,
transmit data output. This interface is primarily designed to support ComLynx btidt'canalso be used ifr
A prescaler register is used to allow programmable baud rates. ee “EEE
The data transmitter is double buffered, allowing a character ibe‘written isité-the data register before the
transmission of a previously written character is complete. The data receiver #449. double buffered, a second
character can be received on the UARTI pin before.she:previous character has béé#:readfrom the data
Data is both transmitted and received in the fossnat shown below;
Start j------------ 8 Dake Biteih-----“REE eRarity SE6p
**----- End of picture text -----**
+ + +The parity can be ODD, EVEN oe lone. The polarity GF both the output and the input can be programmed to be active high or low. The polarity:shown is active Ow. sees. Two classes of interrupt can be genetated by the asynchronotig serial interface, namely receiver or transmitter interrupts. Each of these classes can be individually enabled. The table below summarises the interrupts in each class. OEE be. ee Receiver Interrupts. ee OEE . Parity Error ee EEE . Framing Error _ . "Receive Buffer Fails. Transmitter Interrupts 3 - Transit Buffer Empty + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +| + +© 1992-95 Atari Corp. + +Confidential Information “JER Property ofAtari Corporation + +June 7, 1995 + +' + +: - Page 74 Jaguar Software Reference Manual - Version 2.4 | ASIC”K °° ‘Asynchronous Serial interface Clock = = 10084 RAW " This sixteen bit register determines the baud rate at which the asynchronous serial interface works. The g\ frequency generated is given by: Clock Frequency = System Clock Frequency / (N+1) where N is the number written to this register. ee, | The frequency generated by this register is further divided by sixteen to give the baud rates Se, | 4 | ASICTRE << "Aeynchronciis Serial Control Fieode WO| - tsié@ Bits Name Description i | 0 [ODD Writing a 1 to this bit selects odd parity’: CHEB ont a 1 PAREN Parity enable. When parity is disabled:the: value of the EVENbit is:franszitted | | in the parity bit time. BEEP SUE g 2 |TXOPOL Transmitter output polarity. Setting'this bit to aGe:causes the UARTO output to Pf | be active low. HEE P| 3 | RXIPOL Receiver input polarity: Writing:a.one to this bit makes thé: LARTI into an = | 4 TINTEN Enables transmitter jaterrupts. Note that the asynchronous serial interface bit in | the Interrupt Controk:Register also needs'#) bé:set to enable interrupts. ; 4 | 5 | RINTEN Enables receiver intertiypts..As for TINTEN the:asynchronous serial interface bit 4 in the Interrupt Control Régister must also be set: CLRERR Clear Errat:: Writing a one to'thisbit clears any patity, framing or overrun error 1 conditigte FEES, eee 14 |TXBRK Transit break. Setting this bit causes @-bréak level to be transmitted on the , iz UARTG pin. It forcesthe UARTQ output active. This may be high or low 7 H dependitig'dn the state[of][ the][ TROPOL][ bit.] | @ | All unused bits are reserved and should be written 0 ES | 1 | ASISTAT “ Aeynchisnous SeriaiStats= = Fi0032 FO | Bitsa Nameeee | TheseDescriptionbits:réflect the state of the corresponding bits in the ASICTRL —, =4 | 7 =YRBF "258%, | Receive buffer full. When set this bit indicates that a character has been | 4 | ee “ells[|][ received][ and][ is][ available][ in][ the] ASIDATA[ register.] | ; 4 9 |PEs. [Parity Error. This bit indicates that a parity error occurred onareceived | § : SHEED character. 4 10 [FE eee Framing Error. A framing error is detected when a non zero character is ‘ ' “HEELEcEteelgeseived without a stop bit at the expected time. — | 11 | OE “=| Overrun Error. An overrun error is detected when a character is received 4 : { on the input before the last character was read from the ASIDATA q i register. ] ' 13. | SERIN Serial Input. This bit reflects the state of the UARTI pin. Its sense can be : i inverted by setting the RXIPOL bit in the ASICTRL register. 4 q | © 1992-95 Atari Corp. Confidential Information PU™® Property of Atari Corporation June 7, 1995 | + +| \ + +“ + +Page 75 q | Jaguar Software Reference Manual - Version 2.4 . . 14 Transmit Break. This bit reflects the state of the corresponding bit in the ~? ASICTRL register. a 5 ERROR Error. This bit is logical OR of the PE, FE and OE bits. This allows a g single test for error conditions. BH All unused bits are reserved and may return any value. ee. aa ae | When this register is read it returns the last character received in bits [0.7] aadzero in bits (8..15]. Tie act of reading this register clears the receive buffer ful! condition leaving the way cléay f5x,subsequent characters to When the ASIDATA register is written bits [0..7]} are transmitted fr6m,the UARTO pin Bits {Bed} are not j used and should be written as zero. ee WEEE | ec ee .LlLlFPFEn Jerry has four outputs which together control fgur external FELAICs to provide the joystick interface. There are two registers ae WEEEEEEE “ When read the joystick input buffers are:enabied and the data:reflects the staté of the sixteen joystick inputs. the read. EE ee Output JOYLO is asserted (activé:low) during When written the low eight data ‘its are latched ints the jaystick output latch. Output JOYL2 is asserted (active low) during the write. The tiost signifiéant bit (15345 tised to enable the joystick outputs. This bit is[15.] cleared (disabled) by reset. Output JGYL3 is the inverse of the[¥alue][ in][ bit] JOY’ut wo When read the button itiput buffer is:enabled and the data reflects the state of the four button inputs. Output JOYL! is asserted (active low) during the read. + +**==> picture [1 x 29] intentionally omitted <==** + +**----- Start of picture text -----**
+;
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. + +Confidential Information “JPR Property ofAtari Corporation + +June 7, 1995 + +| | py | Gaumibapessiobecsdes j Jerry has six general purpose 1O decode has six general purpose 1O decode six general purpose 1O decode general purpose 1O decode purpose 1O decode 1O decode decode outputs which are asserted (active low) in the following address + +. A | | | + +) + +| + +i ) | + +1 + +June 7, 1995 | : + +Jerry has six general purpose 1O decode has six general purpose 1O decode six general purpose 1O decode general purpose 1O decode purpose 1O decode 1O decode decode outputs which are asserted (active low) in the following address + +> ranges.GPIO0 |F14800-Fi4FFFh = | RESERVED + +es + +GPI02 |F16000-FIOFFFh |RESERVED — <7 GPl04 | F17800-F17BFFh RESERVED THE “EEE The term “General Purpose” is a misnomer because most of the outputs afé'teserved. =_— + +i + +© 1992-95 Atari Corp. _ Confidential Information “7U® Property ofAtari Corporation + +| + +| + +q Jaguar Software Reference Manual - Version 2.4 Page 77 7 pp | mm. LL 4 Theinstruction DSP is partset and of programming the Jerry chip model, in Jaguar, but and there are is a variant certain of differences. the GPU within“fhe Tom.DSP has It uses full atéess'to avery similarthe system memory map as a bus master, and its internal memory may be accessgd:by the other bus Triasiers 1 The DSP performs two réles within Jaguar, its primary functigti:is sound synthesis aid it-may also be = available for additional graphics processing. Ee TEE ites cael i Sound synthesis may be the playback of sampled sound or algorifhitiie Sdund generation, or a mixture of the two. As the DSP is a fast general purpose processor it may be used for abroatt-range of synthesis techniques. ' It contains several optimisations for sound processing when compared to the GPU;.in particular higher precision multiply / accumulate operations, circular.buffer management, audio wave tables in local ROM, additional local fast RAM, and audio output hardware withist its internal address spaces!!! As many sound generation techniques will not sequire anything: ike'the full power of the DSP, it may also be used as an additional graphics processor. It has:fui access to the efitire:system address space, although its bus bandwidth is lower as it has a 16-bit interface to’éxtérnal memory. It miightwell be used with sound synthesis kg occurring under an interrupt at sample rate, with the[uaderlying][ code performing something][ like][ matrix] HA = multiplies for 3D object rotation. ..f:8fHibe.. WEEE Ee This section assumes an understafiding of the GPU, and outlines thie: differences between the GPU and the i=LL . Refer to the 'Programming:the Graphics Processor!:section inthe GPU description. + +re Refer to the: ‘Design Philosophy’ section on the:GPU description. | ce Co ee Refer tothe ‘Pipe-Lining’ section onthe GPU description. + +© 1992-95 Atari Corp. + +Confidential Information “JPR Property ofAtari Corporation + +June 7, 1995 + +: | | ff | | | ] | | : ; q | + +Page 78 + +Jaguar Software Reference Manual - Version 2.4 + +: + +4 + +i + +| | | | : : : ' ij + +. i‘iéié‘éQ j ; P| + +. 7 | : | | + +J 1=. + +## MemoryyMapRefer to the the 'Memory + +Refer to the the 'Memory Interface' section of the GPU description for a discussion of the basics of the DSP memory interface. Thewith DSP has 8K bytes of local fast RAM (twice as much as the GPU), and 2Kbytesof wave tables to help sound synthesis. These are laid out as follows: Ee. FIA000-FIAIFF DSP control registers oa 6h F1B000-FICFFF local RAM ae _— + +## WaveTableROM = + +The wave table ROM contains eight 128 entry wave tables. These ase Signed 16-bit values; and ai'Siga" extended to 32-bits, so that the ROM appears to occupy 1K 32-bit:locatigns:Only the bottom 16bits are significant. oe + +**==> picture [535 x 124] intentionally omitted <==** + +**----- Start of picture text -----**
+The waves available are as follows: ee _ :
F1D000 ROM_TRI A triangle wave, Ee '
F1D400 ROM_AMSINE| An amplitiide modulated SINE wave ij
F1D600 ROM_12W A sine wavé:and its second order harmonic
F1D800 ROM_CHIRP16 | A chirp - this'i§'a'sine wave increasiiigin frequency
F1DA00 ROM_NTRI Astriangle wave with:figise superimposed .
es
FIDCW ROM DELIA Agi,
**----- End of picture text -----**
+ + +Refer to the ‘Load and Store Operations' section ofthe GPU description. + +> ArthmeticFunctonsse rr Refer to the ‘ArithmeticFunctions’ section of the GPU description. The DSP réjilaves the unsigned saturation funetigas of the GPU with two signed operations. SAT16S takes a signed 32-bit operatid:and saturates it to a signed'16-bit value, i.e. if it is less than $FFFF8000 it becomes SFFFF8000 and if it isgréatei:than $00007FFF it becomes $00007FFF. SAT32S takes a signed 40-bit signed 32:bioperand {see thevalue sectionin a beléw:exititledsimilar maniter. 'Extended Precision Multiply / Accumulates') and saturates it to a + +**==> picture [1 x 6] intentionally omitted <==** + +**----- Start of picture text -----**
+q
**----- End of picture text -----**
+ + +q + +© 1992-95 AtariCorp. Confidential Information PER Property of Atari Corporation + +June 7,195 fi + +Jaguar Software Reference Manual - Version 2.4 + +j + +| + +| + +**==> picture [34 x 26] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 79
**----- End of picture text -----**
+ + +Refer to the Interrupts’ section of the GPU for a general discussion ofhow DSP interrupts behave. There are six interrupts sources within the DSP. These are allocated as follows: + +The external interrupts are inputs from additional Jaguar hardware ouside the Tom & Jerry system: The timer interrupts are from Jerry's local programmable timers, the PS interrupt is:from the local synchronous serial interface, and the CPU interrupt is generated by any processor Writing to thé DSP.control register. | Se ee Refer to the ‘Program Control Flow’ section of the. GPU description. 1@ Growler Butler Management So 6 As circular buffers are common ig DSP algorithins, for samiple-lodping, EIEOs, and so on; there is hardware and aligned to a 2" boundary, where n support for addressing circular bisffers. These have ta-he.2" words'loug: is any practical value. Tee [=F The support takes the form of two variants ofADDQ and SUBQ, namely ADDQMOD and SUBOMOD. These allow pointers to be updated with the value wrapping it: the form of counting modulo 2°. This is controlled by the modiila:zegister which is a mask on the result.of these instructions. Where a bit is 1 in this register,may modify the result it. Normally of theADDOMODthe high: bits of or SUBOMODiis this register are'setunaffectedto one, by and the the instruction, low bits set to where zero[it] is as appropriate. 0 the add Extended Precision Multiply /Accumulates 0 Refer td the ‘Multiply asd, Accumulate Instructions’ and the ‘Systolic Matrix Multiplies’ sections ofthe GPU description for an introduction to and explanation of these instructions. When muliiply and accumulate operations are performed, using the IMULTN, IMACN and RESMAC instructions, ‘ofthe MMULT instrisction, the accumulated result is actually calculated as a forty bit signed integer. Thejopeipht bits are effectively overflow bits, after a RESMAC, they are at F1A120. However, the SAT32S instruction takes as its forty:[bit][input][ the][ register][ operand][ as the][ low][ thirty-two][ bits][ and][ the][ eight] overflow bits of the accnmilator as tts top eight bits, and saturates the forty bit signed integer to thirty two bits; i.e. if it is less than FE80606000 it becomes FF80000000 and if it is more than OO7FFFFFFF it becomes .& OO7FFFFFFF. “ The SAT32S instruction should therefore only be applied to the result of a multiply / accumulate operation, and before any further multiply / accumulate operations are performed. The SAT16S instruction operates only on its thirty-two bit register operand and takes no account of the overflow bits. | © 1992-95 Atari Corp. Confidential Information JPR Property of Atari Corporation June 7, 7, 1995 + +June 7, 7, 1995 + +t Page 80 ' Refer to the ‘Divide the ‘Divide ‘Divide Unit' section of section of of the GPU description. GPU description. description. | oe | j Refer to the ‘Register File’ section of to the ‘Register File’ section of the ‘Register File’ section of ‘Register File’ section of File’ section of section of of the GPU description. GPU description. description. l Se i] Refer to the "External CPU Access’ section of to the "External CPU Access’ section of the "External CPU Access’ section of "External CPU Access’ section of CPU Access’ section of Access’ section of section of of the GPU GPUdescriptign. ii Addresses in DSP space are only available as 16-bit in DSP space are only available as 16-bit DSP space are only available as 16-bit space are only available as 16-bit are only available as 16-bit only available as 16-bit available as 16-bit 16-bit memory inté: Which 32-bit transfers + +a - + +Jaguar Software Reference Manual - Version 2.4 + +| ) q ' Refer to the ‘Divide the ‘Divide ‘Divide Unit' section of section of of the GPU description. GPU description. description. | oe ee | | j Refer to the ‘Register File’ section of to the ‘Register File’ section of the ‘Register File’ section of ‘Register File’ section of File’ section of section of of the GPU description. GPU description. description. 6h 2 l Se eS Lr ] i] Refer to the "External CPU Access’ section of to the "External CPU Access’ section of the "External CPU Access’ section of "External CPU Access’ section of CPU Access’ section of Access’ section of section of of the GPU GPUdescriptign. ee ES ] ii Addresses in DSP space are only available as 16-bit in DSP space are only available as 16-bit DSP space are only available as 16-bit space are only available as 16-bit are only available as 16-bit only available as 16-bit available as 16-bit 16-bit memory inté: Which 32-bit transfers Hust Be-perfetmied in a the order low address then high address. ee OEE | # ij na. 4 piFLAcs* rsp riage Register! | (| BIAT00 “Readwrite & _ , _ ’ This register provides status and control bit for several important DSP functions. Control bits are: ] ' a Bits Equate(s) Description i ZERO_FLAG TRe:ALU zero flag, set £ theresult of thelast arithmetic operation was ed hot affect the flags, see above. 1 | 1 “geto. Certain:arithmetic instructoas:deby Carry/borrow out of the , 4 t 1 CARRY FLAG EThe ALU carty flag. Set-orcleared and reflects carry out of some shift operations, but it is not _ ie “gdder/subtragt, i defied after‘other arithmédi¢:gperations. t | i 2 NEGA_FLAG The ALU negative flag, set ithe result of the last arithmetic operation fo F Hb. was negative. _ Se Pi " 3. |IMASK ,, | Interrupt mask, S61 bythe interrupt control logic at the start of the service | ec soutine, and is cleared y'the interrupt service routine writing a 0.Writng | : G28 “leg Eto this location has no effect. i 4-8 |D_CPUENA~ Interrept-enable bits for interrupts 0-4. The status of these bits is | i by. IMASK. These bits correspond to: _ D,J2SENA overridden i EDETIMIENS 0 CPU EES SPD_TIMZENA"| DLEXTOENA™)=, **[** 12 PS”Timer] i7 on "| 4EINTIO] : 9-13 |D?€FUELR Interrupt latch clear bits for interrupts 0-4. These bits are used to clear the i D_I2SEER Es. interrupt latches, which may be read from the status register. Writing a : D_TIMICER: 2:.1..4%4er0 to any of these bits leaves it unchanged, and the read value is always | j |[zero.] i | D_TIM2CLR : D_EXTOCLR 7 14. |REGPAGE Switches from register bank 0 to register bank 1. This function is q overridden by the IMASK flag, which forces register bank 0 to be used. 7 © 1992-95 Atari Corp. Confidential Information ‘JER Property ofAtari Corporation June 7, 1995 : + +~ + +| + +| + +wW + +Jaguar Software Reference Manual - Version 2.4 + +Page 81 + +» |. 15 | DMAEN This bit must not be set due to a bugin the Jaguar Cagsote.. 16 |D_EXTIENA Interrupt enable bit for interrupt 5. Fuitefion[as][ bits][ 4-8.] “828%, D_EXT1CLR Interrupt latch clear bit for interrupt 5. Functiow'as.bits 9-13. “s WARNING- writing a value to the flag bits and making use of thasé'flag bits in the following Sisteuction will not work properly due to pipe-lining effects. If it is necessary USé:flags set by a STORE instruction, then ensure that at least two other instructions lie between the:5 FORE anid:{hé flags dependent instruction. If it is necessary to use flags set by an indexed STORE instruction, then ensure'that:atJeast four other instructions lie between the STORE and the flags dejséident instruction. eee BMTIXC — DSP Matrix Control Register F1A104—s Writeonly This register controls the function of the MMULT idstruction. Control biis'are: + +**==> picture [482 x 310] intentionally omitted <==** + +**----- Start of picture text -----**
+MATRIX3-15 [oMatrbewidth, in the rangé3to15 228°
4 MATCOL 2g When set, this: control bit make:{he matrix held in memory be accessed
“4 down one colusti®;:4s opposed to along one row.
DMIXA” DSP Matrix Address Register, = FIA108 = Writeonly
This register determines swhere::in local RAM, ths saab held in memory is.
Bits Equate(s} - Description
P21 [— sd Matiicaddress,
BEND — “DSP Gate Orgahisation Register FIAIOC Writeonly
This register controls the physi¢aldayout of DSP I/O registers. If its current contents are unknown, the same
data shoukt bé-written to both thelow and high 16-bits. ,
Bit Equate(s) ‘Description
BIG IO 22228 e nat! "When this bit is set, 32-bit registers in the CPU I/O space are big-endian,
“SEE27 e. the more. significant 16-bits appear at the lower address.
2 BIG_INST processor.When this bit is set the DSP does word program fetches like a big-endian
**----- End of picture text -----**
+ + +©1992-95 Atari Corp. Confidential Information “7% Property of Atari Corporation June 7, 1995 + +**==> picture [591 x 733] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||| +|---|---|---|---|---|---|---|---|---|---| +|Page 82|Jaguar|Software Reference Manual - Version 2.4||| +|BPO|DSP|Program|Counter’|FIATIO.|Read/Write||| +|The DSP program counter may be written whenever the DSP is idle (DSPGO is clear). This is normally used|mm| +|||by the CPU to govern where program execution will start when the DSPGO bit is set.|a| +|The DSP program counter may be read at any time, and will give the address of the instruction|currently| +|being executed. If the DSP reads|it, this must be performed by the MOVEPC,Ra|instruction,|and not by|Ss| +|The DSP program counter must always be written to before setting the DSPGO control|bit: When the DSPGO|,| +|bit is cleared, the program counter value will be corrupted,|as at this pointfhe|pre-fetch quewiéig:discarded.|2| +|pocTRL|=e|DSP|Controrstatis Register!”|FIAITA|||Readwrite!|Z| +|This register governs the interface between the CPU and the DSP...|Sa|fee| +|I|Bits|Equate(s)|Description|:| +|DSP may write to this|F| +|'|DSPGO|This bit stops and starts|the|DSP.|TheCPL:or|}| +|L|register at any time. The status of this bitafter#:system|reset may be| +|'|externally configured...|EEE| +|the|GPU.|There isno|||:| +|.|1|CPUINT|Writingneed for a any1|to:thisa¢knowledgé;Biticauses atid:no the DSPneed to to clear interrupt the bit|[to][ zero.][ Writing]|[a]|4| +|1|zero has noéffect. A value of|zereis.always read.| +|[type][ 0.][ There][ is][ no][ need][ for]|1| +|'|2|||FORCEINTO|Writing a|1 tathis|[bit][causes][ a][ DSPisterrupt]| +|a|any acknowledge,and|no need to cleat|thé: bit to zero. Writing a zero has| +|ibis|bis|is set DSP. sisgle-stepping:i8|enabled. This means that|7| +|'|3|||SINGLE_STEP|‘Wihen| +|i|f|program|exégution|will paiise|#ti@readts|mnstruction,|until|a SINGLE_GO| +|||| command|isissued.| +|i|‘EDhe|read staius|of this|fag,|SINGLE|STOP,|indicates whether the DSP|4| +|\|hag|dictually Sfpped, and'shiduld be polled before issuing a further single|||1| +|the|DSP is awaiting|a SINGLE_GO||| +|iy|step command.|A|one meaiig| +|fh|oe|command|Ee| +||||| +|\|4|||SINGLE _GO##:s:.|||Writing a one|to|this|bit.|[advances][ program][ execution][ by][ one][ instruction]| +|‘|Alec] when execution'is|paused in single-step mode. Neither writing to this bit||| +|i|||Eee|“t- atany other time, nor writing a zero, Will have any effect. Zero is always|4| +|6-10|.:DECPULAT|Interrupt|létches|for interrupts 0-4. The status of these bits indicate which||| +|!|-aED|SEAT:| +|ce _D_TIMILAT#::,,2%...||clearedinterrupt by requ th|e|stinterrupt latch is service currently routine, active, usi a|n|dg|the|appropriateINT_CLR bits in bit should the|be|]| +|||=D TIM2LAT|“EUELCOL|flags register. Writing to these bits has no effect. These bits correspond to:||| +|i|||OE|ct 3|Timer 2| +|||© 1992-95 Atari Corp.|Confidential Information|“JER|Property|of|Atari Corporation|June 7,195|§| + +**----- End of picture text -----**
+ + +! + +**==> picture [532 x 644] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 83
Jaguar Software Reference Manual - Version 2.4
" 11 BUS_HOG | Ginna the DUP is excouting code out of external RAM itwill normally |
This bit must not be set in the Jaguar Console,
12-15 |VERSION These bits allow the DSP version code:tg:be read. Cuggent.version codes
12 First production release HEB. ERE
|
: Future variants of the DSP may contain additional features or WEEE
| enhancements, and this value allows softwarét0'xemain compatibié: with
all versions. It is intended that future versions Wil: bé:a,superset of:fhis
Interrupt latch for interrupt 5: Has she.same function fcrimteereptS as bits
6-10 have for interrupts 0-45." OE
This 32-bit register holds the value which govertis which bits até [middified][ by][ the][ ADDQMOD][ and]
a: :theans that it may be changed.
SUBOMOD instructions. A 1 means that the bit will be unaffected,
Normally, the higher bits are set to 1 and the lowée Sits to 0. This allows:addresses to be readily generated for
a") circular buffers of size 2" bytes, where n is betwee#t 0: and 31. tee
: poneManesepnnasluniktonainlegiii” “igggpmiemeneatony
This 32-bit register contains a valug from which tie remeinder after a division may be calculated. Refer to the
section on the Divide Unit. “He HEE OE,
pcpverniscniaeannecantorggeag- “caetanierciwatdony*
~~ - Description
Bit Equate(s)
0 | DIV_OFFSEF’ “ETE flais,
bitauibers,bit is set, otherwise then the divide 32-bit unsigned unit performs integer division division of isunsigned performed. 16.16
D-WAGHI’“lananiply &/Accumulate High Bits FIAT20° Radon
This 32-bit register allows the high bits of the accumulated result to be read. After a RESMAC instruction the
result reguster of the RESMAE ¢aatains the bottom 32 bits of the accumulated value, and this register
contains thet6p.cight bits, which are:sign-extended to 32 bits.
In the DSP, certain peripheral 10 functions are mapped into the internal DSP space for higher efficiency when
the DSP is controlling them. These are effectively 32-bit locations. These are the PWM DACs and the
Synchronous Serial Interfaces 22°" ,
**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. + +Confidential Information FER Property ofAtari Corporation + +June 7, 1995 + +. + +Jaguar Software Reference Manual - Version 2.4 + +Page 85 + +: | | | | + +: | + +| + +| Mmmummst GPU and DSP instructions are all sixteen bits, made up as follows: ae Oe * op code defines the instruction to be executed Ee OEE oe ° reg2 is the destination operand, or the only operand of singi¢:cpérand instructions “EEE * reg! is the source operand EE a The reg2 and reg] fields usually hold a register number, but have other meaningéwith some instructions. The instruction set is as follows, where the syntax'i8) 4. ee , — - CHE Note: To remain compatible with future versions of the Jaguar chipsetalways clear the reg! field of single | i operand instructions and leave both fields of NGP:éleared. “EEE + +The description of each instruction’indicates bow it affects the fags. The flags are valid when the result is written. This is discussed further:under “Writing Fast GPU arid DSH Programs”. Register Usage oe [2 The description of register usage shows whereit uses a register port. Cycle 1 is the clock cycle at which the instruction is considered to be “executing”, and is generally the:pipe-line stage at which its register operands are read. It is the only:pipe-line stage occupied byNOP. Wherg:an instruction affects the flags, these are valid at the clock cycle when!{he tesult is written. This#s discussed further under “Writing Fast GPU and DSP Programs”. Ey EEE EEE + +**==> picture [8 x 34] intentionally omitted <==** + +**----- Start of picture text -----**
+bl
**----- End of picture text -----**
+ + +**==> picture [497 x 161] intentionally omitted <==** + +**----- Start of picture text -----**
+No. Syntax Description
22 |ABS
RE Absolute Value
ead eee 32-bit integer absolute value. Has the same effect as NEG if the
al OEEEEEE operand is negative, otherwise does nothing. Note that this
ce on WEEE instruction does not work for value 8000000b, which is left
ieee OEE unchanged, and with the negative flag set.
OEE “ae | Z- set if the result is zero
OEE Booed C - set if the operand was negative
| Cycle 1: Destination register read
| OBE Register Usage i
Cycle 3: Destination register write
**----- End of picture text -----**
+ + +: + +© 1992-95 Atari Corp. + +Confidential Information JER Property ofAtari Corporation + +June 7, 1995 + +| i ' : 4q | | | i f ' | 4 i. | 4 I a . : : q ' | q , | f | j i ‘ 4 | + +Page 86 86 + +**==> picture [554 x 730] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||| +|---|---|---|---|---|---|---|---|---|---|---| +|Page 86 86|;|Jaguar|Software Reference Manual - Version 2.4|g| +|0|||ADD|Rn,Rn|Add|a| +|32-bit two's complement integer add, result is destination register|.|a| +|contents added to the source|register contents, and is written to the|4»| +|destination|register.||| +|Z. - set if|the result is zero| +|N|- set if the result is negative|ete|B||| +|Cycle|1: Source register read|& Pestination regisiersead|i| +|Cycle 3: Destination register wre:|EEE|a| +|T||ADDC|RaRn|Add with Carry|Te|"|| +|32-bit two's complement integer add'witlicarry in accordin#és.|—|||a| +|||the previous state of:the carry flag, otherwisellike ADD.|22|||a| +|||C - represents carry oil|of the adder||||=| +|Cycle 1: Source register read & Destinatidia register read|a| +|2|||ADDQ|n,Rn|Add|with|Quick|Data:|ag|||a| +|||32-bit fvo's complement iateger add, where the source field is|||gg| +|immediate data in the range|132, otherwise like|ADD.|g| +|PP Regier Usage 8|Be|el||| +|63.|||[ADDQMOD]|[n,Rn]|2s.|Add svithQuickData using Modulo Arithmetic|,| +|(DSP|only)|OE|| 32-bit|two's complement integer add like|ADDQ, except that the|||Ff| +|“ee|||result bits may be uBmodified data if the corresponding modulo|||=| +|HEE|register bits are set: Ehis allows circular buffer management (for|||rf|4| +|ee|||2n size Hubiers),;where|the high bits of the modulo register are set,|=| +|Eeece|os.|| and the low bits'left clear.|.|gg| +|4| +|ge|“Sls.|[|][ Z-][ set][ if][ the][ result][ is][ zero]| +|“EELUEN|- set|if the result is negative|q| +|"|G iepresents carry out of the adder|=| +|elie...| +|1| +|ae|EEE|Cycle|[T:]|[Destination][ register][ read]| +|one|OEE|Cycle 3: Destination register write|;|4| +|3.|EADDOT|n,Rn|WEEE|Add with Quick Data, Transparent|;|4| +|om|“||32-bit two's complement integer add, like|ADDQ except that itis|||||#| +|OE|“ce|| transparent to the flags, which retain their previous values.|.| +|“teati||Register Usage|P| +|SURE EEE|Cycle‘1: Destination register read|||||@| +|Cycle 3: Destination register write|}|4| +|© 1992-95 Atari Corp.|Confidential Information “FO® Property of Atari Corporation|June 7, 1995|i| + +**----- End of picture text -----**
+ + +q + +, | | + +**==> picture [538 x 767] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||| +|---|---|---|---|---|---|---|---| +|—=—E|eee| +|Page 87| +|Jaguar Software Reference Manual - Version 2.4| +|32-bit logical AND, the result|is the Boolean AND of the source| +|)|9|||AND|Rn,Rn|Logical AND| +|register contents and the destination register contents,|and is| +|written back to the destination|register.| +|Z|-|set|if the|result|is zero| +|N|-|set|if the|result|is negative|git.| +|Cycle|1: Source register read &|Destination register|tead| +|Cycle 3: Destination register wrte::..|ecccom| +|15|||BCLR|n,Rn|Bit Clear|cece|secre| +|Clear the bit in the destination register'selected by the immediate| +|||||| dataof the destination in the source registet fied,|which|is in the rage Q.31.|The other|bits| +|7, - set if destination registerare unaffectedis:now|all zero oF“He||| +|N - set from bit 31 gfthe resus,||| +|C-notdefined|OEE| +|\|Cycle:4:|Destination|register read|CEs||| +|||Register Usage|oe||| +|i|| Cycles:|Destinatiox:|register write|Ee| +|Set the bit in the destinatian|gépister selected by the immediate|—|| +|||i4|||BSET|o,Rn|Bit Set|oo||| +|data in|the:source|field, whicl3s|[in][ the][ range][ 0-31.][ The][ other][ bits]| +|»|||ep|of the destination|register are unaffected.| +|HEELS|||Cyele1: Destinatioi-register read||| +|"||Cycle 3:|Destination|tegister write||| +|)| +|EEE|Test the’bit|[in][ the'destination][ register][ selected][ by][ the][ immediate]| +|||13|||BYST an 2.|Bit|Test|ae| +|on|data in|the|source: field, which|is in the range 0-31.| +||||||HEE?eee“i,“ris.| Z-N|- setif not defined the|selected bit is zero| +|“ope.not defined|{| +|£a|Cycle: Destination register read| +|map|OEE|Cycle 3: (flags are valid)| +|30|2|3|-CMP|Rn,Rn|WEEE|Compare||| +|||coo_|EEE“ene|||[|comparison.]|stored,32-bit compare, but the flags this reflect is the same the result as|SUB of the without comparison, the result whichbeing|||| +|||EGE|[EBs][ ge]|2|| may therefore be used for equality testing and|magnitude| +|HS|Z - set if the result is zero (operands equal)| +|=_—|N|- set if the result is negative (source greater than destination| +||| +|y|operand)C|- represents borrow|out of the subtract||| +|Register Usage||| +|Cycle|1: Source register read & Destination register read|;| +|Cycle|3:|(flags|are valid)| +|©|1992-95 Atari Corp.|ConfidentialInformation|JPR|Property ofAtari Corporation|June 7, 1995| + +**----- End of picture text -----**
+ + +**==> picture [595 x 735] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +|i .|_|~Page 88|Jaguar Software Reference Manual - Version 2.4|j| +|i|31||CMPQ|n,Rn|Compare with Quick Data|-|7| +|ifi|| Z32-bit - set compare if the result with is immediate zero (operands data equal) in the range -16 to +15.|||ik.| +|y/|| N - set if the result is negative (immediate data greater than||| +|i|y|||destinationC - represents operand) borrow out of the subtract...||||P|;| +|i|||Register Usage|OEE|a| +|||Cycle|1: Destination register read|OE|a| +|21|||DIV|Ra,Rn|Unsigned Divide|Eee|CHEE||| +|The 32-bit unsigned integer dividetid:tn, the destination|register|is|||7| +|i|||divided by the 32-bit unsigned integer:divésor|[in]|[the][ source][ 1:]|&| +|register,|yielding a 32:bit unsigned integér:qiGtient|as the|result,|ad| +|| like normal microproeessar|division.|The remainders|available,||| +|||and division may|alsoS¢performed on|16.16 bit|unsigned’|a| +|:|||integers. Refer to|the|seetion’as atithmetic|functions.|||Ff| +|{.|| ZNC - unaffected|"3°|EE|Be.||| +|1|Cycle 1:Sautceregister read & Destination :#épister read|||,| +|'|CycleiiB:|Destinafidsi register write|WEEE|||aS| +|I|20||IMACN|Ra,Ra|Signed Integer Multiply/Accumulate, no Write-Back|&| +|1|||16-bit Signed integer multiply aad accumulate, like IMULT,|||-| +|"|| except thatthe 32-bit product'is:dded|to the result of|the previous|||gS| +|t|arithmetié|6pération,|and the reset|[is][ not][ written][ back][ to][ the]| +|1|agit Bestination régistef:|Intended|to bétised after IMULTN to give a| +|i|||BO|| *|rele to the section|6xMultiplyand Accumulate instructions|||q| +|i|"ib, ||Regitter Usage|3,|;|4| +|||==?|| Cycle'l: Source register read & Destination register read| +|i|17||IMULT|RaRa|Signed Integer Multiply|4| +|i|||HEE|16-bit signed integé¢|multiply, the 32-bit result is the signed|||j| +|i|cen|||integer pradictof the|bottom 16-bits of|each of the source and||| +|a|Eee|destination tégisters, and is written back to the destination|||1| +|4| +|bo|nite.|.|wae“Nieset if|[if]|the|[ the]|result|[ result]|is|[ is]|zero|[ negative]|||:1| +|q|||Ape|OPE|Register Usage||| +|i|am|EERE|Cycle|1: Source register read & Destination|register read|j| +|q|ic eee|“EE|Cycle|3: Destination|register write| +|/|[18||EMULTN|Rn,Ro|"8|| Signed Integer Multiply, no Write-Back| +|:|OEE|“a,|| Like IMULT, but result is not written back to destination register.|4| +|q|acces|EE|Intended to be used as the first of a multiply/accumulate group, as|1| +|L|“HEEB|Ein eee|EE|there are potential speed advantages in not writing back the result.|3| +|q|OEE|Z, - set if the result is zero| +|q|||N|- set|if the result is negative| +|7|;|C|- not defined| +|q|Register Usage||| +|q|Cycle|1: Source register read & Destination|register read||| +|||© 1992-95 Atari Corp.|Confidential|Information “JER|Property ofAtari Corporation|June 7, 1995|‘| + +**----- End of picture text -----**
+ + +| | | + +| | ] + +**==> picture [571 x 692] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||| +|---|---|---|---|---|---|---|---| +|||Jaguar|Software Reference Manual - Version 2.4|Page 89| +|4|53|| JR|ce,n|Jump Relative| +|||Relative jump to the location given by the sum of the address of| +|||the next instruction and the immediate data in the source field,| +|which|is signed|and therefore|in the|range +15|or -16 words. The| +|||||condition codes encode|in the same way as JUMP.| +|||||RegisterZNC|- unaffectedUsage|Pee“aitiiivtne,.,| +|||Cycle|1:|(flags must be valid).!:2°|eee| +|52|| JUMP|cc,(Rn)|Jump Absolute|en|eect| +|| Jump to location pointed to by'thé'source register,|destizidition|.| +|||field|is the condition code,|where|thé:bits encode|as|follows::,| +|||Bit - Condition|7|ee||| +|||1|- zero flag must be|Sét'for jump|to occur|nee||| +|||||3|- flag selected bybit'4|must:be|Set|for|jump to occur| +|||| 4 - if set select negative flag, if cleat:select carry.| +|||jump.taIf more|than,onedesur|(the.conditions condition is set,are theti‘they:must ANDed)|22285: all be true for the||| +|i|Cycle: 45.(flags must bevalid):| +|41||LOAD|(Rn),Rn|Load|Long.|Ee||| +|p|||ii)_..{ 32-bit Vgadress, memory:read.which|must Thebe|long-word source:|registeraligned. contains The destination a 32-bit byte||| +|||£|°°) register will have|the|data loaded|into|it.| +|||cam|Register|Uisage| +|||“ae"||||Cygie'l:Cycle|n: Source:gegisterDestination|tegisterread write (internal memory|at cycle 3 or| +|Hon.|4,|external memory:subject|to bus latency)| +|43|||LOAD|(Ri4#K¢Rn|Load Long,|with: Indexed Address| +|44|| LOAD|(R1S#RE|RR.|32-bit|meriaty|read, as LOAD, except that the address|is given by| +|EP|ee.|| the sum of either R14 or R15 and the immediate data|in the source| +|EE|“cel. register|field,|in the range|1-32. The offset|is in long words, not in| +|||-|we Bytes, therefore a divide by four should be used on any label||| +|||jee|eee|“asithinetic to give the offset. This is slower than normal LOAD| +|eee|cee|operations due to the two-tick overhead of computing the address.||| +|||Oe|ZNC|- unaffected|;| +|cee|WE|Register Usage||| +|eer|eee|Cycle|1: R14 or R15|register read| +|eee|“HEE|||Cycle n: Destination register write (internal memory|at cycle 5 or| +|OEE|“=|||6, external memory|subject|to bus latency)| +|58|||LOAD (Ri4#Rn),Rn <=|| Load Long, from Register with Base Offset Address| +|59|||LOAD(R15+Ra)Ra|32-bit memory load from the byte address given by thesumof|=|| +|_|R14 and the source|register|(the address|should be on|a long-word||| +|)|boundary).Cycle|1: R14Otherwise or R15|register like instructionsread & Source 43 andregister 44.|read| +|6,|external memory subject to bus latency)||| +|||Cycle n: Destination register write (internal memory at cycle 5 or| + +**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. Confidential Information ‘JER Property ofAtari Corporation + +June 7, 1995 + +**==> picture [589 x 730] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||| +|---|---|---|---|---|---|---|---|---|---| +|j|Page 90|Jaguar Software Reference Manual - Version 2.4| +|4| +|i|39||LOADB|(Rn),Rn|Load8-bit memory Byte|read. The source register contains a 32-bit byte|||}| +|||address. The destination register will have the byte loaded into|||a| +|;|bits 0-7, the remainder of the register is set to zero. This applies to|4| +|[|external memory only, internal memory will perform a 32-bit|7| +|/|read.|||=| +||| CycleCycle n:1: Source Destinationregister register read write (externalHee|OREmemory subject to|||g1| +|||bus latency)|2|S|||| +|1|16-bit memory read.The source register:contains a 32-bit byte:|||:| +|:|{|||address, which|mustbe|word|aligned. The|destinationsegistet|Will||| +|\|||| have the word loaded istic: bits, 0-15, the remainder: of the reaister| +|7|i|||is set to zero. This applies:|toexternal memory only, internal|||}| +|||ZNC- unaffected|~|EEE|:| +|i|| memory will perfornga:32-bit read.| +|||| Register Usage.|_||| +|||||| Cycle se|Destination|Fegister write (external memory subject to||| +|i|42|||LOADP|(Rn),Rn|Load|Prase|OE| +||i|||||(GPU only)|_aahsaddress,64-bit memsoity.read. whidittiust The be phrase source:tegister aligned.|The contains a destination 32-bit register byte||| +|r|||oui|have|the low fengword loadéd/:into it, the high long-word is|7| +|i:|||Ae|available in the high*half register. ‘This applies to external|:| +|f|oe|||memory:|onlsi:internal merry|will perform a 32-bit read.| +|1| +|4|||OE|ZNC# unaffected|2:5,| +|i|||||.|Register Usage|2:| +|b|||Ha|||Cycle|1: Source register read| +|i|i|THERE|||Cycle n;-Destinatian|register write (external memory subject to| +|q|||bus|latency||| +|a|48|||MIRROR|Rove?|ee...||Mirror Operand|4| +|,|(DSP only)|“*|“5|Eephe register is mirrored,|i.e. bit 0 goes to bit 31, bit 1 to bit 30, bit|j| +|||||nites|“42ag:bit 29 and so on. This is helpful for address generation in Fast|||;| +|}|re|| Z - set'#f the result is zero|;||| +|it|ee|ceeeccamy|| N - set if the result is negative|a| +|||Aes|OEE|| C - not defined||| +|'|OH|ey|||Cycle 1: Destination register read|||]| +|||||“HHH|ise)|| Cycle 3: Destination register|write|fg| +|’|© 1992-95|Atari Corp.|Confidential Information “JPR Property ofAtari Corporation|June7,1995||| + +**----- End of picture text -----**
+ + +| + +j 2 1 1 + +**==> picture [555 x 723] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||| +|---|---|---|---|---|---|---|---|---| +|Jaguar Software Reference Manual - Version 2.4|Page 91| +|il|54||MMULT|Rn,Rn|Matrix Multiply| +|location of the|register source matrix,|the product|is written|into| +|=|||| Start systolic matrix element multiply, the source register is the| +|||the destinationThe flags|reflect register. the|final Refer multiply/accumulate to the section on matrixoperation: multiplies.| +|Z|-|set|if the|result|is|zero|sani.| +|N|-|set|if the|result|is negative|22:2|Ens ee,| +||| +|||C- represents carry out of the!adder|OPED||| +|Register Usage|oo|_||| +|Refer to the discussion|of mult#pl§/accumulate|Macca| +|1|34.|||MOVE|Rn,Rn|Move Register to Register|255...|ees| +|ZNC|- unaffected!| +|.,.|CHEE|gee| +|Cycle|1: Source register:tead®:....|SEEESEEEE| +|Cycle|2:|Destinatiog|fepister|wete:..| +|51|||MOVE|PC,Rn|Move Program Count to Registet:| +|||Load the.destination|register with thé‘addiess of the current||| +||| +|.|||||instryson:|The setual value read from the P€is modified to take|;| +|||intg-aecount|theéffeets.of pipe-lining and préfetch, to give the||| +|||||cofteet address.|Thisis|the:only way for the GPU/DSP to read|its||| +|iS|22||Oyele|2:|Destination|register write:| +|37|| MOVEFA|RnRn|2|||Move|from|Alternate|Register”| +|ee|32-bit|alternate|register|to register transfer, the source register| +|||con|||lying|in|the|ofher-bank of 32 registers.| +|“ae|||ZING unaffected!| +||||||Register Usage|72):| +|ccm|||Cycle|1: Source register read| +|||38||MOVED nRS|Move|iminiediate| +|GoP|NGie.|| 32-bit register load with next 32-bits of instruction|stream. The| +|fee|clea|first word in the instruction stream|is the low word, the second the||| +|es|||ices|Cycle 3: Destination register write| +|352ci BMOVEQ|n,Ro|8s,OH|Move32-bit Quick register Data load with immediate value in the range 0-31.||| +|oe|“=|||ZNC|- unaffected| +|||||Suge.|fl|1|Cycle 2: Destination|register write| +|_| +|||||36.|| MOVETA Ran fe||| Move32-bit to register Alternate Register to alternate register transfer, the destination register| +|/| +|| at")|||lying in the other bank of 32 registers.||| +|“|| ZNC-|unaffected||| +|||Register|Usage| +|| Cycle 1: Source register read|| 7| +|Cycle|2: Destination register|write| +|© 1992-95 Atari Corp.|Confidential|Information “JER Property ofAtari Corporation|June 7, 1995| + +**----- End of picture text -----**
+ + +| _ Page 92 Jaguar Software Reference Manual - Version 2.4 = | 55 | MTOI Rn,Rn Mantissa to Integer q Extract the mantissa and sign from the IEEE 32-bit floating-point . af | | number in the source register, and create a signed integer in the _ | | destination. The most significant bit is bit 23, but it is sign g q extended. \ Z 4 | Z, - set if the result is zero | a : N - set if the result is negative fF fen. | : ‘ t Cycle 1: Source register read EEE OPER | : rr Cycle 3: Destination register writ@: OEE | i| || integer16-bit unsigned product ofthé:bpttom integer multiply, the 16-bits 32sbHt:tesult of each'bf theis source anid the unsighied | fis if | | destination registers, and:isawritten back to the destinarion: 2° | I | q: | || NZ-set - set ifthe if bit 31 resultisizéro of the result is“82sone#222. | 4g : | Cyclé:#: Source régistertiread & Destination register read | | if Cyclé:3; Destination registef:write ' | 32-bit two's complement negate; the result is the destination ; : qe contents:subtracted from:Zéfo, and is written back to the } i £222 destination register: Note that 804300000h cannot be negated. | — i | tees, | C- repeesents borrow out of the subtract | a : Cycle 1: Source register read | | i ' Eee Cycle 3: Destination segister write zz a 56 |NORMI Rn,Rn “=F Normalisation Integer | 4 : fs, Gives the ‘normalisation integer’ for the value in the source | @ : Paar register, which should be an unsigned integer. The normalisation | | | { | aoe eee integer is the amount by which the source should be shifted right | | 4 { om EEE to normalise it (the value can be negative), and is also the amount | , | : See “lees | to be added to the exponent to account for the normalisation. | q | SHE seek | Z- set if the result is zero **—** 4@ {: | escanaaOESPea | NRegi - **s** etter if Usagthe r **e** sult is negative | ,| |@| a | Cycle 1: Source register read ; & q | Cycle 3: Destination register write 4 © 1992.95 Atari Corp. Confidential Information 70% Property of AtariCorporation June 7, 1995 J + +! + +| ; | + +| + +' q + +**==> picture [542 x 677] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||| +|---|---|---|---|---|---|---|---|---|---| +|Page|93| +|Jaguar Software Reference Manual|- Version 2.4| +|)|12|| NOT|Rn|Logical NOT| +|||[32-bit][ logical][ invert,]|[the][ result][ is][ the][ Boolean][ XOR][ of][ FFFFFFFF]| +|,| +|hex and the destination|register contents, and|is written back to||| +|;|||the d7,|-|s|e|tstinationif the|result register.is|zero|!| +|N|-set|if the|result|is|negative|ain...| +|Register Usage|Eee|OEE| +||| +|||Cycle 1: Destination register read|cccccem| +|Cycle 3: Destination register wails:|acces| +|10|||OR|Rn,Rn|Logical OR|"reig|thié-Boolean OREE of hE||| +|[or][ operation,]|[the][ result]| +|||[32-bit][ logical]| +|||source|register contelitsand the destination tegister content§;and||| +|i|7, - set if the result|is 26m! 22.|“CHEEEBEEBE"||| +|8...||| +|||| NC-notdefined - set if the result|igBegative!!—||| +|||Register|UsageSource|tegister read & DestinationOE|gegister read||| +|||Cycles:| +|||Cycle’: Destination|yegister write|OEP||| +|63||PACK(GPU only)Rn|| TakesPack|an,CRYunpackedPixel|pixel|vglué.and|packs it into a 16-bit CRY||| +|||pixel. $i48:22|to 25 are mapped dato|bits 12 to 15; bits 13 to 16||| +|Gita|bits 8 to 11; aid|bits 0 to 7 are mapped onto bits||| +|qr|csegeot® mapped| +|.|Ee|The régi field should be:Séf|to zero to differentiate this| +||| +|P| from|UNPACK.|See|this'section|on Pack and Unpack||| +|||Be|| Flags! esi,| +|||| Cycle 1: Destination:tegister read|\| +|Ss.|Cycle 3: Destinationtegister write||| +|19||RESMAC Rts.|Multiply/Accumulate|Result Write| +|EEE.|Takes the current Contents|of the result register and writes them to| +|a.|ee|||the register|indicated. Intended to be used as the final instruction| +|.| +|ae|“1 of a multiply/accumulate|group.| +|_|“Eee.)|ZNC:-referunaffectedto the section on Multiply and Accumulate instructions||| +|_|||Register Usage| +|Bene|eee|Cycle 3: Destination|register write| +|||TEESE|ONEHEEE|32-bit rotate right by the bottom 5 bits of the source register. Can||| +|EEE|“cues.|| be used for ROL functions by complementing the value.| +|TE|gee|1N-setif the result is negative| +|eeeeeeeeaaceal|| C - represents bit 31 of the un-shifted data|||| +|||||_|| Register Usage| +|Cycle|3:|Destination|register write| +|W|||||Cycle 1: Source register read|& Destination register read||| + +**----- End of picture text -----**
+ + +© 1992-95 Atari Corp. + +Confidential Information “JER Property ofAtari Corporation + +June 7, 1995 + +1 | + +Page 94 Jaguar Software Reference Manual - Version 2.4 g | 29 | RORQ n,Rn Rotate Right by Immediate Count a Immediate data version of ROR. Shift count may be in the range A Z - set if the result is zero | q " | N - set if the result is negative i | C - represents bit 31 of the un-shifted data j ; | Register Usage Pree ciecertee | = i Cycle 1: Destination register read Ese | if Cycle 3: Destination register white cee 3 i 32 | SAT8 Rn | Saturate To Eight Bits oo “HE | § unsigned integer. If it is negative it if:set:to zero, if it is gréatee. | a | (GPU only) | Saturate the 32-bit signed integer:operand value to an S3Bit. | a i | than 255 it is set to 255. This is useful fae: computed intensitigs: | ; } | | and so on, to counteragt:the effect of rounding exrors. | | 2 s.. mE | a i Z - set if the result is zéng@? A C - not defined “ EEE | i | | Cycle JiBlestinationregisterread | | i | Cyclé'3? Destination ségister write - a a 33 | SAT16 Rn Saturate To Sixteen Bits: 2. | | a (GPU only) Saturate:the 32-bit signed inte ger.operand value to a 16-bit 4 4 unsignéd:isiteger. If it is negative itis set to zero, if it is greater | = i _fthan 655359618 fesse wakes, and so Off;{d:eounteract thé:effect of rounding errors. | 4 I Set to 65535. Thi§:ig-useful for computed Z, audio , I | iP | Flags Ff [og 4 Te | N - cleared, | a “He? | C-nobdefined “He2, a . "| Register Usage TEE, 7 i atk. | Cycle 1: Destination register read (4 i oe | Cycle 3:Destinatias register write & : 33. |SATI6S Ro 2282088, Saturate to:Sixteen Bits | ¢@ [ (DSP only) HEP22" 7“Hd integer. Saturate the 32-bitIf it is negative signedit is integer less than operand 8000h valueit is to set a to 16-bit that, signedif it is | **4** y _ “"dgeéater than 7FFFh it is set to that. f | ae OE C - not defined , q He “euiec. | Cycle 1: Destination register read _ ' OEE “Hel | Cycle 3: Destination register write Zz + +| + +© 1992-95 AtariCorp. + +Confidential Information JER Property of Atari Corporation + +June 7, 1995 | + +" + +| + +**==> picture [545 x 732] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||| +|---|---|---|---|---|---|---| +|Page|95| +|||Jaguar|Software Reference Manual - Version 2.4| +|.|62|||SAT24|Rn|Saturate To Twenty-Four Bits| +|(GPU only)|Saturate the 32-bit signed integer operand value to a 24-bit| +|than|16,777,215|it is set to 16,777,215. This|is particularly|useful| +|||||unsigned integer. If it is negative|it is set to zero, if it is greater||| +|:|||| for computed intensities, to counteract the effect of|rounding||| +|||errors.|_ettltines.| +|Flags|ee|ee| +||| +|7 -setifthe|result is zero.|||CEEHEEE| +|||||Cycle 1: Destination register read|cee|eet||| +|||||Cycle 3:|Destination|fegister write|Ce|ee| +||| +|||42|||SAT32S|Rn|Saturatesigned|integer. Multiply/Acewmulate This:ses the‘GverfiowResult bits fromEEE oe| +|||(DSP only)|Saturate the 40-bit sighed integer operand value to aif 32-bit||| +|multiply/accumulate“operations|ag the'top eight|bits of the source||| +|||value.|Ifthe.accumulated value is lessthad:80000000h|it saturates| +|||to|thasef'i238|gredter then7FFFFFFFh itSatusates to that.||| +|||Z|- setit the result|#6|2810|a| +|||| N ~setif the result is negative||| +|if|ent Cycle|1: ‘Destination register read.| +|||a||32-bitA|positive shift ‘valle left|or causes a right piven'by shift tothe the value right. in Values the source of|plus or register.||| +|“HEE|.||mitius set thirty-two if the resultGt3'2er0greater give zero. Zero is shifted in.||| +|ES|||Ny|- set if the result| +|4s negative||| +|||THEE|| C - représents big:|Oot the un-shifted data for right shift, or bit 31| +|||HEP|“culeced|Cycle 1: Source register read & Destination register read| +|“HEHE|@ycle|3: Destination register write| +||| +|Ae OEE|| As SH but right shift is arithmetic, i.e. sign shifted in.| +|1|7cei|CHEEEEE||| NZ|-- set set if if the the result result is is zero negative||| +|7|OEE|| C - represents bit 0 of|the un-shifted data for right shift, or bit 31| +|eee|“eee|||for left shift| +|||eee _|ee|Cycle 1: Source register read & Destination register read| +|BoE|Cycle 3: Destination|register|write| +|© 1992-95 Atari Corp.|Confidential Information “7O® Property|of Atari Corporation|June 7, 1995| + +**----- End of picture text -----**
+ + +**==> picture [2 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +**==> picture [1 x 34] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +**==> picture [601 x 725] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||| +|---|---|---|---|---|---|---|---|---|---|---| +|1|Page 96|Jaguar|Software Reference Manual - Version 2.4|s| +|'|27|||SHARQ|n,Rn|Shift Arithmetic Right|o| +|]|As|SHRO but arithmetic shift right,|i.e. sign shifted in. Best|ad|q| +|i|Z - set if the result is zero|s| +|4|N|- sei|if the result is negative|4| +|||| C - represents bit 0 of the un-shifted|data|a| +|i|| Register Usage|ie||| +|||| Cycle 3: Destination register wie:|accom||| +|:|24|||SHLO|n,Rn|Shift Left with Immediate|Shift|Count|7|a| +|i|! 39-bit shift left by n positions, inthéxange|1-32.|OtherWige|dike|||Ss| +|||||||SH. (The shift value is|actually encoded-as 32-n, this ishavdied|9)| +|||| by the assembler)...|Oe,|Ee|a| +|q|| N-set if the result is|negative|OEE||| +|;|C-- represents|bit 31|of|thewn-shifted data|—||| +|||||| Register Usage|7||| +|i|||||Cycle 1: Destination register|read|#288:|||a| +|:|||+ Cycle 3:.Destination|register write|CHRHE in|=| +|4|||25||SHRO nn|Shift|ight|withLiimediate Shift|Count =|5| +|:|||As SHEQ but shift 'right,:zero shifted in.|/|Zz| +|7|lz - Sé€3fthe|result is ZEPG|=| +|[is][ negative.]|||@| +|a|||| N - se€|[ifthe][ result]| +|q|||||.|.|| C - represents.bit 0 of the un-shifted data|||;|2| +|||a7|[STORE|Rn(Rn)|«||StoreLiong| +|||=.|||=| +|iF|ccm|| 32-bitmemory: weite. The source register contains a 32-bit byte|||q| +|||||register contains|the|[data][ to][ be][ written.]|a| +|4|||||“HEE”|| addvess, which mustbe long-word aligned. The destination|||=| +|. qa||||||eeete|RegisterCycle 1:SautdéregisterUsage ai!|read & Destination|register read|||]p|4| +|:|49|||STORE|Rn(Rit+n)“22|%,,.|||Store Long, with Indexed Address|,||| +|:|50|| STORE|Rn(RiStn)|“|4:32-bit memory write, write as STORE, with address generation|in||| +|i|estes,|Ghercame manner as the equivalent LOAD instructions.|4| +|(|Eye|SEE|Register Usage|||:| +|;|a|OOH|||Cycle 1: R14 or R15 register read|=| +|io|eee|Cycle 2: Source register read|||@| +|i|;|60|[ORE Rn,(R14+Rn)'223,|||Store Long, to Register with Base Offset Address|a| +|:|||61|||STORBRn(R15+Rn)|“4|||32-bit memory store to the byte address given by the sum of R14|j| +|||Pf| +|L|WEE.|aati’|||boundary).|Otherwise like instructions 49 and 50.| +|’|||||WEEE|ae|: and the destination register (the|address should be|on|a|long-word|4| +|y|||SOE|| Register Usage|||.|4| +|i|||!|Cycle|1: R14 or R15 register read & Destination register read|,| +|q|||Cycle 2: Source register read| +|q|© 1992-95|Atari Corp.|Confidential Information ‘JER|Property ofAtari Corporation|June 7,|1995|4|q| + +**----- End of picture text -----**
+ + +} + +| + +4 : + +## Jaguar Software Reference Manual - Version 2.4 + +Page 97 + +**==> picture [546 x 699] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +|f|45|| STOREB|Rn,(Rn)|Store Byte| +|8-bit memory write. The source register contains a 32-bit byte| +|||address. The destination register has the byte to be written|in bits| +|||0-7. This applies|to external memory only, internal memory will| +|ZNC|-|unaffected|eee.| +|||| pR|e|gisterrform a Usage 32-bit write.|ee| +||| +|Cycle|1: Source register read &|Destination|register|read| +|||46||STOREW|Rn,(Rn)|Store Word|aon|WEE| +|16-bit memory write. The|soureg|register contains a3gasitbyte| +|address, which must be word aligned: ‘The destination|register has| +|the word to be written|in bits 0-15.This|applies to external?| +|memory only, inteiiial.memory|will performs: #:32-bit write2!| +|Cycle|1: Source register|read|&|Destination register read||| +|48|||STOREP|Rn,(Rn)|Store Phrase|~*|WEEE| +|(GPU only)|||64-bit memory|write. The source register¢ontains a 32-bit byte| +|||address,confains thewhich low’ titst légigewordbe phraseof the aligned. ‘The data to bedestination written,|the register high| +|||||long-word is obtained froie.the high-half register. This applies to||| +|{|extefial.|memory only, inteimal-memory|will perform|a 32-bit| +|Bee|Cycle:1;|Source registerread &|Destination|register read| +|||register contents sititracted from the destination|register contents,| +|||||SEES|| 32ebit two's cotaplément integer subtract, result is the source| +|||HeHEHE|borrow:outand is written|[of]|to the|[ the][Subtract,]|destination|[ and][ the]|register.|[ zero][ flag]|The|[ is]|carry|[ set][ if]|flag|[the]|represents|[ result][ is]||| +|poe|||Z-setif the result is zero||| +|HEE|“clilds.||N|- set if the result is negative| +||| +|-|“TAL.|represents borrow out of the subtract||| +|| Register|Usage| +|AS|Bee| +|||Sep|Cyélé:l: Source register read & Destination register read| +|ey|OTHE|Cycle 3: Destination register write| +|||5|ESUBC|RnRn|Subtract with Borrow| +|con|EE|32-bit two's complement integer subtract with borrow in| +|THEE|“8|||according to the carry flag, otherwise like SUB.| +|WEEE|2|| Z- set|if the result is Zero| +|tae|i|| N-|set if the result is negative| +|oe|C|- represents borrow out of the subtract| +|—|Register Usage||| +|gv|Cycle|13|:|SourceDestination regist r|e|gisterr read writ & D|e|stination register read|}|| +|ee© 1992-95 Atari Corp.|Confidential InformationFERProperty ofAtari Corporation7,June 7, 1995 1995| + +**----- End of picture text -----**
+ + +1 Page 98 Jaguar Software Reference Manual - Version 2.4 a | 6 SUBQ n,Rn Subtract with Immediate Data s i 32-bit two's complement integer subtract, where the source field is ays 4 il | immediate data in the range 1-32, otherwise like SUB. “ § | | Z - set if the result is zero '' |{ NC -- represents set if the result borrow is negative out of the subtract. i , ja : Cycle 1: Destination register rea UES ; 4 | | Register Usage Se | a | | Cycle 3: Destination register write: EE ' | 32. |SUBQMOD n,Rn Subtract with Immediate Data:#:::. Ee a \ (DSP only) | 32-bit two's complement integer subtract like SUBQ, excépk that | | ( | the result bits may be unmodified data if the corresponding’, | a q | modulo register bits are set. This allows ‘dipéuifar, buffer SEB { | | management (for 2" sizebuffers), where the High Bits.of thé” | : 4 | modulo register are set; and tlie, low bits left clear: 808s" f 7, - set if the result is Zero" "222288. is a | | N - set if the result isiiégative “28S. a | i | | C- represents borrow out of the subtract #irior to the modulo | a 3: Destination register read | ey |, q || CycleCyclé:3:Destination registee write a | 7 | SUBOT n,Rn | Subtract:with Immediate Data, Transparent j : | | | 32-bit two's Gomplement integer subtract, like SUBQ except that r § 4 | | att itis wranspareit tothe flags, which tétain their previous values. | oo Po | | Cycle1: Diéstitation register read | @ | , 63 |UNPACK Rn ==" Onpack CRY Pixel:[=] | i:’ (GPU only) ._SHEN **|** Takesinteger. an Bits packed CR¥:pixel 12 to 15 ate mapped value onto and unpacks bits 22 toit 25; into bits a 32-bit 8 to 11 4Pf a TEBE | are mapped onto bits 13 to 16; and bits 0 to 7 are mapped onto [| s ' EP | bits 0 to 7.Aflother bits are set to zero. The regi field should be P| |: | oniiivinn. ge“ "See“fs|[Pass set to and one Unpack to differentiate this from PACK. See the section on | **a** Pq i | fe ZNC: Ghaffected i ‘ Pp OPER Register Usage = eee “ult. 1 Cycle 3: Destination register write = { aye ecm Cycle 1: Destination register read L | 11 a |XGR:.Ro,RnWEEE TE"EE | 32-bit| Logical logical XOR exclusive or, the result is the Boolean XOR of the | 4I | i OEE Ee | source register contents and the destination register contents, and | , a “HECOEeec.. aati’? | is written back to the destination register. | : ' OS EDEEEEES | 7. - serif the result is zero yf 44 ‘ N - set if the result is negative F | | C - not defined . i Register Usage 7 ' | Cycle 1: Source register read & Destination register read — | 4 | | | Cycle 3: Destination register write | fr 4 q © 1992-95 Atari Corp. Confidential Information “7O® Property ofAtari Corporation June7,1995 (im + +Page 99 + +Jaguar Software Reference Manual - Version 2.4 + +## . Witing Fat GPU andDSP Progiams + +To get the most out of the Atari RISC processors, it is important to avoid wait states. Each processor can execute one instruction per tick in ideal circumstances, but it is very easy for code to be subject to so many wait states that it only achieves around half this figure. It will be worthwhile.far pfegrammers to tune the :anermost loops of their code for maximum performance, and the rules given here Shouid help do that. A well written program can usually achieve an instruction throughput of around two-thirds of the peak. figure. Wait states usually occur either because an instruction would otherwise use'some system resoures, such as a register or a flag, which is not valid; or it would use a piece of hardware that iscurrently still activé:fiom an earlier operation, such as the external memory interface. This is because the chipset:makes significantiuse of pipe-lining to improve performance. oe eects AES Wait states are incurred when: ee — « an instruction reads a register containing the result of the previous instfaction, one tick of wait is incurred until the previous operation completes. HEE reece +» an instruction uses the flags from the previous instruction, one tick of wait is iigutred until the previous operation completes. eee “EEE - a result has to be written back and neither.t6gister operand:6t Hix instruction about to be executed matches, one tick of wait is incurred to letthe.data be written es «two values are to be written back at once, oné tick.of wait is incurred: 2 2. » an instruction attempts to use the resuit.of a divide instruction before itis ready. Wait states are inserted until the divide unit completes:the divide, between oe: ad sixteen wait states can be incurred. + a divide instruction is about tobe executed:and the.previous one has aot completed, between one and sixteen wait states can be incurred. fee eae - an instruction reads a register which is awaiting data from an incomplete memory read, this wiil be no more than one tick from internal memory, but can be severab:ticks from external memory. * a load or store instfuction is about to be executed and the memory interface has not completed the transfer for the previous ones (one internal load/store’or tworexternal loads/stores can be pending without holding up instruction flow} de, ee” + after a store instruction with an indexed addressing mode (one tick). + after ajump:or jr (three ticks if executing out of internal memory). ° if the nextinstruction has not been read, this will only occur when executing out of external memory. . during a matrix multiply if:the CPU accesses the internal space of Tom or Jerry (whichever made the The most common cause of wait-states is using a register which was altered by the previous instruction. For example consider ‘this code fragment’ 4 ada sox, roe ; add. offset to X 2 shrq #1,79 : apply scaling factor , 3 add r0,x4 : add to base w 4 add r5,r1 >; add offset to ¥ 5 shrq #1,r1 : apply scaling factor 6 add ri,ré ; add to base + +## (iy - + +© 1992-95 Atari Corp. Confidential Information “JPR Property ofAtari Corporation + +June 7, 1995 + +Page 100 + +Jaguar Software Reference Manual - Version 2.4 + +4 : : 4 ; + +° ‘ail 4« + +| + +4 + +Wait states will be incurred after instructions 1, 2, 4 and 5. If the code were laid out like this: 1 add r3,x0 ; add offset to X Zz add r5,xr1 ; add offset to Y 3 shrq #12,r0 j; apply scaling factor 4 shrq #1,xr1 j; apply scaling factor 5 add r0,r4 ; adc to base 6 add rl,ré ; add to base OHSS. No wait states would occur. This is an example if interleaving, and this is apowerful techaique for speeding up code. It is well worth the performance enhancement - 6 ticks instead of[in][this][ example] +ig ensure that your code is laid out like this. Obviously there is a considerable overhead i#:thinking this out, byt for loops that are executed many times it is well worth doing. THERE EEE + +‘: + +© 1992-95 Atari Corp. + +Confidential Information “PER Property ofAtari Corporation + +June 7, 1995 + +Page 101 + +Jaguar Software Reference Manual - Version 2.4 + +| 2 + +## ee + +: moe The Jaguar system is intended to be usable in either a little-endian, e.g. Intel 80x86, or big-endian, e.g. 680x0, environment. The difference between these two systems is to do with the way in which bytes of a larger operand are stored in memory. There is potential for considerable confusion,nété; Be:this section attempts to explain the differences. i When storing a long-word in memory, 4 big-endian processor considers that the most signifieadit byte is stored at byte address 0, while a little-endian processor considers that the ifidst significant byte istered at ##i§ is.not an issue forthé:hemory byte address 3. When both 32-bit processors are fitted with 32-bit memory interface, as the concept of byte address has no meaning; where it does becomie'@'pireblem is when the:data path width is narrower than the operand width. fee acces Be mes This document adopts the big-endian convention andMotorola @perand ordering convention Euille-endian and Intel operand conventions could equally well have been applied... en ee The IO Bus Interface is a 16-bit interface. Thegefore, 32-bit daka-guch as addresses will be presented differently between the little-endian and big-edian systems. What kappens, in effect, is that the sense of Al is inverted between the two systems. Abig-endian, system will see'the tigh word of long-word at the low address, a little-endian system will see the high word.at the high addres$:! + +## Lb + +As the co-processor bus interfack is 64-bits wide, these-is.no problem regarding big and little endian systems, although graphics processor prograrimers should always tse: byte, word, or long-word transfers as appropriate the CPU is big or little endian. to the operand size to avoid having:[be][ awate][of][whether] —S—— nae One side effect of the big or fittleendian philosophies is with regard to the organisation of pixels within a phrase. oa In the little-endian system, the left-most pixelis always the least significant. In a phrase of data the left-most pixel includesbit }..In byte address terms, this.#s.in byte 0. In the big-endiai: system, the left: most pixel is always the most significant. The left-most pixel therefore always includesbit 63;..n byte address terms this is stored in byte 0. 63° 86755 48 7 0 left right + +Consider an eight-bit per pixel mode: - in pixel mode, the left-most pixel in both systems is at byte address 0. © 1992-95 Atari Corp. Confidential Information “JER Property ofAtari Corporation + +June 7, 1995 + +Page 102 + +Jaguar Software Reference Manual - Version 2.4 + +1 4 a : + +i + += + +- in phrase mode, the little-endian left hand pixel is on bits 0-7, the big-endian left hand pixel is on bits 56-63. + +(these modes refer to Blitter operation, which is described elsewhere) + +This difference therefore affects operations that involve addressing pixels within a phrase when transferring a whole phrase at once (Blitter phrase mode). a + +© 1992-95 Atari Corp. + +Confidential Information TER Property ofAtari Corporation + +June 7, 1995 + diff --git a/docs/atari-jaguar-1999/04 - Technical Reference.md b/docs/atari-jaguar-1999/04 - Technical Reference.md new file mode 100644 index 00000000..94e9216c --- /dev/null +++ b/docs/atari-jaguar-1999/04 - Technical Reference.md @@ -0,0 +1,851 @@ +Page 1 + +|| | | | | + +{ | : + +| Technical Reference s Waguar Console Hardware ReleaseNotes — = This document describes the Jaguar console hardware as far as software development is concerned. It is — acompanion to the Jaguar Software Reference Manual - Tom & Jerry.[_] Ce | General Guidelines For So | Do not ever write to any of the following registers. The BOOTROM (in a.standard retail cosole) or the | STUBULATOR (in a development console) will set them up. Especiallythe: settings in CLK2,;CLK3 and HP registers must be correct to make the hardware workat all and preventdot craw] in particular. a rMEMCONT—[$F00000 SSCS rMEMCON2 | $Fo0002 | FOLKY | SFi0o10 a a MEEK SF10012 SS —*dB | SF000% | berks srtooia (aka CHROMA DI [WBE [srooowz Lap sroome SVS [Foods rasFo00 **s** a t rHBE_-‘([$roogs2 FEE | $EQ004C @ The VMODE register and object piocessor Will be initialized.and started after reset by the bootcode. Then the only object in the object list will bé:a stop object, which willeffectively display a blank screen and send the correct video synchfonisation sigitals #6’ the monitor or TV. This also allows the phase locked loop to settle, which takes'about a segond[at] start-up.[Do] not ever turn video off again![(i.e.] by writing a zero to VMODE !!) AEP “ CHEE + +Audio is mute after reset. You have'to turn it on by setting bit 8 in register JOYSTICK. + +Jaguar cartridges normally contain a 128 byte serial EEPROM to be able to save highscores and other user specific information. For informationhew'to access the EEPROM refer to EEPROM.ZIP of your developer Software Or from.our BBS. EEPROM cartridges currently use bit 0 of JOYSTICK. Do not rely on the readable statusof JQ'YSTICK bit 0 - it is random. + +1 + +© 1995 Atari Corp. + +Confidential Information ‘JER Property ofAtari Corporation + +26 April, 1995 + +Page 2 + +Technical Reference J i + +| : + +| | | | + +| | | OR | + +FDO + +WO + +i + +| + +| + +## MemoryMap/Registerlist + +The tables below show the Jaguar hardware register list. For each item in this list, we show the equate as given in the JAGUAR.INC include file (or other appropriate include files), the name of the register as given in the Jaguar Software Reference Manual, the address of the registériti hexidecimal, and a twoletter code for how the register is to be used: ee ee RW= Read/Write WO= Write Only "3, RO = Read Of. + +Note: Those registers shown in BOLDFACE should never be modified byyour-programs. Theyare set up for you by the machine at boot-time. They are included:here for informatiésal:purposes only: + +|System|Setup Registers|Setup Registers||| +|---|---|---|---| +|HENCoRZ
hac|[Memory Control
Register2_____———~—=—=—S
== rooooz
Rw
| HorizontalCount
a,
SSCSCSC~CS|||
OR| +|py||TighePenverical
«duo||| +|one||ObjectstPomter
SSCS «dw|| +|||[Horizontal BtankingEnd
=
SSSSSC«*|| +|haDB]||| Horizont OisplayBegn2 = —SSSCSCSC~FOG|| +|||‘egramimnableInterruptTimer
fFoo0s0-52[wo||| + + + +5 June, 1995 + +Confidential Information “FO® Property of Atari Corporation + +©1995 Atari Corp. + +Technical Reference + +Page 3 + +@ GPU Registers ; Peace TGPUFIagsRegstertzid || Vepaxeeeamxa [Maire[MatricControtegistor———SSSSSCSCSCSCSCSC~*~———SSSCSCSCSCSC~C~SC~SC~Adcress Register OTOL HO eENDSpe}[DataRegister|Organisation OTBzt TWOHO LecaRE GPU Program Counter epee PESREDATA [GPU[HighSST Data ControvStatusRegister Register ORE TRA | Lemar [Divideremainderunt oa LP + +Blitter Registers * Must be refreshed after a BLIT EES _ a Must be refreshed if used to store dynamic data (i.e. arinner loop réad Geeurs or GOURD or GOURZ is set). aankttivns, OE st* Older versions of the Jaguar Software:ReferenceManital (v2.2 & earlier) reversed the order of these descriptions. The equates have not chafiged, so your Sdlif6e.code should be unaffected. | TRICBASE—ABaseRegsier Sf ozzO0 — EatSrracs [Flagsopr Register fo =y RincitsAl_PIXEL [AiAi PixelCippng PointerSze2) eh. OEE zzee F0220C CePATg Pom feveeee | oe csr a **r** sepvee oe | - FeSester—[arstepFrecionvene«oz wo A2_PIXEL A2 Pixel Pointer 2225... F02230 parvaar SHEE [aeraaa epvene a SSC*deaaoeee toe Sant SiimmendStatus Regater = —SSSSSCSCSCSCSCSC~ come ——|=~Courts Register esncs |Regster———SSSCSSSSSSS~*dSource Beta Pagzc WO | rs pSTo [Destination DataRegsier SSS oz | SS "DSTZ [Destination zZ Register SON PSSRCZ —""T SoyrceZRegstert «ORS WO BS SRCID | SouisezReaiter2SCSCCSCSCSCSCS* GN S-pard |_———=SCSC~C~CS~CS~SCSCSCS*~«~ PattonBeta Register SSFNC [tenetizinetement OG [WOWo S13 intensty™ SSCCSCSC~‘“‘SC‘C~S~S~*i ORS SeST «azintensityintensty SSCS mez Ee © 1995 Atari Corp. Confidential Information “JER Property ofAtari Corporation 5 June, 1995 + +; + +Page 4 + +Technical Reference + +: + +| + +| + +Oe + +| + +' + +| + +Og + +| + +| + +5 + +] + +| + +: + +| + +## Jerry Registers + +**==> picture [502 x 142] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||| +|---|---|---|---|---| +|wo| +|PSPITI_‘| TimertPrescaler|ec|CL|TOON|EMO| +|PapIT2|| TimertDwider|20002|[wo| +|SHODE|||Sealode|SSC|SCS| +|wo}| + +**----- End of picture text -----**
+ + +## Joystick Registers + +DSP Registers + +5 June, 1995 + +Confidential Information “FER Property of Atari Corporation + +© 1995 Atari Corp. + +| | | | | | + +Page 5 Technical Reference Giaguar Video & System Clocks In the Jaguar console, the video clock is chosen to allow an inexpensive RF modulator system. This requires slightly different clock speeds for NTSC and PAL systems (but the difference is only about 0.01%). To be cost-effective, the GPU/DSP processor clock speed is the'Saitie:as the video clock speed, and the 68000 is 50% of this clock rate: i Video Clock 26.5638900.MHz “PEE GPU/DSP Clock Rate PEE ees | 68000 Clock Rate 73.295453 MHz | 13.29695 MEE: 4... Eee The video system of Jaguar is programmable within the precision of the supplied video clock. From the video clock, the system produces the pixel (or dot) clock. The ratio betweén.video and pixel clock is determined by high order bits of the VMODE register. The possible values Gr.the ratio are shown in the table below, along with the number of pixels that will,fit on screen overscanied:or non-overscanned. For both PAL.and NTSC the “safé” video area is about The numbers are the same for NTSC and PAL.” 40us wide. The area required to guarantee overscan is about SO448..,The table gives the number of pixels that can be displayed within these times for allavailable pixel claék dividers. Note that these numbers | @[ be] are[ used] not "nice"[ in][ deciding] computer[ your artwork] numbers like[and.abject] 320 or 256,[ sizes;] ‘Also,[these.] note[ numbers] that should these‘arenot simply be used rough in calculating guidelines to | values for the video hardware registers. ‘To properly inisfalize your program, including video, you must use the standardizedJaguar Startup Code described in the Jaguar Libraries section. + +Pixel Divisor vaiue Gf of pixels # of pixels for VMODE register Non-Overscanned Overscanned ae a NOR ea ee eee — eis ae se We recammend that ALLsoftware for the Jaguar console overscan both vertically and horizontally so we will restrict ourselves to the OVERSCAN column. for the restof this discussion The first row tdiviser of 1) requires that the object processor be started twice each line and produces a ridiculously highresslitionfor aT, so it will be ignored. Adivisor of 3 gives a non overscanned resolution off about 355. This is a good match for many _ ww computer systems and programs designed around 320 pixel wide screens. A divisor of four gives pixels that are about square. Square pixels are a great advantage for art creation and we recommend their use. + +© 1995 Atari Corp. + +Confidential Information “JPR Property of Atari Corporation + +26 April, 1995 + +. + +Technical Reference pixel divisor of 4. of 4. 4. gm 1 y pixel wide wide wf q 266 being visible being visible visible : : each side that side that that overscanned for PAL. PAL. This and! restricted 18 200 200 Significant, | ees change these these 4 9 ne | ( y S-Video, and and | Peritel/Scart modulator. | the same timings same timings timings f | to change these change these these | (MHz) ] A | ©1995 Atari Corp. | + +2 | + +i ' | _ + +> PageLet's look6 at the specific case of an overscanned game using square pixels. This uses a pixel divisor of 4. of 4. 4. In both NTSC and PAL this allows for about 332 pixels to be displayed. Choosing a 320 pixel wide wide bitmap gives us a <4% error. Of these 320 pixels we should only count on the middle 266 being visible being visible visible on most monitors and/or TV sets. This means that there is a border of about 27 pixels on each side that side that that may be visible, but which should not contain essential game information. _ The other pixel clock divisor that is of likely interest are is 5. In this ease the numberof overscanned pixels is usably close to a blittable width: 256. 8 EEE To overscan vertically we suggest a screen height of 240 lines for NTSE dad 288 lines for PAL. PAL. This will allow for both PAL and NTSC users to see a fully overscanned image bath. vertically and! _ horizontally. The guaranteed visible region within which facial game informationis. restricted 18 200 200 lines for NTSC and 240 lines for PAL. Using 200 lines of critical. video for both systemsis:# Significant, and acceptable, simplification. Pee ees | Ce | The information in this section is for informational purposes-only. Do not attempt to change these these timings or unpredictable results will occurl:: Te There are four versions of the Jaguar Console! io ~~ Where used[-] Video Standard j PSC USA} Canasta” __ [esUnited Kingdom ‘ PRACT [FAB | Germany tether European countries | PerteySeart = : The Jaguar console hasan external video connector which supports Composite video, S-Video, and and RGB. In addition, there 3$'an, RF Modulator oritput.on:all versions except the French Peritel/Scart : version. The Peritel/Seart version is identical to’ PAE=B, except that there is no RF modulator. | Composite video, S-Video, and:RGB. are all available on the Peritel version, and have the same timings same timings timings and characteristics of PAL-B. OPE | The various specification timings are shown below: { neAcomposte ee | The information in this section is for informational purposes only. Do not attempt to change these change these these i timings or unpredictable results will occur! —_ ~~ Chroma clock Subcarrier (MHz) Sound subcarrier (MHz) + +> {i PAL! |S 448861875 Pe s01.250 | MHZ ; PAL-B qasaei875 [591.250«| SSM + +4 + +5 June, 1995 + +ConfidentialInformation JER Property ofAtari Corporation + +Page 7 + +F Technical Reference + +4 + +j + +| The information in this section is for informational purposes only. Do not attempt to change these } timings or unpredictable results will occur! + +Parameter PAL NTS& : ee ae a eyewith us 4 ira syne wit | sus 4 48 | : ee Oe widh | aru 0260s + +**==> picture [3 x 7] intentionally omitted <==** + +**----- Start of picture text -----**
+{
**----- End of picture text -----**
+ + +© 1995 Atari Corp. + +Confidential Information ‘PPR Property ofAtari Corporation + +26 April, 1995 + +: : + +Page 8 + +Technical Reference + +. + +| + +| + +| : | : | | + +| + +; | + +q 1, + +i : + +; | + +q + +' j + +| | A detailed mechanical drawing is available on request. j | SRR aa q The external DSP connector is a custom 12-pin, two row edge connector. The top row isrow A, the j i bottom row is row B. Pin 1 is on the left, pin 6 on the right when looking at the console from the rear: , 26 April, 1995 Confidential Information “AO® Property of Atari Corporation ©1995 Atari Corp. (- + +JaguarConsoleHardwarePorts VideeConnector The external video connector is a custom 24 pin, two row edge connecigf.: “Thig:top row is row A, the bottom row is row B. Pin 1 is on the left, pin 12 on the right when lockingat thy ¢insole from the rear: + +**==> picture [430 x 315] intentionally omitted <==** + +**----- Start of picture text -----**
+—_ — —
Pin Number Name Description
Audio Left EIAd Line level, ieft, audio 25... a
Audio_Gnd Audio Return (growfidy bie
Video_Gnd Video Return (ground) io
[5A [Bue _| Blue-vid8o;'78Ohm, 0.7V peak-to-peak
Hofigental Syné,'75 ‘Ohm, 3V peak-to-peak22:“*
Audio Right | EIAj.Line level, right'audio
[3B| Audio” Gd. __| Audis: Relliny fground)
|__7B_ Video. Gnd Video Return {gteund)
S-Video 'ttima;'75 Ohm, 1V peak-to-peak
|10B)'f Video_Gnd: Video Return (ground)
118 | Composite "| Gomposte video, 75 Ohm, 1V peak-to-peak
**----- End of picture text -----**
+ + +The Reserved signals should:be left unconnected. They may be used in future versions of the Jaguar console,aad therefore shouldbe.passed through on video adaptors. It is important to terminate the active signals'correctly. Do not load the 75 Ohm outputs with more than 75 Ohms. + +Page 9 + +Technical Reference + +| | | + +**==> picture [406 x 133] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||| +|---|---|---|---|---|---| +|Pin|Number|Name|Description| +|roa| +|Synchronous|serial word strobe| +|a|«4|SCK____||Synchronous serial clock| +|4A|CT|TxD|Synchronous|serial transmit: date|(data out)| +|SA|RXD__| Synchronous serial|receiv|data (dati).| +|iB|«eV|SOmA maximum load cS|oo| +|r3B.|SSCL UARRT_RXD|Asynchronous receive dat: 5s.|“BEES| + +**----- End of picture text -----**
+ + +All the active signals have 5 volt TTL levels. The SCK, WS, TXD asd’RXD signals are also connected to the cartridge expansion connector. They are used on the'CD-ROM peripheral, therefore care must be taken to avoid contention (see the audio sub-system-section below). EB + +**==> picture [2 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+.
**----- End of picture text -----**
+ + +| + +Technical Reference + +4 + +Page 10 + +| q + +1 + +‘G@artridge/ExpansionPott a4 j Information on the Cartridge/Expansion Port of the Jaguar is available to hardware/accessory licensees. Hardware licensees should contact Atari regarding the connection of devices to this port. + +q + +26 April, 1995 + +Confidential Information “JER Property ofAtari Corporation + +©1995 AtariCorp. 2 + +Page 11 + +Technical Reference + +AS There are two types of Multi-Console games. The first type uses a special Local-Area-Network of multiple Jaguar consoles connected together via the console's asynchronous serial port. The second type uses the Jaguar modem to connect two Jaguar consoles via the telephone dHIES Zi... + +| + +| + +Ce ee, The low-level drivers required for networking multiple Jaguar consoles aré currently in developinient. Contact Jaguar Developer Support for further information... “EEEEEEB Eee ———— aT ee i¢ descritted in the section titled"Fhe:Jaguar Voice The specification for using the Jaguar modem. + +| + +© 1995 Atari Corp. + +Confidential Information JER Property ofAtari Corporation + +21 June, 1995 + +Technical Reference ‘ + +| | i + +a Al | : : + +. 7 ‘ + +| 4 ; a 2 | i | o i ® | + +1 1 J3 J4 Bi-directional signal: signal: OEE Used asoutput to specify to controlia#sivhich asoutput to specify to controlia#sivhichoutput to specify to controlia#sivhich to specify to controlia#sivhich specify to controlia#sivhich data to to return | Usédas output to'specity to controllers whief' data output to'specity to controllers whief' data to'specity to controllers whief' data to controllers whief' data whief' data data to return : J6 Bidaectional signal.!22:%.. signal.!22:%.. Usedas output to specifyte: to specifyte: specifyte:te: controllers which data to return which data to return data to return to return[[to][ controllers][ which]][[ controllers][ which]][[ which]][[data][ to]][[ to]][[return]] j Used a§ a§[[Gitput][ to][ specify]][[ to][ specify]][[ specify]] ‘ 6 BOP [82|| Bitton input tight gun gun on Port¥ Port¥¥ j +5V DC_| DC_| a8 DC_| Maximum 50mA Maximum 50mA 50mA Toad se}_nle_nle | ple | Pulled upto 4V DC on 4V DC on DC on on 4 player adaptor player adaptor adaptor P72|| 0 [| J14 [Input only signal only signal signal | pia 8 sta [ Inpatoniy signal Inpatoniy signal signal | Signals J0-J15, and BO-B3 are all TTL level digital inputs or outputs. : Controlier Port 1 also has.a light gun input in addition to the signals listed above. A 71L rising edgeon ' the LP signal (pin 6 of port1;,shared with BO) causes the light pen registers (LPH and LPV) to be + +1 | ay 2 ‘ + +| | + +Page 12 Jaguar Controllers and Controller Ports There are two controller ports on the Jaguar console: Controller Port 1 and Controller Port 2. Each has the following functions: + +**==> picture [496 x 88] intentionally omitted <==** + +**----- Start of picture text -----**
+© _ Four bi-directional digital pins _. -
e Six input only digital pins (split into 4 + 2 buttons) ce ee
Note: Early versions ofthe Jaguar console included an8 bitADC! onthe motherboard; ‘This has
been deleted - analog controllers now require their own ADC chip. 2225, an
**----- End of picture text -----**
+ + +## SignaisandPincits + +**==> picture [429 x 252] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||| +|---|---|---|---|---|---|---| +|Pin#|Port|1|Port 2|Description| +|1|J3|J4|Bi-directional signal: signal:|OEE| +|Used asoutput to specify to controlia#sivhich asoutput to specify to controlia#sivhichoutput to specify to controlia#sivhich to specify to controlia#sivhich specify to controlia#sivhich|data to to|return| +|Usédas output to'specity to controllers whief' data output to'specity to controllers whief' data to'specity to controllers whief' data to controllers whief' data whief' data data|to return| +|J6|Bidaectional signal.!22:%.. signal.!22:%..| +|Usedas|output to specifyte: to specifyte: specifyte:te:|controllers which data to return which data to return data to return to return| +|[[to][ controllers][ which]][[ controllers][ which]][[ which]]|[[data][ to]][[ to]]|[[return]]| +|Used a§ a§|[[Gitput][ to][ specify]][[ to][ specify]][[ specify]]| +|6|BOP|[82|||Bitton|input|tight gun gun|on Port¥ Port¥¥| +|+5V DC_| DC_||a8|DC_| Maximum 50mA Maximum 50mA 50mA|Toad| +|se}_nle_nle|||ple|||Pulled|upto 4V DC on 4V DC on DC on on|4 player adaptor player adaptor adaptor| +|P72|||0|[||J14|[Input only signal only signal signal| +|pia|8|sta|[ Inpatoniy signal Inpatoniy signal signal| + +**----- End of picture text -----**
+ + +1 Analog to Digital Converter — @ device that converts analog signals such as a variable voltage level into a digital format suitable for processing by a computer. 21 June, 1995 Confidential Information JPR Property ofAtari Corporation © 1995 Atari Corp. + +**==> picture [28 x 63] intentionally omitted <==** + +**----- Start of picture text -----**
+"a
f
q
**----- End of picture text -----**
+ + +Page 13 + +Technical Reference + +(QFosistor Adaressing Digitalinputs The table below shows the purpose of the individual bits of the JOYSTICK and JOYBUTS registers. Please note that some bits are used for non-controller related purposes. + +| + +**==> picture [574 x 574] intentionally omitted <==** + +**----- Start of picture text -----**
+_
JOYSTICK $F14000 Read/Write
Read fedcba98 7654321q | f-1 Signals J1§:to J 1: “SEES
Pe Prermre ees |e cetrige ec cence
Write exxxxxxm 76543210 |e i = enable “d#+J0 outputs TEE
0 = disable J7230:outputs foe
dott, care Oe ae |
™ Audio: mute oa
0 = Addig:muted (reset state)
a
13-0 33-J0 outputs (Beet. 1)
oat =
JOYBUTS $F 14002 Rend Only
Read XXXXEXEX rrdav3210 Lex don Hi Gare |
‘[ae, --Reserved. |
"gis Reserved8,
yoni.
Fi
: | ee “Hl Qs. PAL Video hardware
wo 1 = NTSC video hardware
ee o P-O. Button inputs Bl & BO (port 1)
[[Each][ controller]][[ controller]]
Allportcontroller has 4 bi-directionaldevicesportcontroller has 4 bi-directionaldevicescontroller has 4 bi-directionaldevices has 4 bi-directionaldevices 4 bi-directionaldevices bi-directionaldevicesdevices aféaddressedpins‘and'6,input throughpins. théaddressedpins‘and'6,input throughpins. thépins‘and'6,input throughpins. thé‘and'6,input throughpins. thé throughpins. thépins. thé thé [[digital:fines]] Wealways usealways use use [[ on]] the [[ the]] bi-directional [[ controller][ ports.]][[ ports.]] pins as outputs. as outputs. outputs. By |:
writing a 4-bit code 4-bit code code to! these outpats,16 rows containing 6 bits of data each can be addressed. these outpats,16 rows containing 6 bits of data each can be addressed. outpats,16 rows containing 6 bits of data each can be addressed.16 rows containing 6 bits of data each can be addressed. rows containing 6 bits of data each can be addressed. containing 6 bits of data each can be addressed. 6 bits of data each can be addressed. bits of data each can be addressed. of data each can be addressed. data each can be addressed. each can be addressed. can be addressed. be addressed. addressed. Each |
controller is allocated 4 rows of data, 'S6:tip.to allocated 4 rows of data, 'S6:tip.to 4 rows of data, 'S6:tip.to rows of data, 'S6:tip.to of data, 'S6:tip.to data, 'S6:tip.to 'S6:tip.to 4 controllers may be connected to each port (via a 4- controllers may be connected to each port (via a 4- may be connected to each port (via a 4- be connected to each port (via a 4- connected to each port (via a 4- to each port (via a 4- each port (via a 4- port (via a 4- (via a 4- a 4- 4-
player adapter)fF:a.maximum adapter)fF:a.maximumfF:a.maximummaximum of 8 contréliés.total. contréliés.total. Controllers may be connected to the Jaguar in two may be connected to the Jaguar in two be connected to the Jaguar in two connected to the Jaguar in two to the Jaguar in two the Jaguar in two Jaguar in two in two two
1) Bizectly to the controsier:port. to the controsier:port. the controsier:port. controsier:port.
2) Via amulticplayer adapto#multicplayer adapto# adapto# {usually a 4 player adaptor, or a pass-through connector on an 4 player adaptor, or a pass-through connector on an player adaptor, or a pass-through connector on an adaptor, or a pass-through connector on an or a pass-through connector on an a pass-through connector on an on an an
Advanced controllers controllers typically provide a “pass-through” “pass-through” connector to allow a standard Jaguar controller to allow a standard Jaguar controller allow a standard Jaguar controller a standard Jaguar controller standard Jaguar controller controller
wWWFWWF tosince be connected the advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity,since be connected the advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, be connected the advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, connected the advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, the advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, not have controller. as many buttonsOften this as the is standard Jaguar a necessity, have controller. as many buttonsOften this as the is standard Jaguar a necessity, controller. as many buttonsOften this as the is standard Jaguar a necessity, as many buttonsOften this as the is standard Jaguar a necessity, many buttonsOften this as the is standard Jaguar a necessity, buttonsOften this as the is standard Jaguar a necessity,Often this as the is standard Jaguar a necessity, this as the is standard Jaguar a necessity, as the is standard Jaguar a necessity, is standard Jaguar a necessity, standard Jaguar a necessity, a necessity, necessity, not a luxury, controller a luxury, controller controller |
**----- End of picture text -----**
+ + +> [[Each][ controller]][[ controller]] Allportcontroller has 4 bi-directionaldevicesportcontroller has 4 bi-directionaldevicescontroller has 4 bi-directionaldevices has 4 bi-directionaldevices 4 bi-directionaldevices bi-directionaldevicesdevices aféaddressedpins‘and'6,input throughpins. théaddressedpins‘and'6,input throughpins. thépins‘and'6,input throughpins. thé‘and'6,input throughpins. thé throughpins. thépins. thé thé[[digital:fines]] Wealways usealways use use[[ on]] the[[ the]] bi-directional[[ controller][ ports.]][[ ports.]] pins as outputs. as outputs. outputs. By writing a 4-bit code 4-bit code code to! these outpats,16 rows containing 6 bits of data each can be addressed. these outpats,16 rows containing 6 bits of data each can be addressed. outpats,16 rows containing 6 bits of data each can be addressed.16 rows containing 6 bits of data each can be addressed. rows containing 6 bits of data each can be addressed. containing 6 bits of data each can be addressed. 6 bits of data each can be addressed. bits of data each can be addressed. of data each can be addressed. data each can be addressed. each can be addressed. can be addressed. be addressed. addressed. Each controller is allocated 4 rows of data, 'S6:tip.to allocated 4 rows of data, 'S6:tip.to 4 rows of data, 'S6:tip.to rows of data, 'S6:tip.to of data, 'S6:tip.to data, 'S6:tip.to 'S6:tip.to 4 controllers may be connected to each port (via a 4- controllers may be connected to each port (via a 4- may be connected to each port (via a 4- be connected to each port (via a 4- connected to each port (via a 4- to each port (via a 4- each port (via a 4- port (via a 4- (via a 4- a 4- 4- + +> player adapter)fF:a.maximum adapter)fF:a.maximumfF:a.maximummaximum of 8 contréliés.total. contréliés.total. Controllers may be connected to the Jaguar in two may be connected to the Jaguar in two be connected to the Jaguar in two connected to the Jaguar in two to the Jaguar in two the Jaguar in two Jaguar in two in two two 1) Bizectly to the controsier:port. to the controsier:port. the controsier:port. controsier:port. 2) Via amulticplayer adapto#multicplayer adapto# adapto# {usually a 4 player adaptor, or a pass-through connector on an 4 player adaptor, or a pass-through connector on an player adaptor, or a pass-through connector on an adaptor, or a pass-through connector on an or a pass-through connector on an a pass-through connector on an on an an Advanced controllers controllers typically provide a “pass-through” “pass-through” connector to allow a standard Jaguar controller to allow a standard Jaguar controller allow a standard Jaguar controller a standard Jaguar controller standard Jaguar controller controller wWWFWWF tosince be connected the advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity,since be connected the advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, be connected the advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, connected the advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, the advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, advanced at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, at the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, the controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, controllers same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, same time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, time usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, usually as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, as the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, the do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, do advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, advanced not have controller. as many buttonsOften this as the is standard Jaguar a necessity, not have controller. as many buttonsOften this as the is standard Jaguar a necessity, have controller. as many buttonsOften this as the is standard Jaguar a necessity, controller. as many buttonsOften this as the is standard Jaguar a necessity, as many buttonsOften this as the is standard Jaguar a necessity, many buttonsOften this as the is standard Jaguar a necessity, buttonsOften this as the is standard Jaguar a necessity,Often this as the is standard Jaguar a necessity, this as the is standard Jaguar a necessity, as the is standard Jaguar a necessity, is standard Jaguar a necessity, standard Jaguar a necessity, a necessity, necessity, not a luxury, controller a luxury, controller controller (and may be missing such critical buttons as Pause). + +**==> picture [2 x 27] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +© 1995 Atari Corp. + +Confidential Information “PPR Property ofAtari Corporation + +21 June, 1995 + +% = + +j + +i Page 14 Technical Reference | ! Reading A Jaguar Controller #§# =... i iN ‘ Reading a controller is done in two steps: | | 1) Write a 4 bit code to the port’s output bits which specifies which row of controller data you want : : to read. Bits 0-3 of the JOYSTICK register contain the outputbits for'Part 1. Bits 4-7 specify : : the output bits for Port 2. Note that the codes used for port 2:afe’a mirtoriffage of the codes for ' ji port 1. (The bit order is reversed.) Bit 15 of JOYSTICK must also be set to:eablethe outputs. | j Bitaccidentally 8 is also usedor you to will controldisable audio your program’s muting, so yousound have generation... to beearful not to clear thisen bit ' 2) Read back the values contained in the JOYBUTS aid JOYSTICK registersi:.These will contain 4 the 6 data bits returned by each port. HEE EEE EB? ' ' For example, writing a value of $817E to JOYSTICK woyld allowyou'te,read row 0 of the first 7 controller connected to Port 1 and the first controller connected to Port 2::This value breaks down as: 7 $0100 = Enable Audio (bit 8 of JQ¥STICK coftzsls audio mute) © q $0070 = Setup read of row 0 (code: $01 11) of controller 0, port 2 5 $000E = Setup read of row 0 (code"$4410) of contr@tzer 0, port 1 q j $817E = value to write to JOYSTICK register ee ve : Below is a table that shows how ilie 6 bits of data for each row aré'returned by the first controller 1 z | connected on port 1 and the first Controller retaufied Of-port 2. The meaning of the bits depends on : q1 which row is being read and what type of controlleris:catinected (as defined later in the descriptions of , each controller type). ae “ TEE | i Retrei“( LULU | ; Output Pin # Input Pin # a 1 1 2 3 4 6 10 14 13 12 1 i POL 1,1 | 1 GR Cougs data | data | data | data | data | pt | On tI C20 Peedata | data | data__—| data, =| data’ S| ‘ Outjiut Pin # Input Pin # 2 @ ; 1 2 3 «4 6 10 14 13 12 1 b \ (J7) (J6) (JE) (Ue) (B2} (B3) (J12) (J13) (J14) (J15) 4 ’ | Pit iti Ose 6 6Ce | data | data | data | data | data || PotiPitoti]itt 1 EeveeBeem datasci |[datadata || data,data || datadata || data,data || datadata |e]] ] * Bit BO on Port 1 and bit B2 on Port 2 are used as a special “Bank 0” flag by bank switching controllers. ] ’ See Reading Bank Switching Controllers for more information. PI + +2 @ b 4 ’ |e]] ] ’ PI + +4 : + +q + +26 April, 1995 + +Confidential Information “FOR Property ofAtari Corporation + +© 1995 Atari Corp. + +Technical Reference + +Page 15 + +| + +| | | + +| + +| + +4 + +| + +## o identifying Controller Types + +The basic type of controller is specified by the C2, & C3 bits returned when you read the controller, as shown in the table. The currently defined controller type identifiers are: } + +MoTC2 C30 |ResenedController Type 0] 1 _| Bank switching controller. (analog joystick, head-meiifted tracker, tC): i | [1 ]_0 | Tempest" rotary controler Software should scan all possible controller positions, including those on a 4-playst:adapter, ee determine which types of controllers are currently connected.Fhe. game can then Gffer the:viser the choice of which controller(s) to use. Ee OEEEEEES Some advanced controllers use a special bank-switching technique to rettiff tore information than the 24 bits of data available from a standard controllet::Fhis makes a wide variety:G£:controller types possible, so the specific controller type is idesitefied'by certain bits in the last barik'gf data returned by each controller. ZEEE TEE Data Returned from Last Bank Row 3 Row 2 Row 1 Row 0 Bank Switching Controller Type Ss ot ee reserved To |..1t | 1 | 0 [reseweg RTE LO TF, [Keyboard/Mouse SCS a Analog Joystick or Driving Controller See the desétiptions of the individial controller types and the section Reading Bank Switching Controllersfor additional information. + +1 Please note that the specification for identifying controllers was changed on March 31, 1995. The differences are important, but fairly minor from an implementation view, and do not affect any existing hardware on the market as of that date. + +1 + +© 1995 Atari Corp. + +Confidential Information “JER Property ofAtari Corporation + +26 April, 1995 + +' Page 16 } P Below Jaguar ' : + +Technical Reference + +f ' + +‘ 4 + +4 : 1 ' i | q + +| + +i + +i + +] ] ’ | E ' { 1 + +© 1995 Atari Corp. ] + +## Standard Jaguar ControllerMatrix + +Below is a table showing the matrix for the standard joypad controller which is packed out with every Jaguar console. When plugged directly into the console, the matrix for this controller is as follows: + +**==> picture [449 x 261] intentionally omitted <==** + +**----- Start of picture text -----**
+J4 J5 J6 JZ Port2 B2 B3 J12 J13 J14 J15
J3 J2 J1 JO Portt Bo Bt J8 J9 J10 J
Row 3
pi foto yo -_
LL ee
Row 1
Row 0 own |bef Right
a zero means zero means means the appropriate Bitton is depressed... depressed... sae
**----- End of picture text -----**
+ + +Reading a zero means zero means means the appropriate Bitton is depressed... depressed... + +**==> picture [26 x 17] intentionally omitted <==** + +**----- Start of picture text -----**
+Hg
**----- End of picture text -----**
+ + +4PlayerAdaptor= isi‘ (‘CO **;** ™ ***** Cs*=é—*i The fact that 16 rowsof data can be addressed allows a 4 controller adaptor to be connected to each s console controller port {for a total of 8 controllers using:two adaptors). The 4-player adapter is a device ; which expands either ofthe'console controller:perts:tdallow up to 4 controllers to be connected. It has 3 4 controller sockets (D845 ‘females, the same as on'the console) for controllers to be connected, anda short cable with a DB15 male cénneetor which plugs into the console. . ; The contralier: sockets on the adaptor have the.6 inputs wire OR'd together. The four output lines are an 3 active low;'4 to 16detiultiplexed version ofthe 4 console outputs. & Each sé¢ket recognizes 4 unique row codes which are used to specify requests for data from that 4 controller!:'The table below shows,the row codes which must be output from the Jaguar to request data q from controllérs ‘connected to specific sockets of the adapter. Note that socket 0 uses the same row { codes as a singlé:controller connegted directly to one of the console controller ports. ; + +26 April, 1995 + +Confidential Information AR Property ofAtari Corporation + +] ' + +| | | | | + +**==> picture [533 x 407] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 17
Technical Reference ,
@ RowFrom Code Jaguar: Output Specifiescontroller whichconnected row of theto:
Portt2Portt1 J4J3 Jd5J2 JeJi J?JO SocketO Socket? Socket2 Socket 3
nS ee
Except for socket 0, the row codes shown in‘the.table are not the row, codes seen by the controllers
themselves. In order to make itself as transparenitias possible to the-¢ontrollers themselves, the adapter
_, converts the row codes for sockets 1-3 so that thosé ¢ontrollers will séé.Only socket 0 row codes. In
the code GGiGEthat says it wants to read Row1 of the
wo other words, when your program ontpuis the code to %1101 and then pass it to
controller connected to socket 2,dhe'4-player adapter wiliconvert.
socket 2. The controller connected to socket 2willshen see cede 94101, the same code you would use
to the Jaguar, and return the appropriate information.
to access a single controller connected directly
**----- End of picture text -----**
+ + +for socket 1 instead of the codes for socket 0 Advanced controllers normally respond to row S0ides. because they have a pas§-through:connector for astanidatd joypad controller, which sees socket 0 codes andplayer responds adapter,as advancedthoughit controllerswere conrieetedwilkneverdirectly tosee codes the Jaguar. for socketHowever, 1 because when the connected adapter will to convert a 4- them to socket:@:eades and then output themonly to the controller connected to socket 1. Advanced controllers need todetect the presence of a 4-player adapter and change their behaviour when one is present. Therefore,the 4-Player adapter provides a +5v DC signal on pin 8 of each socket, which is normallynot connected when controllers are plugged directly into the console. Advanced controllers are expected'to detect this signal when present, disable their pass-through connector, and then respond as socket 0 instead of:socket 1. Be To summarize these ideas: the table below shows the various socket and controller positions with and w without a 4-player adapter. (Ports 1 & 2 are identical in these respects.) + +**==> picture [1 x 29] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +© 1995 Atari Corp. + +Confidential Information JER Property ofAtari Corporation + +26 April, 1995 + +i ] : ’ i ’ i : : j q 4 7 a { : 1 ' 4 | | !1 : : ’ ] : ' | ] : q + +Page 18 + +**==> picture [541 x 729] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 18 Technical Reference j ‘
Controller Port With 4-Player Adapter =~
Adapter converts row codes sent by Jaguar program and routes them to the appropriate socket. Socket 0 is 4
the same as a controller plugged directly into port. Standard and Advanced controllers respond only to socket '
0 row codes. Pass-through connectors of advanced controllers are disabled. -
Controller Port Without 4-Player Adapter . 3
Standard controller plugged directly into port is the same as socket 0 of a 4-player adapter. Advanced Ss
controllers plugged directly into port respond to Socket 1 row codes. Pass-through connectors of advanced a
controllers are enabled, and addressed as socket 0. ne SEE =
Because there are 4 row codes allocated to each socket, the.4-player adaptor there are 4 row codes allocated to each socket, the.4-player adaptor 4 row codes allocated to each socket, the.4-player adaptor row codes allocated to each socket, the.4-player adaptor codes allocated to each socket, the.4-player adaptor allocated to each socket, the.4-player adaptor to each socket, the.4-player adaptor each socket, the.4-player adaptor socket, the.4-player adaptor the.4-player adaptor adaptor wilkionly support support 4 tow gg
controller devices. Without additional logic, each input supportsup supportsupup to 24 24 bits of [[dita'{4]] rows of 6 bits). gs
Three bits are reserved bits are reserved are reserved reserved for the controller type identifier code; the controller type identifier code; controller type identifier code; type identifier code; identifier code; code; iéaving 21 21 bits for for data 22222" |
Intelligent controllers controllers (i.e. ones which use a microcontroller), ones which use a microcontroller), which use a microcontroller), use a microcontroller), a microcontroller), microcontroller), can multipiex-even more data onto the multipiex-even more data onto the more data onto the data onto the onto the the 7
same lines. lines. One way this can be done can be done be done done is for for themicrocontroller tomicrocontroller to to “Bank’switch” whenever it sees a sees a
transition from row 3 back to row 0. from row 3 back to row 0. row 3 back to row 0. 3 back to row 0. back to row 0. to row 0. row 0. 0. Different bits'6{ data are presented in presented in in each:bank.bank. See the section the section section i
Reading Bank Switching Controllers Bank Switching Controllers Switching Controllers Controllers later:j# this chapterfor, more information. this chapterfor, more information. chapterfor, more information.for, more information. more information. information. © ‘
Detecting the 4 Player Player Adapter & & Conticeted Controliets
To detect the presence of a 4-Player-adapter, a program:should inquire the status of Row 1 of controller fie
socket #3. If a 4-Player adapter.J§ present, the BO/B2bit:willbe cleat (0). Otherwise, it will be set (1). :
The pseudocode below demonsifates the basic technigite for detecting a 4 player adapter and the a
controllers connected to it, as wella any advanced controllers connected directly to the Jaguar: s
if PORT:SOCKEf3#C1 = 0 then { 4-player adapter found } g
PORT : SOCKET{CONTROLLERTYPE
if PORM:SOCKET£CONTROLLERTYPE“HORT= BANK-SWITCHING: SOCKET :C2/C3 then s=
“PORT: SOCKETS: BANKSWITCHTYPE = DETECT BANK_SWITCH_ TYPE |
eae Oot os :
i Best SOCKET EE S
else ee Oe &
228 PORT: SOCKETQ#CONTROLLERTYPE = STANDARD &
‘aaa. Uf PORT:SOCKEPTI::C2/C3 = ROTARY then a
“EUs. PORT: SOCKE@1::CONTROLLLERTYPE = ROTARY PS
“iglge if PORT:SOCKET1:C2/C3 = BANK-SWITCHING then 2
“EEE PORT: SOCKET: BANKSWITCHTYPE = DETECT _BANK_SWITCH_ TYPE : :
next endifPORT SeONEEEEEE EE . gEE
FUNCTION DETECBANK SWITCH_ T YPE i}Rr:
po
READ ROWS 0, 1, 2, 3
UNTIL ROW0:B0/B2 = 0 {bank 0} :
BANKCOUNT = 0 :
26 April, 1995 Confidential Information FER Property ofAtari Corporation © 1995 Atari Corp. ]
**----- End of picture text -----**
+ + +Because there are 4 row codes allocated to each socket, the.4-player adaptor there are 4 row codes allocated to each socket, the.4-player adaptor 4 row codes allocated to each socket, the.4-player adaptor row codes allocated to each socket, the.4-player adaptor codes allocated to each socket, the.4-player adaptor allocated to each socket, the.4-player adaptor to each socket, the.4-player adaptor each socket, the.4-player adaptor socket, the.4-player adaptor the.4-player adaptor adaptor wilkionly support support 4 tow controller devices. Without additional logic, each input supportsup supportsupup to 24 24 bits of[[dita'{4]] rows of 6 bits). Three bits are reserved bits are reserved are reserved reserved for the controller type identifier code; the controller type identifier code; controller type identifier code; type identifier code; identifier code; code; iéaving 21 21 bits for for data 22222" + +Intelligent controllers controllers (i.e. ones which use a microcontroller), ones which use a microcontroller), which use a microcontroller), use a microcontroller), a microcontroller), microcontroller), can multipiex-even more data onto the multipiex-even more data onto the more data onto the data onto the onto the the same lines. lines. One way this can be done can be done be done done is for for themicrocontroller tomicrocontroller to to “Bank’switch” whenever it sees a sees a transition from row 3 back to row 0. from row 3 back to row 0. row 3 back to row 0. 3 back to row 0. back to row 0. to row 0. row 0. 0. Different bits'6{ data are presented in presented in in each:bank.bank. See the section the section section Reading Bank Switching Controllers Bank Switching Controllers Switching Controllers Controllers later:j# this chapterfor, more information. this chapterfor, more information. chapterfor, more information.for, more information. more information. information. © + +## Detecting the 4 Player Player Adapter & & Conticeted Controliets + +| | | | + +Page 19 + +| : j| + +## Technical Reference + +**==> picture [7 x 14] intentionally omitted <==** + +**----- Start of picture text -----**
+i
,
**----- End of picture text -----**
+ + +50 READ ROWS 0, 1, 2, 3 SAVE ROWDATA( BANKCOUNT ) BANKCOUNT = BANKCOUNT + 1 UNTIL ROWO:B0/B2 = 0 {bank 0} return ROWDATA(BANKCOUNT — 1) sROWSO-3:B1/B3 + +**==> picture [21 x 21] intentionally omitted <==** + +**----- Start of picture text -----**
+oo.
**----- End of picture text -----**
+ + +The JOYSTICK and JOYBUTS registers return the same data in the same bits:regardless of which socket is being read. However, be aware that without a 4-player adapter, reading sockets 1-3 of-4 port[ingorreet][data,] may return an ‘echo’ of the standard joypad controller at soeket:0...[To][ avoid][ reading] unless your program has detected that an advanced controller:oF'& 4eplayer adapter is conmiected, it should not try to read from sockets 1-3 (except for the detection. phasé:whenOEE the program is trying to detect what is connected). + +© 1995 Atari Corp. + +Confidential Information “JR Property ofAtari Corporation + +26 April, 1995 + +‘ + +: | | : q + +j J Ji + +**==> picture [596 x 462] intentionally omitted <==** + +**----- Start of picture text -----**
+‘ Page 20 Technical Reference 4
| AdvancedControllersg§.§ ###§.+=ssss—ii—i—i_i_ aR UU
eee|rrrss—twQQQ.CU__itC(ND.CUCi(‘(i‘iyN.COOCOSMC
These controllers support 6 degrees of freedom: Pitch, Yaw, Roll, X, Yabo Zi: We refer to Pitch as Z :
j Torque, Yaw as X Torque and Roll as Y Torque. Hence we have 6 values -"X):¥; Z:and TX, TY and 4
’ TZ. We also define 7 buttons, A-G. Bae OHEEEEEE 4
: Three banks of data are required, since we define 55 bits of information: 8-bit values for each Of 6 '
degrees of freedom (8*6=48 bits of information), plus 7 buttons: eee ee 4
| Bank B2 B3 2.~«A 14S eee &
| oO BO B1 J8 Jo J10 Ji; fd a
' Row3 ee MCE CO FC ee 4
: Row2 ee CH DO Ee i :
1 Roweee 0 (Cammcy) | RIT8 |Eeevo |eevi_| Yai.) Ys :4
| Bank B2 B30 I2—t*« J14 S15 '
j 1 Bo Bi J8 J3 J10 J11
Row 2 ~
| RowS G0 SS eC RC ee
Row 0 |
1 Bank B2 B3 J12 J13 J14 J15
q 2 BO Bi Jé J9 J10 J14
Row 2
: Row1 ND) E
‘ Row 0 a
**----- End of picture text -----**
+ + +* Bit BO/B2 of row Gis used t8 synchronise the cycle of banks. It will always be zero in bank 0, while all other banks will return 1. Banks: Wwit:cycle in the order Bank 0, Bank 1, Bank 2, Bank 0, etc. See Reading.Bank Switching Controllers:for more information. + +**==> picture [500 x 136] intentionally omitted <==** + +**----- Start of picture text -----**
+- The C3 and G2 its:identify the basic controller type. The B1/B3 bits of the last bank of the controller are
used to identify the: specific bank switching controller type.
. Value Meaning
oo X(730)
“LETS EMEF0) | X axis, anticlockwise rotation torque
TY (7:0) Y axis, anticlockwise rotation torque
TZ(7:0) Z axis, anticlockwise rotation torque
**----- End of picture text -----**
+ + +=. + +q + +26 April, 1995 + +Confidential Information “AO® Property ofAtari Corporation + +©1995 Atari Corp. | + +Page 21 + +| + +Technical Reference + +|| + +| + +| 1 + +\W@ + +| + +| + +4 + +**==> picture [15 x 8] intentionally omitted <==** + +**----- Start of picture text -----**
+wr
**----- End of picture text -----**
+ + ++TY X is positive right to left He ee Z is positive coming BACK (towards the user) £22 OEE Torques are all positive in the COUNTER-CLOCEWISE direction, when facing the positive direction shown by the arrows above. i OEE When connected directly to a Jaguar controlleg port, the controle sill respond to socket 1 row codes (see 4-Player Adaptor). A pass-through connector allows a seconde controller to be connected (usually \W@ a standard Jaguarappear as if it was Controller, directly connected for compatibility9 the:Jaguar. reasons),“‘When-connectedwhich will régeive {Ga 4-player socket 0 adaptor, row codesthe pass- and through connector will not function, and the controller Will fespond:tsy socket 0 row codes. + +## mmm Ko oo Soe These devices provide thie angular values, according torthe orientation of the user's head. + +**==> picture [20 x 23] intentionally omitted <==** + +**----- Start of picture text -----**
+w
**----- End of picture text -----**
+ + +**==> picture [489 x 232] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||| +|---|---|---|---|---|---|---|---|---|---| +|Bank|WE|B3tid2—<“‘«~‘|iA|J14|J15| +|O|8|BO|B1|J8|J9|J10|J11| +|Row 3|CoGGa|amALS|||td| +|[tam|B3|J12|J13|J14|J15| +|How 3|wreee|om)|tp|tt| +|Row 2|Pecos|i=|||Ae|||Aw|Azo|||AZ?| +|Row:|Geae|Cia7a|ava|[Avs|[Ave|TAY?| +|Row 0|i|TYAS|||ANB|AG|AKT| +|*|Bit BO/B2 of row|0|is used to synchronise the cycle of banks.|It will always be zero in bank 0, while|all| +|other banks will return|1.|Banks|will cycle|in the order Bank 0, Bank|1, Bank 2, Bank 0,|etc.|See| +|Reading Bank Switching|Controllers for more information.| + +**----- End of picture text -----**
+ + +; + +© 1995 Atari Corp. + +Confidential Information PPR Property ofAtari Corporation + +26 April, 1995 + +4 Page 22 Technical Reference q -* The C3 and C2 bits identify the basic controller type. The B1/B3 bits of the last bank of the controller are ” ] used to identify the specific bank switching controller type. i) q Value Meaning 4 AX(7:0) _| Rotation angle around x (=roll=head tilted) axis ' AY (7:0) Rotation angle around y (=yaw=looking left/right) axis AZ(7:0) Rotation angle around z (=pitch=looking:apydownyaxis ' Zero is facing straight ahead. Positive values are tilt leftlook left/Idok up. Values are Hiigar angle | 1 values, where +180 degrees = $7F, -179 degrees = $80. on OEE ‘ When connected directly to a Jaguar controller port, the controller will responid:to socket 1 row godes . ' (see 4-Player Adaptor). A pass-through connector allows a:second controller te: be:-connected (usually 1| a standard Jaguar Controller, for compatibility reasons), whichsill receive socket O:nawigsdss'and q appear as if it was directly connected to the Jaguar. When connected:toa 4-player adaptor, the passthrough connector will not function, and the controller wilf ¥espond t¢:séicket 0 row codes. Rotary “Tempest’ Controller = OS | This device is similar to the original Tempest aécade controller.’ if tises a two phase optical switch, | which can be read by software to determine thedirection of rotations: S 4 B2 B3 J12 J13 J14 J15 , Row Bo Bi J8 J9 J10 J11 = Row 3 Ue ee a : 2 EC Ms a ee ee : | Row 0 I i i aa Te ee | The phase signals (Phas¢ 0:and Phase 1) specify:which'direction the rotary wheel is turning. They look | like this when the wheel #s'tuittiing anticlockwise!!!" [ : Phase O 8) 2. EE | Phase 1 “gy | — : Anticlockwise sequenicé| J10°(pin12) 0110011 | S11 (pind) 0011001... 1 Clockwise sequence J11J10 (pindl)(pinl2 0110011...0011001 | ;: 26 April, 1995 Confidential Information FUR Property ofAtari Corporation © 1995 Atari Corp. ; = + +: | ; + +| 7 + +Page 23 + +Technical Reference + +| | | | | | | | | 4 : | q + +; + +w + +1D src connected directly to a Jaguar controller port, the controller will respond to socket 1 row codes p (see 4-Player Adaptor). A pass-through connector allows a second controller to be connected (usually j a standard Jaguar Controller, for compatibility reasons), which will receive socket 0 row codes and j appear as if it was directly connected to the Jaguar. When connected to a 4-player adaptor, the pass: through connector will not function, and the controller will respond to sockét0:raw codes. + +| Analog Uoystick and “Driving” Controllers ee } These devices typically require 8 bits of analog resolution in 2 dimensions (X 46d _Y). Two 100Kohm 4 linear potentiometers are typically used, with a +5volt potefitial across the ends:::Fhe-center wiper will F then read a voltage between OV and +5V. HEB CEE ee To read this voltage requires an analog to digital converter ADC). A goud solution is to use the Motorola 68HCOSP9 microcontroller. This part has four 8 bit ADC chantils;:and 16 general purpose digital I/O lines. The four controller row outputs:would:.be used to select one'af:fgur 6 bit addresses. The two 8 bit ADC values use 16 addresses, leaving roam for.5 switches and 3 déviée identifier codes. + +In the example below, we have used bank switching to support €¥és:more switches. The bank is switched when the 68HCOS sees a transition from: Row 3 to Row 0:Bank identification is achieved by ___ 1 @ reading bits BO/B2 of Row 0. See Reading Bank'Switching Controllérs,for more information. aor _e Bs rr ar _ | 0 Bo B1 J8 Jg J10 J11 Mic) Te xm | xe | xe [xm + +**==> picture [506 x 180] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||| +|---|---|---|---|---|---|---| +|Bank|MED|B30tit2s—=“‘<«é‘é«é|A|J14|J15| +|1|Je|B1|J8|J9|J10|J11| +|Row| +|3|ze|a|an|a|A| +|Row2|[ugar iebe Gs| +|*|Bit 80/B2 of row )is|tigséito|synchronise the cycle of banks.|It will always be zero in bank 0, while all| +|othigt:banks will return 12:Baaks will cycle in the order Bank 0, Bank|1, Bank 2, Bank 0,|etc.|See| +|Readifig: Bank Switching|Controllers for more information.| +|“*|The C3 and:62|bits, identity the|basic controller type.|The B1/B3 bits of the last bank of the controller are| +|used to identthe|spee|i|fie!fybank|switching|controller type.| + +**----- End of picture text -----**
+ + +“* + +: + +© 1995 Atari Corp. + +Confidential Information JPR Property ofAtari Corporation + +26 April, 1995 + +j 1 q : : 1 1| ; : : q + +Page 24 Technical Reference : “Stick” Controller “Driving” Controller S f X(7:0) [Ee Steering. yi 4 Right = Positive delta values from centered Right = Positive delta values from centered 3 position. position. ; Left = Negative delta values from centered Left = Negative.de#a values from centered 5 position. position. 222sene EON Pitch. AcceleratatiBrake TE Fs. } Forward = Positive delta values from centered Acceleraté = Positive delta valuiss from | position. centered posifign... wee : Back = Negative delta values from centered Brake = Negative daltdvalues from cefitéred } j position. ‘pasition. DEES. une 5 Down . Right i |D :The range of possible X and Y values is 0-255; Buit-not all controllers ill use this entire range, and the 4 1| rangethe center,they harddo useright,is notand pre-defined. hard leftposition:Do not assufti¢'Analog devices.that certainare constadiffere **nt** valuesfrom control can a **l** erways beto controller, used for (ffs | and even from day to day as tenjperatureand humidity conditionseHange. For example, a driving j 1 controllerhard left). mayA different return values controllerdfthe of160 (steeringsame typewhee#¢entered), 245°(turnedfront tie.same company hard(or the right), same and controller 75 (turnedunder q different temperature and/or humidity conditions) may réttith values of 150 (center), 240 (hard right), | a 1 and 55 (hard left). The center position is different, and thé Value ranges are also different. Your | software needs to be ablgto account for this. . 9g : | It will be necessary to provide sine sort of calibration routine where your program will ask the user to ; 4j move the controller to:¢értain positions,inorder to read the values at those positions?. This should be ig ' an option on your controller configuratioriscreen. It would also be nice if the user could choose to 1 recalibrate.thestored thé current’Géittrolleréalibéation while pauvalue **s** edinto in **the** cattridge thiddle of EEPROM. a game. It wouldThat way, be anotherif the user niceis touchusing ifthe yousame ; : controllgg under the sam basic conditions most of the time, they won’t be forced to recalibrate each : ' Analog contrelieis. require a certain amount of processing time from the time the row code is written to | the JOYSTICK ‘register until the data read back from the JOYSTICK or JOYBUTS registers will be = ' valid.about 40With microseconds) a typical‘analés-controiler, when'going fromthis row delayto row is normally aboutwithin the same bank 25 microseconds(this delay (worseapplies caseto all is = \ Vi q 2 If you’ve ever played a game on a PC that uses an analog joystick, then you’ve probably seen examples of such . ; i calibration screens. i 1 26 April, 1995 Confidential Information 7 0 N Property ofAtari Corporation © 1995 Atari Corp. - + +> | Page 25 + +| | | | | | ] ; { ! q { | . { | 4 + +Technical Reference T) bank-switching controllers), and approximately 200 microseconds in between banks.4 There are two ; S" ways to handle this. You can do a small delay loop while waiting for the data to be available (do this in t a way that uses the bus as little as possible, i.e. avoid memory accesses). Or if your program has a timer interrupt of some kind, you could write out the row code on one interrupt, and then wait for another interrupt before reading the value back. You could also use GPU interrupts in a similar way. Whichever way you choose, try to avoid wasting CPU time and bus bandwidthjust waiting to read the controller(s) when there is other processing you could be doing. a ee | When connected directly to a Jaguar controller port, the controller will:tespond to socket Etow codes (see 4-Player Adaptor). A pass-through connector allows a second céigttaller to be connected fusually a standard Jaguar Controller, for compatibility reasons), which will receive'seeket 0 row codes:atid appear as if it was directly connected to the Jaguar. When.gennected to a 4-playeriadaptor, the. fassthrough connector will not function, and the controller will tespond to socket 0 rOW Codes ...385 and is subject to Note: The specification for this controller type is stilt in the preliminary stages change without notice. Contact Jaguar Developer Support for further information ifyour project + +One subject that has been discussed a number of times throughout this section is bank switching, a technique which allows.a controller to return more information that would otherwise be possible with a + +| Bank switching is done:aistomatically when the contraller sees a transition from row 3 to row 0 (of the , same controller socket):It is not‘possible to read only a particular bank or set of banks and ignore the other ones; you must always read all banks:even if you don’t really need all of theinformation. Programs must always read an entire bank'fromn-a controller at once. However, it is not required that you read all banks from a:single controller in @’single pass. It is acceptable to read a bank from one controller, followed by ‘4batik.or multiple banks from other controller, and then come back to read the next bank fom the first coritraller. Controllers are expected to ignore any requests for rows on other controllers:::Stich requests must not.cause the controller to lose synchonization or perform any bank The rows of each bank of @ eoptrotler must be read in sequence: Row 0, Row 1, Row 2, Row 3. The controller relies on the rows being read in sequence so that it can start processing the data for the next wo row in advance. The results of reading rows out of sequence are undefined; the data returned by the ee 4 These numbers were arrived at using a sample prototype analog driving controller using the Motorola 68HC05 © 1995microcontroller.Atari Corp. Confidential Information “JPR Property of Atari Corporation 21 June, June, 1995 + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +21 June, June, 1995 + +| Page 26 q ‘ | Bank 0: 1 Bank | It is not necessary L banks of a controller ' Bank00 1 if you you were reading a driving controller, : + +Technical Reference + +} . 4 i | ' | . & | : S q ? Hi &a ; ij 2 a s2 =: ; =. : 3 + +j + +controller may be invalid. For example, your program would read data from an analog joystick controller like this: + +| Bank 0: Row 0, Row 1, Row 2, Row 3, 1 (controller will automatically bank switch here) Bank 1: Row 0, Row 1, Row 2, Row 3. . oe | It is not necessary to know in advance which bank is active when you start reading.” If You read all L banks of a controller into a table, you can Jook at the data afterwards‘ figure out wheré:thé:data for ' Bank00 is, and from there you can figure out where the data for the otfer:banks must be. Féféxample, 1 if you you were reading a driving controller, the data you read would end up if:4 table that looks lik¢:this: : BankO ) _ 1 Bank 1 The bottom row of the table would be an array of WORD values read from the JOYSTICK and JOYBUTS registers. You could store these values 'ittte. separate arrays #fyou prefer, and it is not : necessaryexample assumesto read both you theare always'teading JOYSTICK registerbesh registers and the JO¥BUTSaridStoring registerall tlke forresults each row,into a single but thistable for In this example, Bank 0 came first: but that won't always beithe case. You need to examine the data in ] the table to determine the location of each bank of data. Bark switching controllers always indicate 1 thetheBank JOYBUTS0 by setting register bit-{B0from ofRow controller0. Theportbit willbe.0:for1) or bit 2 (B2:ofBank controller0 and 1 portfor all 2) other of the banks. value readBecause from ; to findbanksthe aredat **a** lwaysfor all read'jn's¢quie fe otherba **n** ce,ks:once you fitid'Bank 0 in the table, then you know where where | In the examplé:above, because bit 0 of word J:was clear (assuming controller port 0), then you would : knowBank that thedata:forBank 0 was in words 6:7: Since we only have two banks, that means the datafor 1fist be in words:B#15. 4 Suppose you'had a6D Controtiér,:which has 3 different banks of information, connected to port 0. q After reading3 banks’ worth of information from this controller, you might end up with a buffer that + +**==> picture [24 x 17] intentionally omitted <==** + +**----- Start of picture text -----**
+Jn
**----- End of picture text -----**
+ + +21 June, 1995 + +Confidential Information “FPR Property of Atari Corporation + +©1995 Atari Corp. + +Page 27 + +: | + +Technical Reference + +| | | | | | + +Bank 2 Bank 0 ; Bank 1 || Thewordfirst 9. thingIn this you example, need to word do is 9 find the would have data bit for 0 Bank clear 0. to indicateFirst yeu wouldBank 0. lookTherefore, at bit 0@E-wordwords 8-151, then : contain the data for Bank 0. Once you know that, then youalso know that.Bank 1 is contained in “ oo q words 16-23 and Bank 2 must be in words 0-7. time reguited when switching freig-one row to the ‘ Note that there is a certain amount of processifig 4 next, because the microcontroller inside the gonitroller has i6pula.different set of data on the outputs. 1 This is normally approximately 25 microsecésids (worse case is‘about[40][ microseconds)][ when][ going] from row to row within the same bank. Analog:¢éntrollers typically:also require an additional 200 {so that the analdg:inputs may be digitized). See WW@ microsecondsine Analog Joystick when going And Driving-Controllers from one bank to the sectiénnexé ft-ideas about baw to deal with this. + +a © 1995 Atari Corp. + +Confidential Information FER Property ofAtari Corporation + +21 June, 1995 + +| + +Page 28 + +Technical Reference + +| . | ‘ . a : |g 2 3 | 3 2 E 4 | & 4a | b = + +| j | + +| + +1 q . | | j + +© 1995 Atari Corp. | + +**==> picture [415 x 197] intentionally omitted <==** + +**----- Start of picture text -----**
+Video RF
Mute Control Modulator
Clocks Stereo |gtaoe
Jerry PL Mute |_| audio | Be “Se
TX Data pac fe Fagre
RX Data -— = oo. | DSP Part
Expansion/Cartridge Port HEE
**----- End of picture text -----**
+ + +The Jaguar console includes a stereo 16 bit aiidio subsystetii:. Digital audio data Cai only be sourced from the Jerry DSP. This data can also be mi@nitored at the"éxpansion or DSP ports, on the TXD seriai data line. Jerry can also read serial digital audia.data on its RX pin.. The bit clock and word strobe signals can be sourced by Jerry, the expansion ‘pért:or the DSP port::'Hfthe clock source is not Jerry, then software must force the Jerry clock lines tristate;[by][clearing][bit][ 0:0f][ SMODE.] The Audio mute function has bees added to: allow non-audid:daia:te'be transmitted by Jerry, without making a horrible noise on the audio outputs.:: Whes'serial peripherals are connected to the DSP port, and are in use, the audio shouldbé muted bywritingzero to bit 8 of the JOY1 joystick register ($F14000). Take great care not toéause the'J4-J7 outputs#6. all go low (by writingaltobit15andOto bits 4-7 in the same register). This will inadvertantly cause multi-player adaptors to go into extended + +| + +21 June, 1995 + +Confidential Information “FO®% Property of Atari Corporation + +Page 29 + +| | | : | \ | : | | | ' | | 1 | g ' + +| ’ Technical Reference |Gms” | The Jaguar console cartridge port supports up to 6 Megabytes of address space. Cartridges can be 8, 16 ' or 32 bits wide. Special support is also included for serial EEPROMS. Reading and writing the EEPROM must be done through the Atari supplied routines. (See the sampke:program for accessing NVRAM.) This is the only way to ensure reliable operation. Ee ee Bit 0 of the JOYSTICK register, when read, represents the data output Bit of the EEPROM. ‘and not the JO input from the joystick. Since JO has always been used as an output only. so far, this should hot cause atid fot equal to the JG output | problems. But bear in mind that this data bit is now random when read, It should be noted that the EEPROM uses addresses in the GPIO0 and GPIO1 range (SFE4800" $F15FFF). Any inadvertent acccss (reads or writes) to these address tanges will cause subsequent EEPROM reads and writes to fail. So dont do it ... mee Oe = When you build your own 32-bit test cartridges Hsing Alaris 4-clip EPROM carindge blanks, the ordering of data in the chips is as follows: Be OEE Chip Bytes Bits in 32-bit long[$800007,][ ‘8800008,][ ete.] —@Y F-Ui[|][ $800003,] Us YU4|| **$8** G900 **00** 70 **,** $S **80000** 54 **, $800008,** eteSiC **.** gisee 4d24-d31) In a non-encrypted test cartridge, Jogations $800000 to $801 FFF should have values of $FF. Your[cartridges.] program code should always start at$802000:[in][ both][ enctypied][ and][ non-encrypted] Burning Your Own Cartridge EPROMS | For those wanting to usé an EPROM biirner to create their own non-encrypted test cartridges, any EPROM burner capable of handling 4megabit EPROM chips should be acceptable. If you would like a specific recommendation for a particular EPROM burner, Atari has had good success with the Pilot EPROM, Burner, manufactured by Advin. This burner is relatively fast, and can handle ait-¢fitire set of EPROM chips at once. The table below shows the mode] numbers, a description, and the price f:the base unit andiaceessories: a Price Model Description Pilot 882D | Base unit plas ‘Gang Faceplate 832D for up to DIL-32 Pin | $1 510.00 EPROM / 4 megabit (includes base unit and software) . w Pilot 844D Replacement Gang Faceplate for up to DIL-44 Pin $1095.00 Ss EPROM / 16 megabit (upgrades Pilot 832D to Pilot 64D) ae 5 At this time, the Stubulator ROM used in development machines currently only supports the use of 32-bit wide cartridges. © 1995 Atari Corp. Confidential Information PPR Property of Atari Corporation 21 June, 1995 + +| 1 ‘ ' i ' 4 | : + +® a " dy: : ‘ . + +| : | ' 2 & i 3 | & + +| : F 7 . : ‘ Cd g. & : ' - bg = Po LY) + +fo ; 1 + +| ' : | : ' j + +1 : + +Page 30 Technical Reference Pilot 844D Base unit plus Gang Faceplate 844D for up to DIL-44 Pin | $1795.00 complete EPROM / 16 megabit _ | (including base unit and software) package (Note: this unit does not include the 832D faceplace, and CANNOT handle 32 Pin EPROMs !!) + +Technical Reference + +This burner can burn a 4 megabit EPROM in approximately 3:08 minutes, or a 16 megabit EPROM in under 15 minutes. ee + +Please note that all prices shown are based on the latest information Gbtained by Atari; andiare subject to change without notice. These EPROM burners are not available directly'from Atari. Pleasé Sentact Advin to inquire about purchasing these products. To contact Advin from: North America: EEE, + +1050-L East Duane Ave. Technical questions: asxfde-Edwin “Ee Sunnyvale CA 94086 Sales information: ask forSvsan —_—s + +Advin’s USA office can handie out of countey: delivery if nétessary, but they may fave a local distributor. The distributor in England is (16Sbtain information about distributors for other countries in Europe, please contact Advin): ecm WEEE Quarndon Electronics Ltd. tiie, EEE TE Derby DE3 3ED se “Ese + +-«[EPROMs'ForMgkingTestCarttidges] The following EPROM[iypesfiave-been][successfully] used in Atari’s test department: For a 4x4 EPROM cartridge with 128 byi¢-EEPROM, a cartridge uses (4) 512kBit x 8 (4 megabit) chips. Be. EEE o Manufacturer Chip Code . | HE TC574000AD-120 or TC574000AD-150 “lee: AMD <2] AM27C040-150DC + +For 2 16x2 EPROMcartfidgewith 128 Byte EEPROM, a cartridge uses a single 1024kBit x 16 (16 megabit) chip: ceed . + +Manufacturer Chip Code 705716200 (Atari is currently looking for compatible parts) + +**==> picture [3 x 21] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +21 June, 1995 + +Confidential Information FER Property ofAtari Corporation + +© 1995 Atari Corp. + +Page 31 + +| || + +] + +F ‘Technical Reference ‘a Chips with access speeds slower those shown above are not recommended. Similar chips from other Py manufacturers may work, but have not been tested by Atari. Try them at your own risk. However, if fF — you do find other chips that work, please contact Atari’s Developer Support department and let them | know so that they can be added to the list. : + +© 1995 Atari Corp. + +Confidential Information JER Property ofAtari Corporation + +21 June, 1995 + diff --git a/docs/atari-jaguar-1999/05 - Hardware Bugs & Warnings.md b/docs/atari-jaguar-1999/05 - Hardware Bugs & Warnings.md new file mode 100644 index 00000000..a5b9c569 --- /dev/null +++ b/docs/atari-jaguar-1999/05 - Hardware Bugs & Warnings.md @@ -0,0 +1,106 @@ +Hardware Bugs & Warnings WHardware Bugs & Warnings The following sections describe known bugs in the operation of the Jaguar hardware. Side-effects of these bugs should not be relied on, as they may be fixed in future versions of the hardware. + +**==> picture [28 x 20] intentionally omitted <==** + +**----- Start of picture text -----**
+Pagel
**----- End of picture text -----**
+ + +1) The scoreboard mechanism does not work on Although this code doesn't make much sense, it the data of any indexed store instruction. This might appear at the end of a loop as shown below: means that any indexed store instruction that stores data from a long latency operation (such as a diloop: vide or external load) should place an ‘or instrucjr EO, loop tion prior to the store. For example: div r2,r4 div r0,xr3 SUTRERERTTTETTT TET TE TET TTT TERT Tai aaae store r3,(rl4+6) Any number of instructions could ; appear here. Unless one of them reads should be written as:; >; R4,unreliable.the result of the MOVEQ will be SELGRERERTTATRTT TTT ETE T TTT TTT aaa ae + +div r0,r3 (yy) orstore **r3,** r3(r14+6) moveq #4,r4 In this case, when the loop condition fails, the 2) In any instruction where the destination register DIV/MOVEQ instruction sequence will occur and is written to without being read, the destination register R4 will be corrupted. This can be register will not be protected by the scoreboarding prevented by causing the destination register to be mechanism of the GPU/DSP. This includes MTOI, read prior to the move as is shown in the following NORMI, RESMAC, all MOVE variations, and all example: LOAD variations. loop: + +If one of these destination write-only instructions ir EQ, loop writes to the same destination register as a prior div r2,r4 instruction and there have been no intervening reads from that register, it is possible for the or r4,r4 second instruction to complete before (or moveq #4, r4 simultaneously with) the first, causing the register PI hat th . to become corrupt. This bug only becomes a . she note that t anne illustrate one parproblem when doing ‘dummy’ instructions as whi i sequence ( 17M Q). Any instruction shown in the following example: w ic writes to a register followed later in the instruction stream by a ‘destination write-only’ div r2,xr4 ; Divide starts instruction with no intervening reads of that ; (takes 18 ticks) register is unreliable. Ww moveq #4,x4 ; Move completes ; before divide In practice,: this. creates two cases. If- a DIV or LOAD instruction is used to write to a register, a read of that register must be inserted prior to any + +26 April, 1995 + +© 1994 Atari Corp. + +Confidential Information PO® Property of Atari Corporation + +Page 2 Hardware Bugs & Warnings ‘destination write-only' instruction that writes to 6) The DSP and the GPU must not be stopped by — am the same register. an external processor writing directly to the Hs . In addition, any instruction which writes its result D_CTRLshould turnor off G_CTRL the GPU,registers.and onlyOnlythe DSPthe GPU should into a register and is immediately followed by a turn off the DSP. ‘destination write-only' instruction which writes to the same register wil] also corrupt the register. If one processor wants to shut down another one, This effect is shown in the example below: the best way is to ask them to do it to themselves. For example, place a special code into a loop: semaphore and then cause an interrupt for the 5r ° EQ, loop processor you want to shut down. The interrupt add r10,r12 handler would see the semaphore and shut down moveq #1,rl2 ; ADD will trash this the processor itself. You should also note that a ‘dummy’ instruction | sequence, as shown above, is rare. In normal 7) The DSP must not do an external write unless it program code where the result of a register write is 3S preceded by an external read that will complete used, the bug does not occur. This is illustrated in __ for the write starts. This problem is intermittent the following example: and could be missed by testing. Be careful in any { DSP code that writes to external memory. q load (r2),r4 add r4,r6 Example #1: | | moveq #4,r4 ; Safe because R4 was load (rl) ,r2 A 4 j read above or r10,ril “a : store rll,(r3) ' 1 3) Neither the DSP or the GPU will reliably 4 et ots i: . Example #2: : execute ‘jr’ or jump’ instructions unless they are load (r1) ,r2 F in internal RAM. or r2,rll ; store ril,(r3) | : 4) The in hi iority. The P*OMPICHload (rl),xr2 a|i Otherwise,DAREN itordoing an_FLAGSexternal[shouldatwaysbe0..] load or store will or r2,r2 ‘ cause the DSP to hang, needing a reset to recover. or rl0,rll i store ril,(r3) | 5) The GPU and blitter may not be used in high Example #1 will not work correctly but example ' bus priority while the object processor is running. —_42 wil]. This is because the result of the load is re: The DMAEN bit of G_FLAGS should be 0, and quired for the or operation to be performed. To 1 ‘ the BUSHI bit of B_CMD should be 0. make example #1 work change it to example #3. a ' No bus master may operate at a higher priority | " than the object processor. If something else gets 8) The value in the High Data Register inthe GPU @ ’ the bus between the second and third phrases of an #8 changed after ANY external load, not just a. § object header, then the line buffer address can be loadp. This means that if an interrupt in running in QA q corrupted, causing horizontal black stripes and the GPU that loads from external memory the ei : possibly other artifacts in the display. underlying program may not use loadp. Py : 26 April, 1995 Confidential Information “70% Property of Atari Corporation © 1994 Atari Corp. 2a + +Page 3 + +| + +| j + +Hardware Bugs & Warnings } WG9) There is a bug in the divider of the GPU and changed in the following two instructions because DSP. If you try to do two consecutive divides of pipe-lining effects. If you are going to use the without there being at least 1 clock cycle of idle flags set by a STORE instruction, or are changing time between them, then the result of the second one of the other bits such as the register bank, then divide will be wrong. ensure that there are two NOP instructions after the STORE to either of these registers. This will only occur when the two divides are separated by less than 16 clock cycles, and the . second divide as the quotient of the first divide as | one of its register operands, and there is no scoreboard dependency on the quotient of the first one i prior to the second. + +The work-around should be to either make sure that more than 16 clock cycles occur between divide instructions, or make sure that an instruction which is dependent on the quotient of the first divide occurs before the second divide. + +| Example #1: div r0,rl div r5,rl Ww moved #3,xr5 should be like this: div r0,rl : moved #3,x5 / or rl,rli div r5,r1 Example #2: div r0,rl moveg #3,x5 div r5,r1l should be like this: div x0,ril moved #3,r5 or rl,ri div r5,xr1 + +10) DSP matrix multiplies only work in the lower 4K of DSP RAM. The DSP matrix register can only point to memory locations in the first 4K of DSP RAM. Only address lines 2-11 are programmable; the rest of the matrix address is hard-wired Wy to $F1Bxxx. + +, + +11) When you write a value to the G_FLAGS or D_FLAGS registers, it may not appear to have © 1994 Atari Corp. Confidential Information FPR Property ofAtari Corporation + +26 April, 1995 + +. Page 4 Page 4 4 + +. Page 4 Page 4 4 - Hardware Bugs & Warnings i BlitterBugs@ Warnings ——“ and move.| ,-(an) instructions of the 68000 do not work correctly when writing to Jaguar GPU & DSP hardware registers and internal RAM. and internal RAM. internal RAM. RAM. + +While these are the only ones we know only ones we know ones we know we know know about ai present, it is is possible there are other other instruction/address mode combinations that mode combinations that combinations that that have this problem. this problem. problem. The best way around best way around way around around it is to is to to use the GPU and/or DSP instead of the 68000 the GPU and/or DSP instead of the 68000 GPU and/or DSP instead of the 68000 and/or DSP instead of the 68000 DSP instead of the 68000 instead of the 68000 of the 68000 the 68000 68000 when you want to write to Jaguar GPU/DSP you want to write to Jaguar GPU/DSP want to write to Jaguar GPU/DSP to write to Jaguar GPU/DSP write to Jaguar GPU/DSP to Jaguar GPU/DSP Jaguar GPU/DSP GPU/DSP 26 April, 1995 1995 Confidential Information Information “70% Property of Atari Corporation + diff --git a/docs/atari-jaguar-1999/06 - Jaguar CD-ROM.md b/docs/atari-jaguar-1999/06 - Jaguar CD-ROM.md new file mode 100644 index 00000000..fe6dbcba --- /dev/null +++ b/docs/atari-jaguar-1999/06 - Jaguar CD-ROM.md @@ -0,0 +1,1013 @@ +| 1 | i i | ' j | : ‘ |] 1 | | q 1 | : | : ] : i 1 + +Page I E Jaguar CD-ROM ian The Atari CD is a low cost, high capacity data storage device capable of storing 746.9 megabytes of H data. The Atari drive is double speed (=353 kb/sec.). The uncorrectable error rate is less than 1ini0O . All errors are flagged by the system so damaged blocks may be re-read. | There are a few differences between the Jaguar CD and other systems that you may be familiar with. E These fall into two areas: performance and arrangement. - | The Jaguar CD subsystem is high performance. For example, a MPC (Multimedia PC) has a minimum | performance requirement that states that, “The drive must be capable of maintaining a sustained transfer | rate of 150 kb/sec, without consuming more than 40% of the CPU bandwidth in the process.” This data | rate is half that of the Atari CD and the Jaguar will sustain the full 352800 bytes/sec. rate. This high + performance level is achievable because of Jaguar's very large bus bandwidth. j All data on the disc is accessed directly, not via a file system with a directory structure. The data is | arranged in a “raw” format compliant with Red Book except that Jaguar discs may be multi-session | (defined by the Orange Book standard). There is a table of contents on the disc which may have up to 99 entries each referencing a single track (for more information about CDs, see the section below titled A _ Bit About CD-ROMs). P’ Data on the disc is referenced via the time stamp of the data. Time stamps assume single speed play and | start at the beginning of the disc. The minimum addressable data unit on the disc is a frame. Each frame | js 588 longs (2352 bytes). There are 75 frames per second at single speed. Any position on the disc is | accessible via a time stamp of the format mm:ss:ff (mm = minutes; ss = seconds; ff= frames). Reading data from a CD is an inexact process. When a command is sent to the CD to request data | starting at a particular time code, the mechanism cannot guarantee that the data being sent is coming | from the exact location requested. It is important to recognize that the data that is written into memory } will not start at the exact beginning of the requested frame. In order to guarantee that the data you want | will be contained in the data read we suggest that you start reading six frames before the first block you | actually want and search for your partition marker’ in memory for 31 frames (72,912 bytes) from this | point. Please note that while this amount is sufficient for most ‘gold’ discs, we have found that some | writer software induces additional skew which may need to be compensated for by additional preseeking. Manufactured discs are guaranteed to be well within the tolerances given. It should be noted that the data from the CD maintains long alignment only. This means that graphics data cannot be guaranteed to have a particular phrase alignment. This phrase alignment must be i accounted for in your code, or else the data needs to be moved. | In order to allow for changes in CD vendors and changes in data transfer mechanism, it is essential that ") all access to the CD and its associated controls be via the CD BIOS. The BIOS is meant to be as + +1 A partition marker is a 64 byte block of data consisting of 16 repetitions of the same longword. Partition markers are covered in more detail in the section Jaguar CD-ROM Programming Procedures and Guidelines. © 1995 Atari Corp. Confidential Information PER Property ofAtari Corporation 16 May, 1995 + +: Page 2 2 Jaguar | unobtrusive as possible. A detailed description of the BIOS can be found as possible. A detailed description of the BIOS can be found possible. A detailed description of the BIOS can be found A detailed description of the BIOS can be found detailed description of the BIOS can be found description of the BIOS can be found of the BIOS can be found the BIOS can be found BIOS can be found can be found be found in the section The the section The section The The Jaguar CD- CDFundamentally, CDs are a constant CDs are a constant are a constant a constant constant linear velocity (CLV), velocity (CLV), (CLV), single-data-track optical media with one data optical media with one data media with one data with one data one data data ' surface. The single data track is in the form form of a a spiral about a mile long. Absolute position information ! is contained contained in a time time code recorded within the data. The time code can be resolved time code can be resolved code can be resolved can be resolved be resolved resolved to a a single sector of of 4 2352 bytes, of which, all may be data, or 2048 2048 data bytes and the remainder remainder for an an additional layer of of 7 error correction. correction. Atari Jaguar CDs CDs are recorded in CD-DA “raw data” format, CD-DA “raw data” format, “raw data” format, data” format, format, with Motorola byte- byte| ordering, so there are 2352 bytes per sector, or block. block. The total capacity of a Jaguar CD a Jaguar CD Jaguar CD CD is 746.9 : megabytes. j The logical logical logical organization of a standard CD divides of a standard CD divides a standard CD divides standard CD divides CD divides divides of a standard CD divides a standard CD divides standard CD divides CD divides divides a standard CD divides standard CD divides CD divides divides standard CD divides CD divides divides CD divides divides divides the disc into four types of regions: disc into four types of regions: into four types of regions: four types of regions: of regions: regions: disc into four types of regions: into four types of regions: four types of regions: of regions: regions: into four types of regions: four types of regions: of regions: regions: four types of regions: of regions: regions: of regions: regions: regions: lead-in, tracks, pauses, and lead-out. The lead-in area is about 10000 sectors long, near the inner diameter of the CD. diameter of the CD. of the CD. the CD. CD. diameter of the CD. of the CD. the CD. CD. of the CD. the CD. CD. the CD. CD. CD. ; The Table of Contents (TOC) Table of Contents (TOC) of Contents (TOC) Contents (TOC) (TOC) Table of Contents (TOC) of Contents (TOC) Contents (TOC) (TOC) of Contents (TOC) Contents (TOC) (TOC) Contents (TOC) (TOC) (TOC) is repeated endlessly repeated endlessly endlessly repeated endlessly endlessly endlessly within the Q subcode Q subcode subcode Q subcode subcode subcode of this region. this region. region. this region. region. region. Following the ‘ lead-in is the the the first pause pause pause region, which must be which must be be which must be be be 150 or 225 or 225 225 or 225 225 225 sectors long. After the the the first pause comes pause comes comes pause comes comes comes the ' first track, which which which is a data data data region. If the CD the CD CD the CD CD CD has more than one one one track, every track must be be be separated by a 1 pause region of 2 or 3 2 or 3 or 3 3 2 or 3 or 3 3 or 3 3 3 seconds. After the the the last track comes comes comes the lead-out region which which which contains primary primary primary + +Page 2 2 Jaguar CD-ROM unobtrusive as possible. A detailed description of the BIOS can be found as possible. A detailed description of the BIOS can be found possible. A detailed description of the BIOS can be found A detailed description of the BIOS can be found detailed description of the BIOS can be found description of the BIOS can be found of the BIOS can be found the BIOS can be found BIOS can be found can be found be found in the section The the section The section The The Jaguar CD- CD5 Fundamentally, CDs are a constant CDs are a constant are a constant a constant constant linear velocity (CLV), velocity (CLV), (CLV), single-data-track optical media with one data optical media with one data media with one data with one data one data data { ’ surface. The single data track is in the form form of a a spiral about a mile long. Absolute position information 4 is contained contained in a time time code recorded within the data. The time code can be resolved time code can be resolved code can be resolved can be resolved be resolved resolved to a a single sector of of 7 2352 bytes, of which, all may be data, or 2048 2048 data bytes and the remainder remainder for an an additional layer of of 4 error correction. correction. Atari Jaguar CDs CDs are recorded in CD-DA “raw data” format, CD-DA “raw data” format, “raw data” format, data” format, format, with Motorola byte- byteordering, so there are 2352 bytes per sector, or block. block. The total capacity of a Jaguar CD a Jaguar CD Jaguar CD CD is 746.9 8 megabytes. | The logical logical logical organization of a standard CD divides of a standard CD divides a standard CD divides standard CD divides CD divides divides of a standard CD divides a standard CD divides standard CD divides CD divides divides a standard CD divides standard CD divides CD divides divides standard CD divides CD divides divides CD divides divides divides the disc into four types of regions: disc into four types of regions: into four types of regions: four types of regions: of regions: regions: disc into four types of regions: into four types of regions: four types of regions: of regions: regions: into four types of regions: four types of regions: of regions: regions: four types of regions: of regions: regions: of regions: regions: regions: lead-in, tracks, ' . pauses, and lead-out. The lead-in area is about 10000 sectors long, near the inner diameter of the CD. diameter of the CD. of the CD. the CD. CD. diameter of the CD. of the CD. the CD. CD. of the CD. the CD. CD. the CD. CD. CD. fa The Table of Contents (TOC) Table of Contents (TOC) of Contents (TOC) Contents (TOC) (TOC) Table of Contents (TOC) of Contents (TOC) Contents (TOC) (TOC) of Contents (TOC) Contents (TOC) (TOC) Contents (TOC) (TOC) (TOC) is repeated endlessly repeated endlessly endlessly repeated endlessly endlessly endlessly within the Q subcode Q subcode subcode Q subcode subcode subcode of this region. this region. region. this region. region. region. Following the s lead-in is the the the first pause pause pause region, which must be which must be be which must be be be 150 or 225 or 225 225 or 225 225 225 sectors long. After the the the first pause comes pause comes comes pause comes comes comes the | & first track, which which which is a data data data region. If the CD the CD CD the CD CD CD has more than one one one track, every track must be be be separated by a | = pause region of 2 or 3 2 or 3 or 3 3 2 or 3 or 3 3 or 3 3 3 seconds. After the the the last track comes comes comes the lead-out region which which which contains primary primary primary 4 data all set to zeros to zeros zeros and an an alternating P subcode P subcode subcode channel bit. q . Multi-session CDs appear logically as a set of up to 40 standard CDs arranged as sequential annular Ld rings on the disc. Independent of the number of sessions on the CD, the total number of tracks must vi always be 99 or less for the entire disc. In theory, each session could have up to 99 tracks, for a total of : : up to 3960 tracks, but this structure is not yet officially supported by Philips and Sony. The track | 2 number limitation is usually overcome with a “logical block-logical file” structure that is built in 1 ,. software on top of the physical track structure. 2 er..——C—CUCUCT ERE..——C—CUCUCT ERE ERE rc wrLDVc Absolute Time — The time codc Time — The time codc — The time codc The time codc time codc codc information in the Q Subcode Q Subcode Subcode that ranges continuously from continuously from from 00:00:00 { PS to a maximum maximum of 73:59:75, 73:59:75, beginning at the the start of the of the the first pause pause region on the disc. be Area or Region — Region — — A physical portion of the CD's the CD's CD's data carrying carrying surface that is 2D 2D ring-shaped like a @ flattened doughnut. doughnut. j : Channel Frame — The fundamental Frame — The fundamental — The fundamental The fundamental fundamental packet size of 588 bits that size of 588 bits that of 588 bits that 588 bits that bits that that is transmitted transmitted on the high-frequency the high-frequency high-frequency : signal sent by by the laser playback head’s output playback head’s output head’s output amplifier. The packet contains 24 bytes packet contains 24 bytes contains 24 bytes 24 bytes bytes of primary data primary data data oe and 1 byte of secondary data of secondary data data (1 bit each, P through each, P through P through through W subcodes) as well well as all of the overhead of the overhead the overhead overhead data bits a required to form form the packet. packet. Po | : theFinalizelead-in —that The includesprocessFinalizelead-in —that The includesprocesslead-in —that The includesprocess —that The includesprocessthat The includesprocess The includesprocess includesprocessprocess theof making main TOCaof making main TOCa making main TOCa main TOCa TOCaa recordableat theat the the inner diameter. CD CD readable An by An by by unfinalizedstandard CD CD players willstandard CD CD players will CD CD players will CD players will players will will generallyinvolves writing beinvolves writing be writing be be Ve . unplayable, except on CD ROM on CD ROM CD ROM ROM players specifically designed for this situation, such as Jaguar Jaguar and Photo CD CD players. | ‘16May,1995 ‘Confidential Information Information FP™ Property of Atari Corporation ©1995 AtariCorp. | + +' | | + +The logical logical logical organization of a standard CD divides of a standard CD divides a standard CD divides standard CD divides CD divides divides of a standard CD divides a standard CD divides standard CD divides CD divides divides a standard CD divides standard CD divides CD divides divides standard CD divides CD divides divides CD divides divides divides the disc into four types of regions: disc into four types of regions: into four types of regions: four types of regions: of regions: regions: disc into four types of regions: into four types of regions: four types of regions: of regions: regions: into four types of regions: four types of regions: of regions: regions: four types of regions: of regions: regions: of regions: regions: regions: lead-in, tracks, pauses, and lead-out. The lead-in area is about 10000 sectors long, near the inner diameter of the CD. diameter of the CD. of the CD. the CD. CD. diameter of the CD. of the CD. the CD. CD. of the CD. the CD. CD. the CD. CD. CD. The Table of Contents (TOC) Table of Contents (TOC) of Contents (TOC) Contents (TOC) (TOC) Table of Contents (TOC) of Contents (TOC) Contents (TOC) (TOC) of Contents (TOC) Contents (TOC) (TOC) Contents (TOC) (TOC) (TOC) is repeated endlessly repeated endlessly endlessly repeated endlessly endlessly endlessly within the Q subcode Q subcode subcode Q subcode subcode subcode of this region. this region. region. this region. region. region. Following the lead-in is the the the first pause pause pause region, which must be which must be be which must be be be 150 or 225 or 225 225 or 225 225 225 sectors long. After the the the first pause comes pause comes comes pause comes comes comes the first track, which which which is a data data data region. If the CD the CD CD the CD CD CD has more than one one one track, every track must be be be separated by a pause region of 2 or 3 2 or 3 or 3 3 2 or 3 or 3 3 or 3 3 3 seconds. After the the the last track comes comes comes the lead-out region which which which contains primary primary primary data all set to zeros to zeros zeros and an an alternating P subcode P subcode subcode channel bit. + +er..——C—CUCUCT ERE..——C—CUCUCT ERE ERE rc 1 Absolute Time — The time codc Time — The time codc — The time codc The time codc time codc codc information in the Q Subcode Q Subcode Subcode that ranges continuously from continuously from from 00:00:00 4 to a maximum maximum of 73:59:75, 73:59:75, beginning at the the start of the of the the first pause pause region on the disc. 1 Area or Region — Region — — A physical portion of the CD's the CD's CD's data carrying carrying surface that is 2D 2D ring-shaped like a 4 flattened doughnut. doughnut. Channel Frame — The fundamental Frame — The fundamental — The fundamental The fundamental fundamental packet size of 588 bits that size of 588 bits that of 588 bits that 588 bits that bits that that is transmitted transmitted on the high-frequency the high-frequency high-frequency ' signal sent by by the laser playback head’s output playback head’s output head’s output amplifier. The packet contains 24 bytes packet contains 24 bytes contains 24 bytes 24 bytes bytes of primary data primary data data 1 and 1 byte of secondary data of secondary data data (1 bit each, P through each, P through P through through W subcodes) as well well as all of the overhead of the overhead the overhead overhead data bits ' required to form form the packet. packet. || theFinalizelead-in —that The includesprocessFinalizelead-in —that The includesprocesslead-in —that The includesprocess —that The includesprocessthat The includesprocess The includesprocess includesprocessprocess theof making main TOCaof making main TOCa making main TOCa main TOCa TOCaa recordableat theat the the inner diameter. CD CD readable An by An by by unfinalizedstandard CD CD players willstandard CD CD players will CD CD players will CD players will players will will generallyinvolves writing beinvolves writing be writing be be unplayable, except on CD ROM on CD ROM CD ROM ROM players specifically designed for this situation, such as Jaguar Jaguar and ( Photo CD CD players. + +‘16May,1995 ‘Confidential Information Information FP™ Property of Atari Corporation + +| Jaguar CD-ROM + +Page 3 + +r Index — A pointer in the track that is currently playing. This sometimes used for accessing specific } parts of tracks, independently of time code. | Lead-in — The region of the CD near the inner diameter that contains the table of contents, usually[as][“TOC”.] |[abbreviated] + +Mode — The type of track (audio, ROM, CD+G, Karaoke, CDI, etc.) that is presently being read. Open/Closed Session — The process of making a session valid after recording data in it on a recordable CD involves writing a lead-in and lead-out for it, called “closing” it. While the session is open, data can be appended to the session. An open session can not be accessed by Jaguar's CD Module. Pause —A region of the disc that must contain only digital zeros of primary data while the P Subcode in the secondary data channel is set to all ones. Some software refers to this as “Track Lead-in.” + +## Program — The main data region, or regions of a CD. + +Relative Time — The time code information in the Q Subcode that ranges continuously from 00:00:00 + +Sector or Block — The smallest addressable unit of primary data storage, 2352 bytes, that can be read from the disc without post-processing of the data. + +Session — A session is an area of a CD that has at least one complete set of region types. i.e. lead-in, pause, track (the data), and lead-out. A standard audio CD has a single session, usually with multiple tracks and pauses between the lead-in and lead-out. There can be as many as 99 sessions on a single multi-session CD (in fact only about 40 sessions will fit on a disc). + +Subcode Data Channel — The serial secondary data read from the disc at 1/192 of the rate of the primary data, both of which are combined within the main channel. There are 8 subcodes within the secondary channel, identified as P through W. The Q Subcode contains the position information of the primary data channel sectors. The position information is in a time-based format of : + +## minutes:seconds:frames + +Subcode Frame — The subcode channel information extracted from one sector of the CD. The subcode frame rate is 75 per second at 1X speed playback and 150 per second at 2X speed playback. + +Table of Contents — The directory of the CD read from the Q subcode channel. Each program on the disc is listed according to its position on the disc. There can be as many as 99 items in the TOC. Special information items about the disc and its manufacturer can also be found here. Track Number — The number of a program (audio selection for example) on the CD. + +| 1 : / | | | ] | i i y | 4 : q 4 | ' ; i | | | 1 I i + +© 1995 Atari Corp. Confidential Information PO® Property of Atari Corporation + +16 May, 1995 + +Page 5 : | | you ! a | , | | / q so A7 A7 q | | q : |a q' ; certain j of q may be be z | for and and q should BIOS | | + +| ; - 2.3. TheWhatcall's registersuse. are used for input. | 4.5. WhatWhat registersregisters areare used used changedfor byoutput. the cail. registers areare used used changedfor byoutput. the cail. are used used changedfor byoutput. the cail. for byoutput. the cail. output. the cail. + +| Jaguar CD-ROM FgaguarCDROMBIOS: | The Jaguar CD BIOS provides hardware transparent access to the Jaguar CD subsystem. ITIS | REQUIRED THAT ALL ACCESS TO THE CD BE THROUGH THE BIOS. The BIOS gives you control over all major aspects of the CD system. The BIOS allows single or double speed operation, a choice of data paths into the system, a data transfer function and other features. For more information on the CD subsystem, see section 1 and the sample source code CD_SAMP.S and CD_ASAMP:S. | CC ccrummmmmmammmmmmmmmmmane. ccatng he eR ROM BIOS! 9 | To call the CD-ROM BIOS, you load the proper values into the appropriate registers, then do a 68000 | jsr CD_routine call for the CD-ROM BIOS routine you want to call. The addresses of the routines are | defined in the CD.INC include file. Each CD BIOS call may require up to 64 bytes of stack space so A7 A7 | should be configured properly prior to calling any CD BIOS routine. | The CD-ROM BIOS is installed automatically in a retail Jaguar CD-ROM system. In a development | CD-ROM system, however, you must manually load the CD-ROM BIOS into DRAM. A debugger script (CDBIOS??.DB)’ is provided for this purpose. ~~ The following is a list of the CD BIOS calls. Each block gives: 1, The name of the call (and what version it is available in). + +- 4.5. WhatWhat registersregisters areare used used changedfor byoutput. the cail. + +| ——ore ee The CD.INC file defines an error variabie named err_flag, which will receive an error code from certain | CD BIOS routines. A value of zero indicates no error; non-zero values indicate an error. The contents of err_flag are valid only after a CD BIOS function which is documented as setting it. However, it may be be changed by other CD BIOS functions. Proper error checking is mandatory when using the Jaguar CD-ROM. Failure to properly check for and and | handle error conditions may prevent your product from obtaining final production approval. You should always check err_flag after those CD BIOS calls that set it. Additionally, your program should have some kind of timeout mechanism to prevent the situation where it endlessly waits for a CD BIOS call to return (which could happen if other errors have not been properly handled). + +2 Different versions of the CD BIOS may be distinquished by the last two digits of the filename. For example, CDBIOS43.DB would be a DB script that would load version 4.3 of the CD BIOS. © 1995 Atari Corp. Confidential Information “JER Property ofAtari Corporation + +‘ 7 + +| + +15 June, 1995 + +| Page 6 Jaguar CD-ROM | 23 DebuggingwiththeCO-ROMBIOS =#=§...sa j Two versions, revisions 2.x and 4.x, of the CD-ROM BIOS are currently distributed by Atari Jaguar | Developer Support. If you have revision 1.0, you should download the two newer versions from Compuserve or the Atari Software Development BBS. Developer CD systems with the Butch 1 chip can i only use revision two of the BIOS. Butch 2 systems can support either (you have a Butch 2 system if | your CD system is in a modified production-level case). it | When debugging a CD title you should format your data on a CD-R disc or the emulator as specified in F section 6. The CD-BIOS must be soft-loaded prior to making any CD-BIOS call using the command ] ‘load cdbiosxx.db’ where ‘xx’ is the version number of the BIOS you want to load3. + +q eh | @ - || |4 oo j . 2 a q Bo p 1 a : | = be . _ 3 | . : i ; a | ‘ 4 : - _ _ r | @ + +‘ 1 1 } \ i | 1 j + +: ; + +| 1 ] j : | ' | + +4 + +To debug, you will need a copy of the disc’s table of contents. To create a copy, load the CD-BIOS and execute a short 68000 program such as the following: + +**==> picture [149 x 216] intentionally omitted <==** + +**----- Start of picture text -----**
+- include “jaguar.inc”
-include "“cd.inc”
68000
.text
move.1 #$70007,D_END
jsr CD_setup
move .w #0,da0
jsr CD_mode
lea $2C00,A0
jsxr CD_getoc
illegal
-end
**----- End of picture text -----**
+ + +This program sets up the CD hardware, cails CD_getoc to read the table of contents at $2C00 and then ends on an illegal instruction. Now you can use the debugger command ‘write toc.dat 2C00{[400]’ to store the TOC to disc. This step needs to be performed each time the data on the disc changes. + +Now, you can create a simple debugger script such as: + +load cdbios40.db read toc.dat 2c00 aread bootcode.cof + +This will load the CD BIOS rev 4.0 , the Table of Contents, and your bootcode to the correct location so you can begin debugging. Your bootcode program should be the same (and at the same location) as you + +- 3 Depending on your system setup, it may be necessary to switch to the directory containing the CD-ROM BIOS files, typically JAGUAR\CDROM, prior to Joading the debugger and issuing this command. + +- 15 June, 1995 1995 Confidential Information PR Property ofAtari Corporation © 1995 Atari Corp. + +15 June, 1995 1995 + +4 + +| Jaguar CD-ROM Page 7 | rd will have the CD Boot ROM load your code. This bootcode must be <64k and is responsible for the loading of other code/data segments. + +{ | | 4 { { | { ( | i ' q : | | | | + +; B + +| j q : j : i + +You should never place a CD_getoc call in your main code as the CD Boot ROM will load the table of contents on a booting disc at $2C00 automatically. ga Reading Data with the CD-ROM BIOS Data is normally read from a CD by calling one of three forms of CD_init (CD_init, CD_initf, and CD_initm) followed by any number of CD_read calls. With the current hardware, each form of CD_init loads a piece of GPU interrupt code which handles interrupts redirected from Jerry’s 1S interrupt. This may change as new versions of the CD hardware are produced. + +Warning! The CD-BIOS GPU code does not distinguish between which interrupts actually came from Jerry and which came from other sources. For this reason, you should never enable other interrupts in the JINTCTRL register when a handler from any version of CD_init is active, otherwise they wili be mistaken for interrupts from the CD interface. . Following is a brief description of the variants of CD_init: if ; CD_init ~ Average speed, does not automatically locate data‘, uses no (non-interrupt) registers. CD_initf — Fastest read, does not automatically locate data, uses more registers. CD _initm — Slowest read, locates data, supports circular buffers, uses no (non-interrupt) registers. When reading data at double-speed these interrupts occur approximately every 90 psecs. Due to interrupt overhead the required maximum latency is reduced to = 54 psecs. If the Object Processor is used extensively, this number may be reduced. This means that no processor that has priority over the GPU must take control of the bus for longer than this period of time. Specifically, 68000 vertical-blank handlers are a likely cause of problems. Preferably, use the GPU for object-list update, etc... or, if you must, use only a tiny handler in the 68k. + +If you do not wish to use the GPU for CD reading you can also use the DSP. To do this, you must install a DSP I’S interrupt handler, call CD_jert appropriately, and set SMODE to $14 (SMODE is set to the default of $15 by the Boot ROM and should be restored when done). This method eliminates the need for any form of CD_init. When a CD_read call is executed your handler can now extract data from the CD. CD data transfers using the DSP are, however, subject to infrequent unreported data errors. Data whose integrity is required to be perfect should be checksummed. + +To play Red Book audio you need a very simple interrupt handler that reads the incoming data from the CD and outputs it to the DACs (see the file INOUT.DAS in \JAGUAR\CDROM) for an example. You 4 The CD_init and CD_initf routines do not guarantee that a data read will begin exactly at a specified time code. We recommend that CD reading begin six blocks ahead of where data is needed and that your buffer is searched for 31 blocks worth of memory. The CD_initm routine does, however, automatically search for data tagged by partition markers and locates the data in memory automatically. © 1995 Atari Corp. Confidential Information “JER. Property ofAtari Corporation 15 June, 1995 + +15 June, 1995 + +| Page 8 Jaguar CD-ROM CD-ROM | can then call CD_read with the “Just Seek” bit Seek” bit bit set and the timecode of your and the timecode of your the timecode of your timecode of your of your track. Audio will be played Audio will be played will be played be played played by your interrupt handler but no data will be stored by any installed version of CD_init. CD_init. | 25CommandAcknowledge = tt C*@“ 4 Several CD BIOS functions give you the option of waiting for an acknowlege that the command the command command 1 completed or returning immediately. The only only restriction to the “return immediately” mode immediately” mode mode is that that a CD_ack must be used prior to any subsequent CD BIOS command. subsequent CD BIOS command. CD BIOS command. BIOS command. command. With the CD_read commandin CD_read commandin commandin seek : mode, this delayed acknowledge is implied by implied by by the command command so you must alsodoaCD_ack priortoany alsodoaCD_ack priortoany priortoany } CD BIOS command that follows. This structure gives gives you the flexibilty to perform other calculationsor do other processing while a command command takes place. | 2.6 Error Recovery Procedure for CD Read Operations, i To retry a CD read operation that fails (ie. CD_pér returns returns an error result) while running in double: speed mode, the following steps should be performed: should be performed: be performed: performed: 1. Switch to Single-Speed Single-Speed using CD_mode. CD_mode. { 2. Switch to Double-Speed using CD_mode. CD_mode. | 3. Reexecute the CD_read. CD_read. This should make error recovery reliable under under ali circumstances where circumstances where where it is actually actually possible (i.e. the | ; disk isn't actually damaged or defective). { | oe,rrrti‘CeOCOCtr~COwzsCNCNCC.CUCiéCdCNCizssC.tirizCisiONisCONCNOCO_iéCUG,rrrti‘CeOCOCtr~COwzsCNCNCC.CUCiéCdCNCizssC.tirizCisiONisCONCNOCO_iéCUG j ee8484 Error code code in global err_flag: 0 indicates no error, error, error, non-zero indicates error , j |PurposePurpose =| If any any call uses the the the “return immediately” option, CD_ack may be used to wait for the may be used to wait for the be used to wait for the to wait for the wait for the for the the may be used to wait for the be used to wait for the to wait for the wait for the for the the be used to wait for the to wait for the wait for the for the the to wait for the wait for the for the the wait for the for the the for the the the | **|** | requested action to complete. action to complete. complete. action to complete. complete. complete. Note: Any call that does not “return immediately” uses this Any call that does not “return immediately” uses this call that does not “return immediately” uses this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this Any call that does not “return immediately” uses this call that does not “return immediately” uses this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this call that does not “return immediately” uses this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this “return immediately” uses this immediately” uses this uses this this immediately” uses this uses this this uses this this this | call to wait for completion. to wait for completion. wait for completion. for completion. completion. to wait for completion. wait for completion. for completion. completion. wait for completion. for completion. completion. for completion. completion. completion. This means that err_fiag is set. j Se r—~—“ i™OC:iC:SCS:i‘CCNONONONC®COWO®CONO®NOCOCONOCiiész.CimCGTCCNONONONC®COWO®CONO®NOCOCONOCiiész.CimCGTCCNONONONC®COWO®CONO®NOCOCONOCiiész.CimCGT j Note: This call should never be used by a bootable CD-ROM. call should never be used by a bootable CD-ROM. should never be used by a bootable CD-ROM. never be used by a bootable CD-ROM. used by a bootable CD-ROM. by a bootable CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. used by a bootable CD-ROM. by a bootable CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. by a bootable CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. bootable CD-ROM. CD-ROM. CD-ROM. It isfor debugging purposes only. isfor debugging purposes only.for debugging purposes only. debugging purposes only. purposes only. only. isfor debugging purposes only.for debugging purposes only. debugging purposes only. purposes only. only.for debugging purposes only. debugging purposes only. purposes only. only. debugging purposes only. purposes only. only. purposes only. only. only. | | AO.L The address address of 1024 byte buffer for returned 1024 byte buffer for returned byte buffer for returned buffer for returned for returned returned multi-session TOC TOC | : I5June, 1995 Confidential Information AR Property ofAtari Corporation ofAtari CorporationAtari Corporation Corporation © 1995 1995 Atari Corp. Corp. 4 + +Jaguar CD-ROM CD-ROM fh the “Just Seek” bit Seek” bit bit set and the timecode of your and the timecode of your the timecode of your timecode of your of your track. Audio will be played Audio will be played will be played be played played ’ . but no data will be stored by any installed version of CD_init. CD_init. CommandAcknowledge = tt C*@“ functions give you the option of waiting for an acknowlege give you the option of waiting for an acknowlege you the option of waiting for an acknowlege the option of waiting for an acknowlege option of waiting for an acknowlege of waiting for an acknowlege waiting for an acknowlege for an acknowlege an acknowlege acknowlege that the command the command command : immediately. The only only restriction to the “return immediately” mode immediately” mode mode is that that a ? to any subsequent CD BIOS command. subsequent CD BIOS command. CD BIOS command. BIOS command. command. With the CD_read commandin CD_read commandin commandin seek @% is implied by implied by by the command command so you must alsodoaCD_ack priortoany alsodoaCD_ack priortoany priortoany follows. This structure gives gives you the flexibilty to perform other calculationsor a command command takes place. | Procedure for CD Read Operations, i dR that fails (ie. CD_pér returns returns an error result) while running in double3 steps should be performed: should be performed: be performed: performed: = to Single-Speed Single-Speed using CD_mode. CD_mode. { | Double-Speed using CD_mode. CD_mode. | & the CD_read. CD_read. o recovery reliable under under ali circumstances where circumstances where where it is actually actually possible (i.e. the | = or defective). { ; ,rrrti‘CeOCOCtr~COwzsCNCNCC.CUCiéCdCNCizssC.tirizCisiONisCONCNOCO_iéCUG : code in global err_flag: 0 indicates no error, error, error, non-zero indicates error , o call uses the the the “return immediately” option, CD_ack may be used to wait for the may be used to wait for the be used to wait for the to wait for the wait for the for the the may be used to wait for the be used to wait for the to wait for the wait for the for the the be used to wait for the to wait for the wait for the for the the to wait for the wait for the for the the wait for the for the the for the the the — requested action to complete. action to complete. complete. action to complete. complete. complete. Note: Any call that does not “return immediately” uses this Any call that does not “return immediately” uses this call that does not “return immediately” uses this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this Any call that does not “return immediately” uses this call that does not “return immediately” uses this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this call that does not “return immediately” uses this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this “return immediately” uses this immediately” uses this uses this this immediately” uses this uses this this uses this this this | ize call to wait for completion. to wait for completion. wait for completion. for completion. completion. to wait for completion. wait for completion. for completion. completion. wait for completion. for completion. completion. for completion. completion. completion. This means that err_fiag is set. Poe r—~—“ i™OC:iC:SCS:i‘CCNONONONC®COWO®CONO®NOCOCONOCiiész.CimCGTCCNONONONC®COWO®CONO®NOCOCONOCiiész.CimCGTCCNONONONC®COWO®CONO®NOCOCONOCiiész.CimCGT never be used by a bootable CD-ROM. used by a bootable CD-ROM. by a bootable CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. used by a bootable CD-ROM. by a bootable CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. by a bootable CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. bootable CD-ROM. CD-ROM. CD-ROM. It isfor debugging purposes only. isfor debugging purposes only.for debugging purposes only. debugging purposes only. purposes only. only. isfor debugging purposes only.for debugging purposes only. debugging purposes only. purposes only. only.for debugging purposes only. debugging purposes only. purposes only. only. debugging purposes only. purposes only. only. purposes only. only. only. | The address address of 1024 byte buffer for returned 1024 byte buffer for returned byte buffer for returned buffer for returned for returned returned multi-session TOC TOC | Confidential Information AR Property ofAtari Corporation ofAtari CorporationAtari Corporation Corporation © 1995 1995 Atari Corp. Corp. 4 + +oe,rrrti‘CeOCOCtr~COwzsCNCNCC.CUCiéCdCNCizssC.tirizCisiONisCONCNOCO_iéCUG,rrrti‘CeOCOCtr~COwzsCNCNCC.CUCiéCdCNCizssC.tirizCisiONisCONCNOCO_iéCUG : + +ee8484 Error code code in global err_flag: 0 indicates no error, error, error, non-zero indicates error , |PurposePurpose =| If any any call uses the the the “return immediately” option, CD_ack may be used to wait for the may be used to wait for the be used to wait for the to wait for the wait for the for the the may be used to wait for the be used to wait for the to wait for the wait for the for the the be used to wait for the to wait for the wait for the for the the to wait for the wait for the for the the wait for the for the the for the the the — **|** | requested action to complete. action to complete. complete. action to complete. complete. complete. Note: Any call that does not “return immediately” uses this Any call that does not “return immediately” uses this call that does not “return immediately” uses this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this Any call that does not “return immediately” uses this call that does not “return immediately” uses this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this call that does not “return immediately” uses this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this that does not “return immediately” uses this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this does not “return immediately” uses this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this not “return immediately” uses this “return immediately” uses this immediately” uses this uses this this “return immediately” uses this immediately” uses this uses this this immediately” uses this uses this this uses this this this | call to wait for completion. to wait for completion. wait for completion. for completion. completion. to wait for completion. wait for completion. for completion. completion. wait for completion. for completion. completion. for completion. completion. completion. This means that err_fiag is set. Poe Se r—~—“ i™OC:iC:SCS:i‘CCNONONONC®COWO®CONO®NOCOCONOCiiész.CimCGTCCNONONONC®COWO®CONO®NOCOCONOCiiész.CimCGTCCNONONONC®COWO®CONO®NOCOCONOCiiész.CimCGT Note: This call should never be used by a bootable CD-ROM. call should never be used by a bootable CD-ROM. should never be used by a bootable CD-ROM. never be used by a bootable CD-ROM. used by a bootable CD-ROM. by a bootable CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. used by a bootable CD-ROM. by a bootable CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. by a bootable CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. a bootable CD-ROM. bootable CD-ROM. CD-ROM. bootable CD-ROM. CD-ROM. CD-ROM. It isfor debugging purposes only. isfor debugging purposes only.for debugging purposes only. debugging purposes only. purposes only. only. isfor debugging purposes only.for debugging purposes only. debugging purposes only. purposes only. only.for debugging purposes only. debugging purposes only. purposes only. only. debugging purposes only. purposes only. only. purposes only. only. only. | + +i Page 9 | | | | | disc | this i for in i + +‘ ! : : i] q + +**==> picture [515 x 286] intentionally omitted <==** + +**----- Start of picture text -----**
+t+ Jaguar CD-ROM
& ve Returns TOC data in buffer located in DRAM at the location pointed to by AO.L.
=.—lrCC +3 - Maximum track number.
a.LLrLrLrC*C +4 - Total number of sessions.
t -_lrC 45+6 - - Start Start of of last last lead-out lead-out time, time, absolute minutes. absolute seconds.
Cf +7 - Start of last lead-out time, absolute frames.
| £2| Format for the track records that follow:
ee +1 - Absolute minutes (0..99), start of track.
SCs 42 - Absolute seconds (0..59), start of track.
CC +3 - Absolute frames, (0..74), start of track.
i +7 - Track duration frames.
Purmose = The Fetumned buffer will contain 8-byte records, one for each track found on the CD in
| track/time order. The very first record (corresponding to the “Oth” track) has overall disc
| information.
**----- End of picture text -----**
+ + +**==> picture [532 x 328] intentionally omitted <==** + +**----- Start of picture text -----**
+esAOL The address of a long aligned block of GPU RAM 224 bytes long.
Purpose =| This call loads support code into the GPU to support CD_read. At the present time this
~~. only registers R28 to R31 in Bank #0 (which are the same as those normally reserved for
- interrupts to be processed and this primary process must define the interrupt stack in
Hesphies Cn CO nim
Burmese This call is a version of CD_init that is about 30% faster but uses more registers. This call
loads support code into the GPU to support CD_read. the Peso time this uses the
| tor GPu interrupts to be processed and this primary process must define the interrupt
v | stack in R31.
**----- End of picture text -----**
+ + +; 15 June, 1995 + +© 1995 Atari Corp. + +Confidential Information “PPR Property ofAtari Corporation + +| | po + +(“es | Ss ’ | 2 &. + +Jie + +: + +. + +: + +/ + +a + +| + +## 275° CDiniim CDHIOSRevsoup) + +**==> picture [502 x 31] intentionally omitted <==** + +**----- Start of picture text -----**
+AO.L. The address of a long aligned block of GPU RAM 336 bytes long.
fRegisterUsage [A100
**----- End of picture text -----**
+ + +**==> picture [491 x 42] intentionally omitted <==** + +**----- Start of picture text -----**
+oe and circular buffers. At the present time this uses the DSP interrupt in the GPU. The ISR
| the same as those normally reserved for interrupts). Note that there must be a primary
**----- End of picture text -----**
+ + +## eerrrtrsr——..LCi‘<‘‘OCOCOUONiNiC«CVCCCNédsCCiaCrOiéCSCGR + +Purpose ——_[ This call alows CD data to flow to the 'S port on Jerry. This allows audio datato go into | + +pat == [DoW Speed/mode desired: + +FRetume ©——_[ Error code in err_flag. : [essed either audio or data. Note: When in audio mode, the CD mechanism may alter data or + +## apa | DOW O= Retum immediately. + +This call mutes the CD. It functions only in audio mode. + +**==> picture [2 x 15] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +15 June, 1995 + +Confidential Information “7O® Property ofAtari Corporation + +©1995 Atari Corp. + +| + +Page 11 + +{ | 1 | | q q q | / ir | | 1 + +| | | | : j + +i + +**==> picture [267 x 63] intentionally omitted <==** + +**----- Start of picture text -----**
+@ Jaguar CD-ROM
a pom
Cee Dow Oversample by 2°(00).
**----- End of picture text -----**
+ + +**==> picture [527 x 271] intentionally omitted <==** + +**----- Start of picture text -----**
+4 | No return value in any registers.
: SCs Note: This call will only perform the functions that the mechanism can actually do. !f the
Bf | =____| mechanism cannot perform the oversampling requested it will do the next best that it can.
. oversample factor. Whatever software is handling Jerry had better be able to handle it.
eo ,,
PREETI] BOW O= Return immediate.
to [No return value in any registers
. Pumese | This call pauses the CD. When in data mode, data will still be sent but it will not be
' _ sensible. When in pause mode, the CD will not advance along the disc. This means that,
1 when in pause mode, a CD_read call will fill the buffer with nonsense.
: CD_upaus
**----- End of picture text -----**
+ + +## er tisids.CCC + +Register Usage | FRetems [AOL Address of last written data ._ A1.L Approximate address of most recenterror. —_Purpose “This call returns the address of the last longword of memory that was written to. If no data . hes been read, this value will be one longword prior to the start of the read buffer (often a | the position of the last detected read error since the start of the last CD_read command. Aico =| Section 2.6, Error Recovery Procedure for CD Read Operations + +**==> picture [6 x 33] intentionally omitted <==** + +**----- Start of picture text -----**
+i
**----- End of picture text -----**
+ + +© 1995 AtariCorp. + +Confidential Information FER Property ofAtari Corporation + +15 June, 1995 + +F JaguarCD-ROM @& : + +: | + +4 + +| @ a =. a 1 | **8** | 4 p 4 _ , S& _ . POR _ + +| a : | | ‘ | ] | 1 j : ; j | | + +4 pe 1 | q q : ] } q + +## Page 12 + +## ee + +rrs—“i‘ONONOC‘i'OCiriséSC®dszaCNiaCCNOON”CisCCtisCsisCCCziCéstizstsrstsL«C‘ picture [493 x 306] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---|---| +|put]|AOL|Beginning|of destination|data|buffer.| +|The|remaining|bits|are:|mm:ss:ff|(mm|=|minutes,|ss|=|seconds,|ff =|frames).| +|ee|aligned on a 2“*'|boundary.|The minimum|functional|size for|‘N’|is|3.|If the circular| +|a|pointer exceeds the value|in A1|even|if a circular buffer|is|defined.|(CD_initm| +|pe]|No|return value|in any|registers| +||Purpose:=|..]|This|call transfers|data from the CD,|starting|at a given time code. The manner|in which| +|FEos |1|transfout th|e|rred, positionbut theof the next CD|will addresscontinue to to be advanc writt|e|n to.at theIf thecurrent “Justsp S|ee|d.k” bitA CD_ack is set, no may data is| +|Peed|follow only|if the|“Just Seek”|bit|is|set.| +|Seeatss|=——[|CD_uread| +|||Section|2.6,|Error Recovery Procedure|for CD Read|Operations| + +**----- End of picture text -----**
+ + +**==> picture [374 x 250] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||| +|---|---|---|---|---|---|---|---|---|---|---| +|CD_init|Type|Description|_| +|CD_init|Datareached. is readThe into timecode the specifiedspecified bufferto|read until from the endshould of thebe buffer6 framesis| +|prior to that|actually|needed|and the|partition|marker|indicating|the| +|start|of the|data may|be|anywhere|within the|first 31|frames| +|(72,912|bytes)|of the|buffer.| +|CD_initm|Incoming|data from|the CD|is|scanned|for a|partition|marker| +|consisting|of the|longword|specified.|Once the|partition|marker|is| +|identified,|data|immediately|past|the|partition|marker|will|be|read| +|into the|buffer.|Though|data|is|automatically|located|correctly|in| +|memory|by|this|call,|more system|resources|are|used.|Note:|If|the| +|partition|marker|is|not found,|this|call|will|look|‘forever.’| +|This|call|also supports|circular|buffers. When|enabled,|data|will|be| +|read|into the|circular|buffer|indefinitely|or|until CD_uread|is|called.| +|If CD_jeri|has|been|called|and SMODE|has|been|set|to $14 to| +|allow data to flow to the|I°S|port,|you|may|install|a custom| +|interrupt|handler that|will|read|data from|the CD|and|use|it|as| +|necessary.| + +**----- End of picture text -----**
+ + +**==> picture [4 x 30] intentionally omitted <==** + +**----- Start of picture text -----**
+j
bi
**----- End of picture text -----**
+ + +15 June, 1995 + +Confidential Information “JER Property ofAtari Corporation + +© 1995 AtariCorp. + +| 1 i | | | 4 q 1 i ti | i 1 | | ; ' } : | ' i j + +i y + +s © 1995 Atari Corp. + +1 + +## | Jaguar CD-ROM Page 13 Sc dD —~—iCCis + +This call must be used to initialize the CD system before any other calls can be made. + +**==> picture [540 x 560] intentionally omitted <==** + +**----- Start of picture text -----**
+s co Llhdllrrrtsts”r—CC.UOCtCiéC..
| fee [DoW 0 Retum immediately.
__
i D1.W Sessiontospinupon.
Pb | No return value in any registers.
4 Paposs This call sets the CD drive to a specific session. Note: This call is not actually required for
fF of[reading data in another session.
7 oe ., ...
[RET| DOW 0 = Return immediately
ee 1 => Wait for completion.
: [ee [|] No [ return][ value][ in][ any][ registers.]
- rpose. = { This call stops the CD
' DO, 01, Ad
i No return value in any registers.
Purpose This call allows a different disc to be inserted into the Jaguar CD without a reset
4 a occurring. This call should only be made after a CD_stop with the “wait for completion” -
a a flag set, followed by the display of a graphic asking that the user insert a new disc. When
the a new CD is inserted, its Table of Contents will be read at $2C00 and control will be
| ee returned to the program. Do not assume anything about the state of the CD after this call.
: a This means, for example, that CD_mode should be reissued to place the CD in the state
j | you require. See the section Jaguar CD-ROM Programming Procedures & Guidelines
ees| for more information.
ff] DOW => Return immediately.
ee 1 => Wait for completion.
**----- End of picture text -----**
+ + +Confidential Information “PO® Property of Atari Corporation + +15June, 1995 + +> 2 : _— . | | 2@ + +| | + +Page 14 + +Jaguar CD-ROM + +| | | : ; , + +Es 4 Pm + += + +| + +| + +**==> picture [255 x 13] intentionally omitted <==** + +**----- Start of picture text -----**
+This call unmutes the CD. It functions only in audio mode.
**----- End of picture text -----**
+ + +eerC—<—~—srsCSsrsSstCszs—.SaCO‘(RYOYCNCNONO.O.OCCaCisCiziz.C;€® + +pe | DOW 0 Return immediatoy + +oo No return value in any registers. This call undoes the actions of CD_paus. + +SeLldlrrrr—“(eOOOOOOCONCCCCsa.saistrst;stCriCNRCNNRNCCiézéCSAl + +[‘RegisterUsage {D0 PRetwns= =—=—=—_—_|_ Error code in err_flag. + +Purpose This call stops data recording started with a CD_read call. The disc will not be stopped by peasec ss os] this call, only the data transfer. This call is used to cause early termination of a data Le transfer in case of an error, or to disable the CD data transfer when it is no longer needed {and the resources it uses are required for other purposes. + +15 June, 1995 + +Confidential Information “7O® Property ofAtari Corporation + +© 1995 Atari Corp. + +Page 15 + +> 'Elaguarjaguar CD-ROM CD-AOMEmulatorSetup tic This document provides the information you wil: need to connect your Jaguar CD-ROM Emulator to } your Jaguar Development System. Before proceeding with the setup of your Emulator, verify that you } have the following items ready to use: 1 1. An Atari Falcon030 Computer with mouse and AC power cord. . 2. A Jaguar Development System. | 3. A Jaguar Developer CD. 4. Three-header connector. | 5. A Falcon030 to Jaguar adapter card with ribbon cable. 6.7. AASCSI Falcon030 Monitor hard disk drivePort (not to supplied VGA connectorby Atari).adapter. 8.9. ASCSIA VGA cable monitor with with a high-density VGA cable (notSCSI supplied connector.by Atari). Note that the SCSI hard disk drive must be supplied by you. Not all SCSI drives will work in this application, due to variations in the speed, hard drive buffer size and caching strategies among different & drives. Atari strongly recommends the Connor Peripherals CFP1060S or CFP1080S, both of which are P 35” one-third height drives with a storage capacity of approximately 1 gigabyte. Use of drives other , than these may give unusable results. + +1. Connect the AC power, video monitor and mouse. Attach the AC power cable to the connector | marked “Power” on the back panel of the Falcon030. Plug the AC cable into a properly grounded | electrical outlet. Plug the Falcon030 Monitor Port VGA connector adapter into the Falcon030 back | — panel connector marked “Monitor”. Connect your VGA monitor cable to this adapter. Plug in the j Falcon030's mouse to the connector with the mouse symbol, which is located underneath the Falcon030, | near the right front edge of the unit. There is also a joystick connector in the same area — do not plug the | | mouse2. Power-upinto that. the Falcon030 and check software installation. Turn on the Falcon030 using the power switch on the back panel, near the AC power cord. On you VGA monitor, you should see a black and | | white low-resolution display of the boot-up sequence in which the Falcon030 checks itself. At the end of the boot sequence the screen resolution will increase and the desktop will be displayed. The open | window will have the CD-ROM Authoring and Emulator software “CDROM.PRG” as the last item in the list of files displayed. You are now finished with this part of setup, so'turn off the Falcon030. t ft7 3. Connect your SCSI hard drive and verify accessibility. Attach a SCSI cable to the port on the | back panel of Falcon030 marked “SCSI”. Since this is a high-density SCSI connector, you may require | the© 1995 adapter cableAtari Corp. to connectConfidential to your SCSI Information drive. FER After youProperty have of attachedAtari Corporation your drive, turn on the15 June, 1995 + +4 | | | | | | | 1 i | | | 1 | q i | | ! { : i \ i i i ‘ '{ i | / + +15 June, 1995 + +Jaguar CD-ROM [i VGA ; 3 | the ’ the opposite opposite | 3 Attach = “DSP”. q with three three | ‘ : plugging 3 plugged . protruding the CD-ROM CD-ROM Pe connector to to 2. j o e 7 j a | 2 7 _ : + +| + +. + +| | + +: | : | + += 1 : 1 + +| q + +Page 16 - Falcon030, and watch for your SCSI drive to show up in the list of devices displayed on the VGA monitor during boot-up. Turn off the Falcon030. + +4. Ensure that the ribbon cable is attached to the Falcon030 to Jaguar connector. Connect the ribbon cable to the Falcon030 to Jaguar Interface connector. The red stripe should be on the opposite opposite side of pin #1 of the connector. If you had an older system, this is the reverse of the old setup. Attach the Falcon030 to Jaguar Emulator adapter card to the Falcon030 back panel connector marked “DSP”. + +**==> picture [602 x 330] intentionally omitted <==** + +**----- Start of picture text -----**
+| 6. Connect the CD-ROM and Falcon. The CD development system contains a simple PCB with three three | ‘ :
ribbon cable connectors as shown in Figure 3-A. All three connectors are keyed to prevent plugging 3
them in incorrectly. The cable attached to the Falcon030 to Jaguar connector should always be plugged .
; into the grey connector oriented differently from the two black connectors. The ribbon cable protruding
| from the CD-ROM unit should be connected to the black connector on the outside to use the CD-ROM CD-ROM Pe
unit normally and disable emulation. Connect the cable from the CD-ROM to the inside connector to to 2.
a emulate and disable the onboard mechanism. j o
Connect to CD-ROM e
| for normal operation. 7
| | Connect to CD-ROM j a
[| tor emulation. | 2
a ae |
,
ae to Jaguar connector. 7
/ | Connect to Falcon030 _
a a5 | :
: ae =
**----- End of picture text -----**
+ + +Figure 3-A — Three-Header Connector + +That's it. The setup is done. If any of the above steps could not be accomplished, despite having allthe bits and pieces and following the instructions, please contact Jaguar Developer Support. + +To start using the Authoring Tool, turn on the Falcon030, wait for the desktop to appear and press the F1 key (or double-click on the file "CDROM.PRG"). Follow the Jaguar CD-ROM Authoring Tool With Emulator Users Guide to create a CD-ROM Table of Contents based on your SCSI drive's files. + +4a : 15 June, 1995 Confidential Information AR Property ofAtari Corporation © 1995 Atari Corp. | + +Page 17 + +| + +HE Jaguar CD-ROM yGOr Jaguar CD-ROM Authoring Tool WithEmulator | | The Jaguar CD-ROM Authoring Tool with Emulator provides a simple yet comprehensive user interface for creating sessions and tracks for a CD-ROM, and emulating the real hardware. To create tracks, the user specifies the files constituting a track. The data files can be audio/video data or | executable code. + +: | : | | i | | : 4 i | : 4 { j 4 ' + +4 4 "| Ai if + +| This software emulates CD-ROM by reading data from a large MS-DOS formatted SCSI hard disk drive. The SCSI identifier for the drive must be specified to the emulator. Failure to do so may result in the emulator refusing to initialize. Please refer to the section How to set the SCSI identifier. + +! Fe lw | —-To[ create][a] new document, choose "New" from[ the][ File] Menu. The Authoring Too][ will][ create][ a] new document and will ask for a Title for the document. The window will show only one row saying “End of CD-ROM...”, since you have not specified any files yet, as shown in Figure 4-A. + +. + +**==> picture [320 x 219] intentionally omitted <==** + +**----- Start of picture text -----**
+CO ROM File Edit Search Options
This is a Test COROM Title... g
7 Sessions = @,
-qunber of Sesslons 20, Tracks = 0, Files=@
unber_of Sessions = Ss TracksTrask =are@, Files_1 tangth= @ [Coment |
End of CORON...x |
{
| |
1| — =. 5
‘Figure 4-A — Creating a new CD-ROM Table of Contents Document
**----- End of picture text -----**
+ + +To open an existing document, choose “Open” from the File Menu. A file selector box will be presented in which you can select the document you want to open. Clicking on "OK" will open the document you just selected. The Authoring Tool will check for the validity of the files constituting the tracks in the document and update the position/length for each of them. + +Page 18 JaguarCD-ROM fi -@3 ‘Description Of The Authoring Window nc cc Ge CDROM File Edit Search Options i» ec; 4 Nunber of Sessions = 2, Tracks = 5, Files = 72 [8:82:88 | 88:14:71 = | I” PBALL.CDR_[pney.cOR |, ~——6:23215660 || 68:06:00BB: 87:61 | GB;81:61 | ThisThis isis another9 sanple sanpleconnent..t.conné:| | 44 BAT.CDR 00497 | 88:87:64 |eoseoras) —RC“‘COCCC*SS | T_T BSKULL.CDR | £6948 | 88:12:32 | 88:88:87 4 | Teupele.cor | 73844 | 88:12:39 | 88:88:32 i ba e | | Track # 3 88:16:71 | | 10548 /00:20:71 | oerepras{ be BUGGY COR 31596 |88:25:04 | 00:00:16 | 8 Figure 4-B — A CD-ROM Table of Contents Document _ The Authoring Window is divided into various parts, as shown in Figure 4-B. The top row of the " window contains the “Title” (user specified) for the document. The second row contains the total | 3 number of sessions, tracks and files used in this document. The next row contains the column headings, | ‘ arranged as follows : og © The first column contains the current session number, current track number or filenames used to create the track. The tracks in a session are indented two characters inside the session to which they _ belong, and the files are indented further by two characters inside the track to which they belong. ? © The second column contains the length of the files in bytes. The entries for session or track in this _ column are empty. fe * The third column contains the start of the item on the CD-ROM in terms of it's time code position, am also referred to as it's "time-stamp". ¢ The fourth column contains the length of the item in terms of time code. | ° The fifth and last column contains the user specified comments for each item. a4CurrentitemintheWindowCurrentitemintheWindowWindow = 0 The CD-ROM document opens in a window and presents itself in a hierarchical CD-ROM document opens in a window and presents itself in a hierarchical document opens in a window and presents itself in a hierarchical opens in a window and presents itself in a hierarchical in a window and presents itself in a hierarchical a window and presents itself in a hierarchical window and presents itself in a hierarchical and presents itself in a hierarchical presents itself in a hierarchical itself in a hierarchical in a hierarchical a hierarchical hierarchical structure of of Sessions/Tracks/Files. The “cursor” “cursor” is a row-window, row-window, indicated by a thick border around the current by a thick border around the current a thick border around the current thick border around the current border around the current around the current the current current j + +| + +q + +{ : : j 1 | | 1 / j : : 4 : | + +| : ] ' + +> a4CurrentitemintheWindowCurrentitemintheWindowWindow = 0 The CD-ROM document opens in a window and presents itself in a hierarchical CD-ROM document opens in a window and presents itself in a hierarchical document opens in a window and presents itself in a hierarchical opens in a window and presents itself in a hierarchical in a window and presents itself in a hierarchical a window and presents itself in a hierarchical window and presents itself in a hierarchical and presents itself in a hierarchical presents itself in a hierarchical itself in a hierarchical in a hierarchical a hierarchical hierarchical structure of of Sessions/Tracks/Files. The “cursor” “cursor” is a row-window, row-window, indicated by a thick border around the current by a thick border around the current a thick border around the current thick border around the current border around the current around the current the current current j row, as shown in Figure 4-B. Most of the editing operations work on the current row, depending upon whether it is a session or track or file. + +| + +15 June, 1995 + +Confidential Information FR Property ofAtari Corporation + +© 1995 Atari Corp. | + +@& = Jaguar CD-ROM Page 19 Eq isSavingADocument @ _snorder to save a document choose “Save” or “Save as” from the File Menu. For “Save As”a file f selector dialog will appear and prompt you for the output path and filename. + +i i j | j | fi / 1 | i i 1 | q i i t a : 4 i4 4 iq ; q y 4 q + +| + +. 4 ' + +7 + +S| @e~@ + +#6RditingACDROMDocument In the CD-ROM document, each session should have at least one track and each track should have at least one file. While editing a CD-ROM document, if the Authoring Tool finds that there are no files in a track or there are no tracks in a particular session, it will enter the required items automatically. If a new track is entered, then the subsequent tracks are renumbered. The default filename entered is “Untitled”. This is true for all editing operations. + +47 (lasertingASession — i In order to insert a new session in the document at any position, choose “Insert Session” from the Edit Menu, as shown in Figure 4-C. This command inserts a new session before the current item. This function is disabled if it is not possible to insert a new session at the current row. A session should contain at least a track and each track should contain at least a file. + +**==> picture [534 x 387] intentionally omitted <==** + +**----- Start of picture text -----**
+CD ROM File Search Options
(Nunber oy ETiteees o|
of Sessi fo 2|Se | |
; Peete ay Connent i |
| [ Session #e | delete (bell ea
GEM tosent Session (F3) dastkem |
: TRABY.COR | Insert Track | [F2) Bi@iG1 {This is a sanple connent...}
"[BALL.COR |InsertFile CF1) Bragsa3 | This is another sanple conn ea
rack& 2 b----mnnnnnnn---
BSKULL.COR| Add Comments...nnn ooCFS] no progie7|2843 | a
BUBBLE.COR| casz rile Nene... tray pigessz|
BUBBLS.COR | __ 40548 | 08:20:73 a
Figure 4-C — Inserting a New Session
In order to insert a new track in the document at any position, choose “Insert Track” from the Edit
. : -
/ ‘ 6 Menu. This command inserts a new track before the current item. This function is disabled if you can
not enter a new track at the current row. A track should contain at least one file.
: © 1995 Atari Corp. Confidential Information “FR Property ofAtari Corporation 15 June, 1995
**----- End of picture text -----**
+ + +i + +15 June, 1995 + +| Page 20 Jaguar CD-ROM | 8 InsettingAFie| + +i , { + +| | ‘| | : | : j 1 ' j + +: 1 + +| i : : j ; :' ' | + +In order to insert a new file at any position, choose “Insert File” from the Edit Menu. This command inserts an “Untitled” file before the current row. This function is disabled if you can not enter a file at the current row. . + +> 410EditingAFilename##§ == = The Authoring Tool always enters an “Untitled” file of length zero when you create a new file.In order to edit this filename, use the cursor keys to make it the current item. Moving the mouse pointer over to the filename and clicking on it will also make it the current item. Now, choose “Edit Filename” from the Edit Menu to select a new filename. A file selector box will appear showing you the disk structure of the current SCSI drive being used. You can traverse through sub-directories and files on the disk and select the filename you want for the current item. The Authoring Tool will update the time code stamps for each item in the window. + +In order to provide some description for each item constituting the CD-ROM, the user can specify a description up to 64 characters long. To enter the description for a particular item, make that item the current item and choose “Add Comments” from the Edit Menu, as shown in Figure 4-D. A dialog box will appear where you can type the description you want for the item. This dialog box will also appear if you double click the mouse over the “comments” area for any item. + +**==> picture [318 x 217] intentionally omitted <==** + +**----- Start of picture text -----**
+CO ROM File Edit Search Options _
This is a Test Title... 0:
“Hunber of Sessions = 2, Tracks = 5, Files = 72 a
| Size | Start | Length | Comment 1 |
i__| BABY. COR 319688 This is a sample comment... —
WM BALL. cor 6232 } 06:07:61 | 00:00:83 | This isanother sample comme
— | Hee...Fri ENTER CONKENTSaaaTO SE ADDED ne iSpigiS|i
LBURPLE.COR | 76916 06:80:33 | Si
12] f
Figure 4-D — Entering Comments
**----- End of picture text -----**
+ + +**==> picture [2 x 14] intentionally omitted <==** + +**----- Start of picture text -----**
+}
**----- End of picture text -----**
+ + +7 + +15 June, 1995 + +Confidential Information FR Property ofAtari Corporation + +© 1995 Atari Corp. + +Page 21 + +Jaguar CD-ROM mura a + +i ' ] | : | | | | { | ‘ 4 ' ‘ \ :\ + +| | ait pieterencas = Specifying Léad-in/lead-out for Sessions & The Jaguar CD is a multi-session “Orange Book Standard” CD. The whole CD and each session within : it contains certain specific regions. In order to specify length of such regions to the emulator, choose | “Preferences” from the Options Menu. These regions may be lead-in/lead-out for sessions or the pause | eo regions around the tracks, etc... + +i + +4 The Authoring Tool provides common editing operations like Cut/Copy/Paste/Delete to make editing a + CD-ROM document easy. In order to cut, copy or delete items from the document, first select the items 4 and then choose “Cut”, “Copy” or “Delete” from the Edit Menu. “Cut” will copy the items to the me clipboard and delete them from the document, “Copy” just copies the items to the clipboard and - “Delete” deletes the items from the document. If the clipboard contains CD-ROM document | information already, you can paste that information to the document. The information added from the | clipboard will go immediately before the current item. During these operations, if the Authoring Tool | — finds that any of the sessions are emply, it will enter a track for you. If any of the tracks are empty, it ~~ will enter an untitled file in those places for you. The Authoring Tool always updates the time code # _sstamps for each item after each editing operation. / | Ce | — Inorder to undo the last editing operation, choose “Undo” from the Edit Menu. { gaaeoie Session ee ae inorder to move to a specific session, click on “Goto Session” from the Search Menu. + +j mene ee q In order to move to a specific track, click on “Goto Track’ from the Search Menu. + +CMC You can also find a particular item by using this option. + +© 1995Atari Corp. + +4 + +Confidential Information “JPR Property ofAtari Corporation + +15 June, 1995 + +**==> picture [602 x 729] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 22 Jaguar CD-ROM a
| 418Preferences—SpecifyngSCSiiD§. «el
CD-ROM hardware emulation is performed by reading data from a large SCSI drive. Before this can be 4
done,dialogthe box. SCSIFailureidentifierto do sofor the may driveresult must bein the emulatorspecifiedrefusingto the emulatorto initialize. by means of the :Preferences || @2
419Preferences-HowtosetthesCslidentiier§ §.§.. ss, s§- s SaZ
The identifier of a SCSI device defines the number of the device set on its jumpers. The emulator , |
expects this identifier to be specified through the preferences dialog box, and the emulator will use this
identifier to access the data on that device. Sometimes, for an encased SCSI device, this identifier can , 8
be set by means of a rotary dial on the back of the case. In other SCS] modules, the ID can be set with 1 ]
dip switches. Consult the owner's manual of the SCSI sub-system or drive you are using. i o3
3S
| 420Preferences-—CD-ROMLatency=
Different latency periods can be specified to the emulator by choosing “CD-ROM Latency” from the fe
Options Menu, as shown in Figure 4-E. In our experience, these values are very ‘worst-case’. You | o
should probably set all of these values to zero since the existing defaults do not properly represent a %
| production CD. If you are doing timing critical stuff you should burn a real disc to conduct your tests
on.
Ca CD ROMaFile Edit Searchcm OTS$iatisTALL Cine Taniameasurements areSonain SeMunberOeof milliseconds 2 a 3Pog::
: Initial Spi (Single Session, 10 Tracks)...ecssesseevees4088) |p
4 |_Humbe u bach piditvonel session, Addi csccrcvreceerererescuveees 568 as 4 i
Each additional track, add....scscsereesseenereseeeeees1868 fi
| ' it Stop disc and park the Readseccessesesvcreveeeeresereevees
Te From middle of disc, addscssccccssereseserseesesesseres1080 [psd |
Fron outside edge, addsssiscversvseareecevseesseceenees2808 fT Es)
rt £068 bane
: i) Pause to ready for next Conmand....sssesvesereeeserseereres 1880 frm. ]
; | Ttrél uUnpause to start of data flow. .ciesecessrsesseessereeneenss 167 - j
ql i] Short seek within 1 minute span lacated in 1st 37 minutes.. 258 |
q | Short seek within 1 minute span located in 2nd 37 minutes.. 375 fs i
: ,— Long seek Kithin @ to 20 minutes..c.ssecsesevereserererses 588 [>i q
j | Sess} Long seek Within 21 to 40 minutessiseresscsecerseeseeeeeees 625 Fo
: TTpy| bong seek within AL to GB minutesscssecssererserversereses 758 | }
: LL Long seek within 61 to 74 MiMUtES...secererersresecrseeeees 1808 a
' i Long seek within 6 to 74 minutes (Single Session)......... 1508 ae :
i io" tp For each additional session, adds.csssvccsserseeeeeeess 250 fo fee) 4
j
{ : Long seck within 6 to 35 minutes (Single Session).......5. 759 |
_ For each additional session, add...sseceseeereerseerees 258 fe
: ie] OL
| Figure 4-E — Editing the Latency Table
: The default Jaguar CD-ROM Latency table is as follows: j
I
jOperation Latency Time Recommended
' initial Spin up - single session, 10 tracks es eee
b. Each additional track, add
jj
: 15June, 1995 Confidential Information AR Property ofAtari Corporation © 1995 Atari Corp. §
**----- End of picture text -----**
+ + +| i { i i i \ : | | j | | | | j , 1 | j ]4 | : | : | ] j + +| &, + +**==> picture [546 x 236] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 23
Bi j 43“?™@ JaguarOperationCD-ROM Latency Time Recommended .
WPS’ | Stop disc and park the head p tsecs: | secs. |
| a. From middle of disc, add ee ee
: b. From outside the edge, add PBeces. | secs.
| Pause to ready for next command paosecs._[ Osecs. |
7 Unpause to start of data flow y—47esees: | secs.
a Short seek within 1 minute span, located in 1st 37 minutes 3+/4-se6s- [_Osecs. |
: Short seek within 1 minute span, located in 2nd 37 minutes [aieeces. | __Osecs.
Long seek within 0 to 20 minutes [—aeccs, | secs. __—
4 Long seek within 21 to 40 minutes Peesces, | secs.
3 Long seek within 41 to 60 minutes 3/4-sees- O secs.
Long seek within 61 to 75 minutes eee ee
Long seek from 0 to 74 minutes raeces, | Osecs.
a. For each additional session crossed, add [——daecss, | _Osecs.
| Long seek from 0 to 35 minutes —~“sirsess. | Osecs. |
a. For each additional session crossed, add [——Hrsecs. | secs.
**----- End of picture text -----**
+ + +ne After your various sessions and tracks of the CD-ROM have been specified, this function will emulate | the Jaguar CD-ROM. To start, choose “Emulate CD-ROM” from the File Menu. The emulator will install various drivers and start emulating the CD-ROM by monitoring the Jaguar Console data requests a and respond by sending data to the Jaguar Console, as if the Falcon030 were a Jaguar CD-ROM drive. | ume aaa + +To stop emulation, press the “Esc” key. + +goa Restrictions‘ On The Emulation ee » Data rate is always 95% of doubl / 7.4" > (4, ond vs. 352800). * No CDerrors will occur. ka; oO_ ae4 i .[ine][real][hardware][in][all][cases,][so][the latency] ° _[cveut] aa ;- itadeq . t- Ae ©. 4 by you for your own disc structure's performance profile. ce on Using THE;CD-ROM Emulator Although the emulator allows you to specify multiple files per track, we suggest that you use one file per track. This way the emulator will give the best performance, when you compare it to an actual CDROM drive. The reasons for this are as follows: + +© 1995 Atari Corp. Confidential Information JER Property ofAtari Corporation + +15 June, 1995 + +Page 24 + +. + +Jaguar CD-ROM + +7 + +i + +| + +|Z : ¢ | @ | # Ee [ | Es | | BS | : a + +| + +| | } + +| | + +1 + +The CD-ROM emulator allows you to add multiple files on each track on the CD. In order to do this, the emulator adds zeroes at the end of each file, so that the files are a multiple of 2352 bytes. This is done internally, and it does not effect the files on your SCSI drive. + +In order to get the best performance from the emulator on the Atari Falcon030, version 2.0 of the emulator does this padding process differently. First the emulator adds zeroes at the end of each file so that the length of file is a multiple of 16K, and then it adds zeroes further so that the files are now a multiple of 2352 bytes in length. Again, this is done on the fly by the emulator as the files are sent tothe Jaguar and it does not effect the files themselves on the SCSI drive. . + +Note that a lot of emulated space on CD-ROM is wasted in order to get the best performance from the emulator. This does not mean that your file layout on tracks should waste this kind of space. Thisisthe reason you whould use only one file per track in practice. Therefore, the user should layout different files on a track and create one big file and specify it as one track to the authoring and emulation system. The version 2.0 accepts the old ‘. TOC’ files from version 1.0. This ‘.TOC’ format is a native format for the emulator. + +## 425 logfileName = s—i“(tw—CCtCee Oe - PreloadBuffes = = = «=—sisisi fOptons Menu) Ee + +These two menu items are not functional yet. The file name entered in Log File Name and the values entered in Preload Buffer Size dialog boxes are ignored. + +1 + +15 June, 1995 + +Confidential Information “FOR Property ofAtari Corporation + +© 1995 Atari Corp. | + +| | ; : j \ i | i ‘ ' I { | | | | | | 1 if | i ; i 4 ; ; : ‘ ; t | i ; : | + +; #0 Jaguar CD-ROM Page 25 ya 5.CD-ROMEmulatorQ&A } There are some common questions that arise even after reading the installation instructions delivered iE swith the CD-ROM Emulation system. We want to address these in this document. g What external hard drive are wesupposed tobuy? Pe ee 1 Answer || The SCSI hard drives we have tested and know work are the Conner Peripherals CFP1060S 4 and CFP 1080S. Using other drives not tested by Atari may not give acceptable results. | An external drive with its own case and power supply is most convenient, which is why we Z include a SCSI-I! cable with the emulation system. How do| prepare and connect the drive for the Emulation System?. a 4 You must format the CD data drive on an Adaptec 1542 SCSI Controller in an MS-DOS based . computer. Set the disk up with a single partition using the Adaptec tools. Now format it under E MS-DOS (you need MS-DOS 5.0 or later to deal with partitions of this size). Do NOT use q DoubleSpace or other real-time disk compression utilities!! : Other SCSI! cards may work, provided they create and use the exact same partition setup as the Adeptec. However, other cards have not been tested by Atari, so proceed at your own risk. | After formatting, copy some of the files that you want to access as CD data to the drive. Switch - 9 your PC and CD data drive off. Disconnect the CD data drive from the PC. Connect it to the y i Ealcon030 emulation computer. Now proceed as detailed in section 3. i] Question |] It looks like | can access the PC formatted drive even from the Falcon030desktop (| can read a and copy file from and to it) - is. something wrong? ees Don't even try to access the PC drive from anywhere except the File Selector dialog within the CD Emulator (see section 4.10). The hard disk partition scheme used by the Falcon030 is very close to that used by MSDOS, but it is not identical. Reading from the PC formatted drive on the Falcon030 will corrupt the internal memory structures of the Falcon030's operating system, which will in turn cause other errors and system crashes. It may even allocate al! of the system's memory in a desperate attempt to make sense out of the PC drive’s directory structure. This can lead to the failure to allocate memory as you start CDROM.PRG so that when you try to access the directory of the external drive you will see: “Error in Fileselektor Box! (Internal Error Number -3000)" Do not install a desktop icon on the Falcon030’s desktop for accessing the emulation data drive. In the event you do accidentally read the PC drive (even just the directory), you should reboot the Falcon030 immediately to avoid problems. Likewise, attempting to write to the PC formatted drive from the Falcon030 will result in a corrupted disk structure, which will require that you repartition and reformat the drive, and then recopy all of your data files to it. Why may | get the message “Internal Error Number 4000"? ee |Z 0 rAnswer_ || You may have set the wrong SCSI ID in the Emulator Software. + +© 1995 Atari Corp. + +Confidential Information “JER Property ofAtari Corporation + +15 June, 1995 + +Page 26 Jaguar CD-ROM Ee Question |]! read data from the emulatorbutwhen | do a memory dump |[see][ a][ region][full][of][ the][ hex][ value] pO | |] SDEAD. oy a oe eee This is the emulators default return value for areas of the virtual disc that don't have any data : ; associated with them such as the lead-in, lead-out regions and prior to and after valid tracks on a. the disc. What is the current distribution of the CD-oriented tools? : 4 As Atari is constantly improving and updating the Jaguar Developer Tools, you should : : periodically check for new revisions on the Atari Software Development BBS or the Jaguar : | Developer's area on Compuserve (See Online Support in the Getting Started section). . j Question || |have problems getting the technical information for the Conner drive, such as Jumper settings poe ; and so on. Where can | get these? . 7 4 & | Answer Call the Automated Conner HelpFax for all your possible drive information requirements. From — | any touchtone phone in the world you can call this number. The machine asks for the number of — q a FAX machine you want to get the information faxed to and directly faxes to that machine. The ; : number of this Automated Conner Fax Service is: (408) 456-4903. { i Adaptec also has an info faxback service for their SCSI controller cards at (408) 945-6776, and a BBS for software updates at (408) 945-7727, Parameters 9600bps, &N1. : Question || | can access the code, but the CD_read routine just stops working after transferring 5-20 { : kilobytes of.information. What might be wrong? : It is likely that you are using a 68000 based vertical blank, interrupt handler that consumes too ; much time. j The time you have within the 68000 Vertical Blank Interrupt (VBL) must be significantly shorter a than the time between two interrupts coming from the CD. Make it short. Do not build object lists j { within the 68000 VBL (this is generally true, not only for CD). q | The Falcon030 crashes everytime | do.a CD_read. What's wrong? ce { : Versions of the CD emulator through v2.02 seem to have a bug where if you try to read data q ; from before the start of the first track or after the data in the last track, the emulator will crash. j | 4 We are working on this problem to remedy it. For now, add padding tracks as necessary to q 1 access your data. : + +q ; + +i1ever15 June, 1995 —— Confidential Information“7O® Property ofAtari Corporation © 1995 Atari Corp. ; + +Page 27 + +| ! | | i | | yj | | | { q . | | ’ 4 : 1 :{ { + +j & Jaguar CD-ROM + +| programming, Procedures, and Guidelines : This is a “living document.” Many of the details are subject to change but there are no expected changes @ that will cause overall structural changes or require changes in game code. @ The Jaguar CD format is raw data and multi-session. Session #0 of a Jaguar CD is an audio-orly } session. It must contain only standard “Red Book” 2udio. This may be used to store future product 4 information, sound track music, etc... No CD title that contains anything other than “Red Book” @ = audio in Session #0 will be compatibility encoded. Atari will probably take the first track(s) for our Gown information. If you have no Red Book audio for your CD title, then you should test and submit = = your CD with at least one “dummy” track in Session #0. : All developer code starts with the next session, Session #1. The first track located in this session will be the boot track. The last track of the last session will contain data used by the Atari authentication code. | The size of this track will be quite small, about 300k or jess. | cnn byfae The beginning of each data track (i.e. Session #1 and above) you provide must contain a specific Atari , a format data header and tailer. The track header must consist of 16 long-aligned repetitions of the ASCH B block ‘ATRI’ (64 bytes) followed by the string: 4 ATARI APPROVED DATA HEADER ATRIx This string is exactly 32 bytes in length. The last character is a special byte that increments for each track. Your first data track (i.e. the boot track) should have an ASCII space character in that position (0x20). In your second data track, this byte should be an ASCII exclamation point (0x21). In your third data track, this bytes should be an ASCII quote character (0x22), etc... Each track must also end with a specific track tailer. The track tailer must consist of the string shown below followed by 16 long-aligned repetitions of the ASCII block ‘ATRI’ (64 bytes). ATARI APPROVED DATA TAILER ATRIx The last byte of the track tailer string should be the same as the last byte of the track header string for the same track. No data should precede a track header or followa track tailer. + +' + +a © 1995 Atari Corp. + +Confidential Information JPR Property ofAtari Corporation + +15 June, 1995 + +Page 28 28 Jaguar CD-ROM Ef 61 TheBootiack = § =§ . £=—@ The boot track has two additional Motorola (MSB-LSB) style longwords that must follow immediately #3 after the track header. The first is a long word that indicates the target address of your startup code and , the second should indicate the length of your startup code in bytes. Your startup code should follow : 4 immediately after these two longwords. The CD Boot ROM will load a maximum of 64k of code at the , 2 location you specify in DRAM and transfer control to the 68000 at the start of this code. Your boot : track may contain data beyond this 68k which will be your responsibility to load, however, the system 2 will only load up to 64k. § When control is passed to your code, the results of a CD_getoc call will be in memory at 0x2C00. Your : code must not call CD_getoc again. Use the table of contents to determine the first track in Session #1. The track number and timecode of all subsequent tracks should then be calculated as an offset to this. 4 Do not reference absolute track numbers in your code because the layout of your CD is certain to : i change after compatibility encoding. . 62CDTrackandSessionlayout=#§= =... § Atari will master your CD using a two second lead-in period at the beginning of each track. The track | . Thestart starttimestimes found ofin everythe table-of-contentstrack, however, willwillchangeaccountasfora resultthis andof thispointprocessto the beginningso you should of yournot relydata.on fF. absolute timings to find your data. You should add a dummy track to your last session to simulate where the compatibilty encoding data : will be placed. This track should be 156,192 bytes in length and may contain any dummy data. Please — note that the final size of compatibility encoding data may vary due to the layout of your CD. zz The first session will have at least as many tracks as you asked for (Atari will probably add one), your _ tracks will be at the end of the session. For example, if you give us a CD for compatibility encoding in (am the following format: . ' Session Track Contents q Developer Audio #1 | Po 8 | Developer BootDeveloper Game CodeData M1 ._ . Pe#5 | Developer Game Data #2 f #6 Developer Game Data #3 _ Developer Game Data #4 | #8 [Dummy End Track (required) ! Atari will master a CD and return it to you in the following encoded format: Session Track Contents , Pet== — __| maybe more Atari maybe more Atari more Atari Atari audio tracks... tracks... j + +> | . + +7 | | + +{ + +' + +7 + +7 + +7 + +| | | j : + +## Page 28 28 61 TheBootiack = § =§ . + +**==> picture [289 x 87] intentionally omitted <==** + +**----- Start of picture text -----**
+Session Track Contents
Pet== — __| maybe more Atari maybe more Atari more Atari Atari audio tracks... tracks...
|
2 [Developer Audio #1
[#8
__[ Developer Audio #2
Confidential Information FR Property ofAtari Corporation
**----- End of picture text -----**
+ + +q + +15 June, 1995 + +© 1995 Atari Corp. ] + +Page 29 + +| gap. + +' + +**==> picture [517 x 358] intentionally omitted <==** + +**----- Start of picture text -----**
+. Jaguar CD-ROM
Session Track Contents
Developer Boot Code
Developer Game Data #1
| #6__| Developer Game Data
ee Developer Game Data #3
Developer Game Data #4
Co ee Atari Compatibility Encoding Data
| —— a
| One goal of the Jaguar CD is to remove the “slow” stigma from CD-ROM. Using a small number of
/ sessions will minimize Startup time.
| At startup, disc authentication takes place. During authentication your code will be scanned for partition
| markers that separate your data into blocks of a managable size. Partition markers are sixteen
| consecutive and identical longwords that are long-aligned relative to the beginning of the track. Each
| track header and tailer, for instance, contains a marker using 16 longwords of ‘ATRI’. Do not use a
sequence of ‘ATRY, 0x00000000, or OxFFFFFFFF for a partition marker.
| We recommend that you break-up any tracks containing more than 1Mb of data with partition markers
ss so that a partition marker occurs approximately between every chunk of data between 128k and 1Mb in
size. This will ensure that the authentication process is reasonably quick. The worst-case authentication
delay will be no shorter than the time it takes to read the data between the two headers with the longest
**----- End of picture text -----**
+ + +| oummannay ee | ‘The best way to minimize loading delay is to plan ahead. Design your software so that there is enough time to load new data in the background. This technique, used in the Cinepak demos, allows continuous | streaming of data many times larger than DRAM with no loading delays. The latest release of the CD - BIOS contains a new CD_initm cali that enables a special version of CD_read that reads continuously into a circular buffer with no extra programming. Designing both the game play and the programming to avoid loading delays will be a significant effort but it will be well worth it. + +| : | : : 4 i : ! F | | i 4| i 4 ; : : F + +The following diagram is a sample of how a boot track and subsequent code/data tracks should be laid out: + +©1995 Atari Corp. Confidential Information FER Property ofAtari Corporation + +15June, 1995 + +Page 30 eee + +JaguarCD-ROM {i + +Po + +Ss { | _ _ q 2 j ‘ ; ; { ' : 4 ] | I 1 | E 4 j ] + +| + +: 3 ' ' | + +| : + +4 : + +|,|First Trackof
=Le
eeeee
Session #1
OT
| ATRIATRIATRIATRIATRIATRIATRIATRI
3
| ATRIATRIATRIATRIATRIATRIATRIATRI
|
SotTrackHeader
j| ATARI APPROVED DATA HEADER ATRI-
:
Addresstoload

———_—
.
BootCode
|
aa SizeofBootCode
00004000
|
00008000
;|First Trackof
=Le
eeeee
Session #1
OT
| ATRIATRIATRIATRIATRIATRIATRIATRI
3
| ATRIATRIATRIATRIATRIATRIATRIATRI
|
SotTrackHeader
j| ATARI APPROVED DATA HEADER ATRI-
:
Addresstoload

———_—
.
BootCode
|
aa SizeofBootCode
00004000
|
00008000
;|First Trackof
=Le
eeeee
Session #1
OT
| ATRIATRIATRIATRIATRIATRIATRIATRI
3
| ATRIATRIATRIATRIATRIATRIATRIATRI
|
SotTrackHeader
j| ATARI APPROVED DATA HEADER ATRI-
:
Addresstoload

———_—
.
BootCode
|
aa SizeofBootCode
00004000
|
00008000
;| +|---|---|---|---| +||||oo j-—— BootCode
Boct Code (Max 64k)
i!
|
:
Other Program Code/
ee
Datamayfollow. Boot
'
Other Code or Data (Optional)
iv
cone isresponsiblefor
i
loading.| +||||| ATARI APPROVED DATA TAILER ATRI
;
Boot
TrackTall
' ATRIATRIATRIATRIATRIATRIATRIATRI
ot
Track
Tater| +||Second Track of||- ATRIATRIATRIATRIATRIATRIATRIATRI

ee| +||Session #1|TTT|TERT TTTST
| ATRIATRIATRIATRIATRIATRIATRIATRI
|
7 TrackHeader
| ATRIATRIATRIATRIATRIATRIATRIATRI
|| +||||' ATARI APPROVED DATA HEADER ATRI!
SST oom
Program Data/Code
' Program Data or Code (about 1Mb)
-
(mustbe long-aligned)| +||||:
Partition Marker (sample| +||||| GAMEGAMEGAMEGAMEGAMEGAMEGAMEGAME
..“__ 4.character sequence)| +||||’ GAMEGAMEGAMEGAMEGAMEGAMEGAMEGAME| +||||aaa
Program Data/Code
More Program Data/Ccde
a
(mustbelong-aligned)| +||||" ATARI APPROVED DATA TAILER ATRI!
| ATRIATRIATRIATRIATRIATRIATRIATRI 7 MackTailer| +|||||ATRIATRIATRIATRIATRIATRIATRIATRI
|| + + + +66UsingRedBookAudio= = = Titles designed for use with Jaguar CD may optionally use Red Book audio as in-game music. Normally this music should be placed on Session #0 so that the user may listen to it in a normal CD player. Optionally, ‘secret’ game audio may be placed on later sessions so that the game can restrict accessto this track until game/level completion etc... Placing Red Book audio on sessions after Session #0 will prevent playback on an audio CD player. + +If your title requires little or no CD access once your code is loaded, you may also, optionally, provide the user with an option to insert another Red Book audio disk for playback during gameplay.The procedure for using multiple discs within a game is contained in the following section. + +| + +15 June, 1995 + +Confidential Information “7O® Property of Atari Corporation + +© 1995 Atari Corp. | + +’ + +Jaguar CD-ROM + +Page 31 + +&.ig 87 | Accessing Additional CD-ROM Dises ) Despite the large amount of data capable of being stored on CD-ROMs, some titles are beginning to appear which require multiple discs. In addition, some games with minimal data requirements may offer the user the choice of inserting Red Book audio discs which can be used to replace in-game audio. The Jaguar CD-ROM BIOS contains a call (CD_switch) which automates the process of accepting a new CD and re-reading the disc’s Table of Contents. Please examine the flowchart below which demonstrates the disc switching process. + +| | | | + +| + +© 1995 Atari Corp. + +Confidential Information “FPR Property ofAtari Corporation + +15 June, 1995 + +; + +**==> picture [600 x 663] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 32 Jaguar CD-ROM | =
|i | WaitCall for CD_stop completion’ in —=
mode. | | @
| | a Do | io: iB
1| Display graphic; requesting i; Call :: | i i A +o | i ; 7 | | :: .ae
' | the correct [disk] . [ from][ the] [rm] i ' [CD_][ switch.] :: |i Wait for lid to open. tiii Wait for lid to close. ' | : : oe
' : H i DG @
' . { . c ae
\ : No Was a CO inserted? : : a
; : : i Yes : j Ae
: :
N 6: | i riot
Parse TOC at s2c00 : S developer : la | Read Table of Contents | > |
ct C i to $2C00. rf or 4
. : code.} : 1 : | itt
}|‘
i
' -— TOC is multi-session but isn't requested disk — EF
4iLoad ne de/data H 3
a
a |} TOC is requested multi-session disk. —— wee e/data as i ;
i | i : desired. ' 3
|:
’| — TOC is single-session (audio) <7 4 4
i beg Nl De you support audio? q
Yes 4
‘ | Allowand user begin to playback. select track, CONTINUE- } |:
' | |
ji : 1
**----- End of picture text -----**
+ + +q + +Confidential Information aN Property ofAtari Corporation + +**==> picture [1 x 17] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +15 June, 1995 + +© 1995 Atari Corp. + +Page 33 + +Jaguar CD-ROM + +: | L q 4 '4 F I : 4 I 4 | ' | q j | ; ’ i : | | : q : + +| + +## Un rn + +Now that you’ve read all about the format of a track on a Jaguar CD, you are ready to master your first disc. The first thing you need is a computer system with a CD-Recordable Writer. Next, you need a CD Mastering software package and some idea of how to use it. Finally, you need data to put on your CD. There are many CD-Recorder/Players and CD mastering software packages to choose from today. are many CD-Recorder/Players and CD mastering software packages to choose from today. many CD-Recorder/Players and CD mastering software packages to choose from today. CD-Recorder/Players and CD mastering software packages to choose from today. and CD mastering software packages to choose from today. CD mastering software packages to choose from today. mastering software packages to choose from today. software packages to choose from today. packages to choose from today. to choose from today. choose from today. from today. today. At Atari we use a Phillips CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec we use a Phillips CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec use a Phillips CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec a Phillips CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec Phillips CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec CD Recorder connected to a 486-based PC machine using an Adaptec Recorder connected to a 486-based PC machine using an Adaptec connected to a 486-based PC machine using an Adaptec to a 486-based PC machine using an Adaptec a 486-based PC machine using an Adaptec 486-based PC machine using an Adaptec PC machine using an Adaptec machine using an Adaptec using an Adaptec Adaptec SCSI host adapter. host adapter. adapter. We have not tested other recorders or platforms, they may work just fine for have not tested other recorders or platforms, they may work just fine for not tested other recorders or platforms, they may work just fine for tested other recorders or platforms, they may work just fine for other recorders or platforms, they may work just fine for or platforms, they may work just fine for they may work just fine for may work just fine for work just fine for just fine for fine for creating Jaguar CDs, but require different configurations. Jaguar CDs, but require different configurations. CDs, but require different configurations. but require different configurations. require different configurations. different configurations. configurations. Note that some developers have reported that some developers have reported some developers have reported developers have reported have reported reported problems using some of the new generation of less-expensive CD recorders to create multi-session discs using some of the new generation of less-expensive CD recorders to create multi-session discs some of the new generation of less-expensive CD recorders to create multi-session discs of the new generation of less-expensive CD recorders to create multi-session discs the new generation of less-expensive CD recorders to create multi-session discs new generation of less-expensive CD recorders to create multi-session discs generation of less-expensive CD recorders to create multi-session discs of less-expensive CD recorders to create multi-session discs less-expensive CD recorders to create multi-session discs CD recorders to create multi-session discs recorders to create multi-session discs to create multi-session discs create multi-session discs multi-session discs discs (a Jaguar CD requirement). Jaguar CD requirement). CD requirement). requirement). + +] There are many CD-Recorder/Players and CD mastering software packages to choose from today. are many CD-Recorder/Players and CD mastering software packages to choose from today. many CD-Recorder/Players and CD mastering software packages to choose from today. CD-Recorder/Players and CD mastering software packages to choose from today. and CD mastering software packages to choose from today. CD mastering software packages to choose from today. mastering software packages to choose from today. software packages to choose from today. packages to choose from today. to choose from today. choose from today. from today. today. At Atari we use a Phillips CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec we use a Phillips CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec use a Phillips CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec a Phillips CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec Phillips CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec CDD-522 CD Recorder connected to a 486-based PC machine using an Adaptec CD Recorder connected to a 486-based PC machine using an Adaptec Recorder connected to a 486-based PC machine using an Adaptec connected to a 486-based PC machine using an Adaptec to a 486-based PC machine using an Adaptec a 486-based PC machine using an Adaptec 486-based PC machine using an Adaptec PC machine using an Adaptec machine using an Adaptec using an Adaptec Adaptec SCSI host adapter. host adapter. adapter. We have not tested other recorders or platforms, they may work just fine for have not tested other recorders or platforms, they may work just fine for not tested other recorders or platforms, they may work just fine for tested other recorders or platforms, they may work just fine for other recorders or platforms, they may work just fine for or platforms, they may work just fine for they may work just fine for may work just fine for work just fine for just fine for fine for creating Jaguar CDs, but require different configurations. Jaguar CDs, but require different configurations. CDs, but require different configurations. but require different configurations. require different configurations. different configurations. configurations. Note that some developers have reported that some developers have reported some developers have reported developers have reported have reported reported problems using some of the new generation of less-expensive CD recorders to create multi-session discs using some of the new generation of less-expensive CD recorders to create multi-session discs some of the new generation of less-expensive CD recorders to create multi-session discs of the new generation of less-expensive CD recorders to create multi-session discs the new generation of less-expensive CD recorders to create multi-session discs new generation of less-expensive CD recorders to create multi-session discs generation of less-expensive CD recorders to create multi-session discs of less-expensive CD recorders to create multi-session discs less-expensive CD recorders to create multi-session discs CD recorders to create multi-session discs recorders to create multi-session discs to create multi-session discs create multi-session discs multi-session discs discs (a Jaguar CD requirement). Jaguar CD requirement). CD requirement). requirement). The CD mastering software used most often at Atari is CeQuadrat’s WinOnCD Pro and Easy CD Pro y3.0 from InCat Systems. These packages both run under Microsoft Windows’ and allow you to make discs in different formats such as CD-DA (Digital Audio), ISO 9660 CD-ROM, and CD-XA. a Atari has not had any success creating Jaguar discs with the current version of Corel CD Creator. ft ma 7 requires Windows WAV sound files as input for creating tracks on an CD-DA disc and won’t work with y. 0 raw binary files. See section 7.1.1 for more information on this situation. | 74a rw veakon mastering sotiwaré won't Work With Binary Riles. + +A Jaguar CD looks very much like a standard audio CD, except that it is multisession. In most CD Mastering software programs, you specify “Audio” or “Raw” as the track type. Unfortunately, some CD mastering software packages, such as Corel CD Creator, do not have the ability to create a “Raw” track, and do not allow you to create an audio track from a raw binary data file. They require that the file must look like an AIFF or WAV audio file, even though the AIFF or WAVE file wrapper is removed prior to the data being written to the disc. Atari supplies a tool known as the Jaguar CD Track Creator that is used to create a track file for CD mastering from the Jaguar program and data files you specify (see section 7.2 for more information). However, the current version of this tool has no option to add an AIFF or WAV wrapper to the files it creates; this must be done as an additional step afterwards. The MKAIFF tool included in the Jaguar Developer’s Kit as part of the Jaguar Sound & Music tools can be used for this purpose right now, but this feature will be added to future versions of the Jaguar CD Track Creator program. An early approach to this problem was the FilmToAIFF option of the Jaguar Cinepak Utilities program. However, this only works with Jaguar Cinepak Film files, which isn’t the only thing you'll . b. Vvr needoption to no put longer onto a beJaguar used. CDFor disc. moreThere informati are **o** thern see the problems Cinepak For Jaguar as well, and we recommend chapter. that this + +5 Ip fact, we are currently mnning them under the beta release of Windows 95 (build 4.00.347). ol995 Atari Corp. Confidential Information FER Property ofAtari Corporation + +i + +15 June, 1995 + +Page 34 + +Jaguar CD-ROM + +7[s] + +The best solution is to select a CD Mastering package that doesn’t have any restrictions regarding what 7 type of files can be used as source data. See section 7.1 for information about the CD mastering package used by Atari. P | eeddd C—rt~—”—CN—C~COCUOSCzsCOtSRSCSON Note that some CD-ROM mastering software automatically inserts two seconds worth of silence (150 g blocks at 2352 bytes each = 352800 bytes) at the start of each audio track it creates. If your CD-ROM | @ mastering software does this, you should turn this feature off if possible. If you can’t turn it off, you | @ should consider getting. a new CD-ROM mastering* software package. Until you do that, you will have Reae to account for this extra data whenever reading data from the CD. | « 7.2dJaguarCDIrackCreator§=#= =... Cf In order to put your data into the proper format for creating a CD track, Atari supplies the Jaguar CD _ Track Creator program. This program runs under Microsoft Windowsé and allows you to create track = ? files suitable for mastering a Jaguar CD disc. Figure 7-A shows what the program looks like on screen Pe when you run it. fk : ee 1 JaguarCOTrack Creator ee | ; | en lr , | pre | neg (0 | j Figure 7-A — Jaguar CD Track Creator : The Jaguar CD Track Creator takes care of all the dirty work of merging all of your data files together and creating a track file with the proper header and tailer (as described in section 6.1). You provideita ] j list of files, and it combines them into a single large file, separated by a 64-byte partition sync marker of 4 : your choosing, complete with the proper track header and tailer information. If you specify track #0, it : also inserts the fields for the load address and size of your boot code. | 6 It has been tested with Windows 3.1, Windows For Workgroups v3.11, and Windows 95 beta 4.00.347. | ; 15 June, 1995 Confidential Information FER Property ofAtari Corporation © 1995 Atari Corp. 4 + +Page 35 + +) | , + +. | i | | | + +§) Jaguar CD-ROM § TheJaguar CD Track Creator takes two different categories of files as input. The first category consists of the files that contain your Jaguar program code, graphics, music, sound effects, and so forth. The second category is a batch file that lists all of the files from the first category that must be merged together into a CD track file. Clicking on the Browse button next to the Batch Filename edit box at the top of the window will bring up a standard Windows file selector dialog and allow you to select the name of your batch file that contains the list of files that wiil be used to construct your track, along with the partition sync marker codes that will be used for each file. Optionally, you may simply type in the filename. The batch file is an ASCII file that has one or more lines of information (separated by CR/LF) with the name of your data file, a Tab character (ASCII 9), and a 4 letter code that will be repeated 16 times to create a 64-byte partition sync marker that will delineate the beginning of this particular file within the track (see Figure 7-C and Figure 7-D). At runtime, your code will search for this 64-byte block and know that the desired data comes immediately afterwards. Section 7.2.1.2 shows a sample batch file. In this example, we are creating a file for our boot track. &. ae boot code is contained in the file GAJAGUAR\PROJECT\BOOTCODE.BIN, so the first line of the a batch file contains this filename followed by a and then the 4 letter partition sync marker “CODE”. This is followed on the second line of the batch file by the file name for our title screen data, G:AJAGUAR\PROJECT\TITLESCR.RGB, which is followed by a and the four letter partition sync marker “SCRN”. Finally, the last line of the batch file specifies the last file of the track, our music score which is contained in G:\JAGUAR\PROJECT\MUSIC.DAT, and a partition syne marker of “MUSC”. ASL LLL MALL LALA G:\ JAGUAR\PROJECT \BOOTCODE.BIN CODE Gs \ JAGUAR\PROJECT\TITLESCR.RGB SCRN G:\ JAGUAR\PROJECT \MUS IC.DAT MUSC Figure 7-B — Contents of sample batch file + +The Track Filename, Header Filename, Structure Filename, and Log Filename fields specify the filenames that will be used to create your output files. These fields are filled in automatically when you Browse your input Batch Filename, using derivatives of the batch filename. You can also type in the L ~ filenames or use the file selector by selecting the Browse button next to the desired field. + +: + +| + +© 1995 Atari Corp. + +Confidential Information JER Property ofAtari Corporation + +15 June, 1995 | + +i. + +**==> picture [606 x 719] intentionally omitted <==** + +**----- Start of picture text -----**
+. _ Page 36 Jaguar CD-ROM ‘
ee r—~—r—<=The Track Filename field specifies the name of the raw track file that will be created. This file is ready j
— to pass to your CD mastering software to create a CD track.? The file created will have the structure '
1 shown in Figure 7-C if you have specified track #0. '
| ! ATRIATRIATRIATRIATRIATRIATRIATRI | Track Header
| ATRIATRIATRIATRIATRIATRIATRIATRI /
ATARI APPROVED DATA HEADER ATRI! |
;
{ Address to load _antfa ~F Size; of Boot Code: 4 :
|
BootCode =‘! 90004000 «= | ~=—— 00008000—Ss¥ |
i|
-——- Beot Code ia
Boot Code (Max 64k) ;
nl Bie talk | CODECODECODECODECODECODECODECODE | characterPartition Marker sequence for 2nd repeated file in boo16 t trackimes) ((4 ; |
may follow the {| CODECODECODECODECODECODECODECODE |
: boot code, but Sennen EEE Program Data/Code taken from 2nd file |
j the boot code | 7 — specified for track (Size must be long- :
: is responsible * Program Data or Code (about 1Mb) / aligned} §
for loading it. Le ;
| ATARI APPROVED DATA TAILER ATRI! | -—~ Track Tailer 4
| ATRIATRIATRIATRIATRIATRIATRIATRE
| | ATRIATRIATRIATRIATRIATRIATRIATRI | | =
Figure 7-C — CD Boot Track Structure iz
| Track #0 is handled specially because of the requirements of the boot code. First note that the boot code §
| block does not have a partition sync marker in front of it (such as the “CODE” marker preceeding the E
{ next program data/code block). This is because the boot code is loaded for you automatically by the :
system, and must always be at a specific offset from the track header anyway, so there’s really no need :
for your program to have a specific partition marker for this particular data. |
If you have specified a track other than #0, the track file structure will be as shown in Figure 7-D. The ,
| main difference is that there are no fields for the load address and code size of your boot code and that gq
| the first file is not treated specially, so it gets the partition sync marker specified in your batch file. |
While it’s true that the partition sync marker is not absolutely required for the first chunkof data in a
track, because you could use the track header instead, it is included because it makes it easier for your a
program to deal with all of your code and data files in the same way, regardless of their position within
a track. :
7 See section 7.1.1 for additional information which may be relevant. 1 :
1 15 June, 1995 Confidential Information FR Property ofAtari Corporation © 1995 Atari Corp. q
**----- End of picture text -----**
+ + +: oe : , : i | i | a 4 ' + +**==> picture [540 x 265] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 37
@ Jaguar CD-ROM
- | ATRIATRIATRIATRIATRIATRIATRIATRI | /——~— Track Header
aP| | ATRIATRIATRIATRIATRIATRIATRIATRIATARI APPROVED DATA HEADER ATRI! [/
EEE nanan Partition Marker for 1st file (4 character sequence
a. | CODECODECODECODECODECODECODECODE |/ repeated 16 times)
| CODECODECODECODECODECODECODECODE
: oo4 Program Data/Code taken from 1st file specified
i
: ] | Program Data or Code (about 1Mb) a for track (Size must be long-aligned)
Pjq { i Partition Marker for 2nd file (4 character sequence
4 | CGAMEGAMEGAMEGAMEGAMEGAMEGAMEGAME A repeated 16 times) .
| GAMEGAMEGAMEGAMEGAMEGAMEGAMEGAME
i _— Program Data/Code taken from 2nd file specified
: | More Program Data/Code 4 for track (Size must be long-aligned)
!
i
| ATARI APPROVED DATA TAILER ATRI! ——— Track Tailer
| ATRIATRIATRIATRIATRIATRIATRIATRI 4
! ATRIATRIATRIATRIATRIATRIATRIATRI !
{
**----- End of picture text -----**
+ + +Figure 7-D — CD Track File Structure + +The Header Filename field defines the name of a file that will be created by the Jaguar CD Track Creator with definitions corresponding to the order of the files within the track. If the C Language Output option of the Options menu is selected, the file created will be a C language header file. See Figure 7-E for a sample C language header file created from the sample batch file in section 7.2.1.2. + +**==> picture [328 x 67] intentionally omitted <==** + +**----- Start of picture text -----**
+#define FILE_ G: \JAGUAR\PROJECT \ BOOTCODE 0
#define FILE_ G: \JAGUAR\PROJECT\TITLESCR i
#define FILE_ G: \ JAGUAR\PROJECT\MUSIC 2
Figure 7-E — Sample C Language Header File
**----- End of picture text -----**
+ + +If the Assembly Output option of the Options menu is selected instead, the file created will be a Madmac , assembly language include file. See Figure 7-E for a sample Madmac include file created from the sample batch file in section 7.2.1.2. + +Ll, + +A. + +FILE_ G: JAGUAR\ PROJECT\BOOTCODE equ 0 FILE_ G: \JAGUAR\PROJECT\TITLESCR equ i FILE_ G: \ JAGUAR\PROJECT\MUSIC equ 2 Figure 7-F —- Sample Madmac Assembly Language Include File | + +: + +**==> picture [2 x 24] intentionally omitted <==** + +**----- Start of picture text -----**
+i
**----- End of picture text -----**
+ + +© 1995 Atari Corp. + +Confidential Information “FER Property ofAtari Corporation + +15 June, 1995 + +| 4 Page 38 38 JaguarCD-ROM 722.3 Structure Filename (.Cor"S})) The Structure Filename Structure Filename Filename field defines the name of a source code the name of a source code name of a source code of a source code a source code code file that will be created by that will be created by will be created by be created by created by by the Jaguar Jaguar F CD Track Creator with Track Creator with Creator with with an array of structures containing of structures containing structures containing containing information about the the files placed placed into the : a track file. There will be one element be one element one element element in the array for each each file placed into the track file. In “C”, the 4 structure is defined defined as: 2 typedef struct { E int track; a long block_offset; . long length; a long marker; | #8 } FILEDATA; - The track field indicates the track number where the file is located. The block_offset field indicates the {| 4 offset, in CD blocks, from the beginning of the track to where the file data is located. The length field , oF specifies the length of the file data in bytes. The marker field specifies the 4 byte partition sync marker ie used for this file. ; 8 If the C Language Output option of the Options menu the C Language Output option of the Options menu C Language Output option of the Options menu Language Output option of the Options menu Output option of the Options menu option of the Options menu of the Options menu the Options menu Options menu menu is selected, selected, the file created will will be a C language C language language : source file containing containing an array of FILEDATA structures. of FILEDATA structures. FILEDATA structures. structures. See Figure 7-G for 7-G for for a sample C language sample C language C language language f o8 source file created from the sample batch batch file in section 7.2.1.2. _ FILEDATA fd[] = { { 0x01, 0x00000000, 0x0004BA04, 0x57494E47 }, /* FILE_ G:\JAGUAR\PROJECT\BOOTCODE CODE */ { 0x01, 0x00000083, 0x0000EA04, 0x46494C32 }, /* FILE_ G:\JAGUAR\PROJECT\TITLESCR SCRN */ 1 1 { 0x01, 0x0000009D, 0x0000009C, 0x3344534F } /* FILE_ G:\JAGUAR\PROJECT\MUSIC MUSC */ { Figure 7-G — Sample C Language 7-G — Sample C Language — Sample C Language Sample C Language C Language Language Structure File | | ] If the Assembly Output option of the Options menu the Assembly Output option of the Options menu Assembly Output option of the Options menu Output option of the Options menu option of the Options menu of the Options menu the Options menu Options menu menu is selected instead, selected instead, instead, the file created will be created will be will be be a Madmac Madmac ] assembly language source file. See Figure Figure 7-E for for a sample Madmac include sample Madmac include Madmac include include file created from created from from the ; sample batch batch file in section 7.2.1.2. j fd:: dc.w $01 4 dce.1 $60000000,$0004BA04,$57494E47 ; FILE_ G:\JAGUAR\PROJECT\BOOTCODE CODE j de.w $01 de.1 $00000083,$0000EA04,$46494C32 ; FILE_ G:\JAGUAR\PROJECT\TITLESCR SCRN 4 dce.w $01 : de.1 $0000009D,$0000009C,$3344534F ; FILE_ G:\JAGUAR\PROJECT\MUSIC MUSC : Figure 7-H — Sample Madmac Assembly — Sample Madmac Assembly Sample Madmac Assembly Madmac Assembly Assembly Language Structure File Pe eee eeldllC—~<“‘OCCOCOCOCOiwitCUMRldllC—~<“‘OCCOCOCOCOiwitCUMR , 4 155 |The Log FilenameThe Log Filename Log Filename Filename field specifies the filename filename of a file file that will be created will be created be created created as a log of the the entire track creation process. This file contains basically basically the same information about each file used to create the track as what what is shown shown in Figure Figure 7-G, except in in a more human-readable more human-readable human-readable text format. format. j 15 June, 1995 1995 Confidential Information Information TR Property ofAtari Corporation ofAtari CorporationAtari Corporation Corporation © 1995 1995 Atari Corp. Corp. 4 + +Page 38 38 + +| The Structure Filename Structure Filename Filename field defines the name of a source code the name of a source code name of a source code of a source code a source code code file that will be created by that will be created by will be created by be created by created by by the Jaguar Jaguar _ CD Track Creator with Track Creator with Creator with with an array of structures containing of structures containing structures containing containing information about the the files placed placed into the | track file. There will be one element be one element one element element in the array for each each file placed into the track file. In “C”, the structure is defined defined as: | typedef struct + +| If the C Language Output option of the Options menu the C Language Output option of the Options menu C Language Output option of the Options menu Language Output option of the Options menu Output option of the Options menu option of the Options menu of the Options menu the Options menu Options menu menu is selected, selected, the file created will will be a C language C language language : source file containing containing an array of FILEDATA structures. of FILEDATA structures. FILEDATA structures. structures. See Figure 7-G for 7-G for for a sample C language sample C language C language language source file created from the sample batch batch file in section 7.2.1.2. : FILEDATA fd[] = { 7 { 0x01, 0x00000000, 0x0004BA04, 0x57494E47 }, /* FILE_ G:\JAGUAR\PROJECT\BOOTCODE CODE */ : { 0x01, 0x00000083, 0x0000EA04, 0x46494C32 }, /* FILE_ G:\JAGUAR\PROJECT\TITLESCR SCRN */ 1 { 0x01, 0x0000009D, 0x0000009C, 0x3344534F } /* FILE_ G:\JAGUAR\PROJECT\MUSIC MUSC */ ‘ Figure 7-G — Sample C Language 7-G — Sample C Language — Sample C Language Sample C Language C Language Language Structure File q If the Assembly Output option of the Options menu the Assembly Output option of the Options menu Assembly Output option of the Options menu Output option of the Options menu option of the Options menu of the Options menu the Options menu Options menu menu is selected instead, selected instead, instead, the file created will be created will be will be be a Madmac Madmac ; assembly language source file. See Figure Figure 7-E for for a sample Madmac include sample Madmac include Madmac include include file created from created from from the sample batch batch file in section 7.2.1.2. fd:: dc.w $01 dce.1 $60000000,$0004BA04,$57494E47 ; FILE_ G:\JAGUAR\PROJECT\BOOTCODE CODE 1 de.w $01 f de.1 $00000083,$0000EA04,$46494C32 ; FILE_ G:\JAGUAR\PROJECT\TITLESCR SCRN : dce.w $01 de.1 $0000009D,$0000009C,$3344534F ; FILE_ G:\JAGUAR\PROJECT\MUSIC MUSC Figure 7-H — Sample Madmac Assembly — Sample Madmac Assembly Sample Madmac Assembly Madmac Assembly Assembly Language Structure File Pe eee eeldllC—~<“‘OCCOCOCOCOiwitCUMRldllC—~<“‘OCCOCOCOCOiwitCUMR , 155 |The Log FilenameThe Log Filename Log Filename Filename field specifies the filename filename of a file file that will be created will be created be created created as a log of the the entire track creation process. This file contains basically basically the same information about each file used to create the : track as what what is shown shown in Figure Figure 7-G, except in in a more human-readable more human-readable human-readable text format. format. j q 15 June, 1995 1995 Confidential Information Information TR Property ofAtari Corporation ofAtari CorporationAtari Corporation Corporation © 1995 1995 Atari Corp. Corp. 4 + +## 722.3 Structure Filename (.Cor"S})) + +{ Jaguar CD-ROM Page 39 aa cL rrr—“—™—s—CC—”—C”CCOC;siNCSOSUCUsCOCdidsCCCCts 7 | The bottom of the main screen shows a number of options for the track being created. . | ee ,,rrr~—rs—wCiCS aCRCCSCSCQCS@RSCNCCsCisCi;szC®”tC ‘Bs This field specifies the track number of the track being created. The track number is placed into the | track header and tailer information (see section 6.1). : If you specify track #0, the program recognizes the first file in your batch list as being your program’s @ boot code. The track file created follows the format shown in Figure 7-C. Also, the Boot Code Load/ExecAddress and Boot Code Size fields become visible. + +' : : | . 4 + +j + +7 i | H + +: yess EadaitrackPadding + +**==> picture [316 x 25] intentionally omitted <==** + +**----- Start of picture text -----**
+rrr—“—™—s—CC—”—C”CCOC;siNCSOSUCUsCOCdidsCCCCts
**----- End of picture text -----**
+ + +For any track number other than zero, the track file created follows the format shown in Figure 7-D. The Boot Code Load/Exec Address and Boot Code Size fields are removed from the screen. + +## 70S Best Code Wadiexec Adress + +. + +, + +When you have specified track #0, this field allows you to specify ihe desired load address for the code in the first file listed in your batch. + +“Wp jg, When a track other than #0 is specified, this field is not available. + +This field allows you to specify the desired amount of extra padding information that will be added at ' the end of the track. | Le rt—rtia_ONrsCtisC@CiC ia‘NCOWwiCNRSCNCSCCSCCSCs«CNCtiészs ia‘NCOWwiCNRSCNCSCCSCCSCs«CNCtiészs + +## rt—rtia_ONrsCtisC@CiC ia‘NCOWwiCNRSCNCSCCSCCSCs«CNCtiészs ia‘NCOWwiCNRSCNCSCCSCCSCs«CNCtiészs + +When you have specified track #0, this field allows you to specify the length of the code and data in the boot code contained in the first file listed in your batch. This value is placed into the boot track header that the program creates for the tile (see section 6.1). + +; + +When a track other than #0 is specified, this field is not available. + +## ol ,,rmmrtrtr~—~COCOCOWCOUCCCCCCCCCtCUt + +| + +The menu bar of the Jaguar CD Track Creator allows you to set options that contro] how the program operates, begin processinga track file, or quit from the program. + +f= + +i © 1995 Atari Corp. Confidential Information “7O® Property ofAtari Corporation 15 June, 1995 + +Page 40 + +Jaguar CD-ROM + +rrrtr—~ picture [160 x 75] intentionally omitted <==** + +**----- Start of picture text -----**
+0 _ daguar CO)
eet! Output Track Data i
ae Output Header & Structure File
a 4 © Language Output :
**----- End of picture text -----**
+ + +Figure 7-3 — The Options Menu + +When checked, the Output Track Data item in the Options menu causes the Jaguar CD Track Creator to merge the source files specified by your batch file into a new track data file suitable for CD mastering, as described in section 7.2.2.1. When unchecked, the track data file is not created. + +When checked, the Output Header & Structure Files item in the Options menu causes the Jaguar CD Track Creator to create the files described in sections 7.2.2.2 and 7.2.2.3. When the menu item is unchecked, these files are not created. + +When checked, the Output Log File item in the Options menu causes the Jaguar CD Track Creator to create the log file described in section 7.2.2.4. When the menu item is unchecked, this file is not created. + +The status of the C Language Output and Assembly Output menu items determine what file format is used to create the files described in sections 7.2.2.2 and 7.2.2.3. Only one item can be checked at a time. + +**==> picture [11 x 15] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +§ + +15 June, 1995 + +Confidential Information “7% Property of Atari Corporation + +©1995 Atari Corp. + diff --git a/docs/atari-jaguar-1999/07 - The Jaguar Voice Modem.md b/docs/atari-jaguar-1999/07 - The Jaguar Voice Modem.md new file mode 100644 index 00000000..5395ff67 --- /dev/null +++ b/docs/atari-jaguar-1999/07 - The Jaguar Voice Modem.md @@ -0,0 +1,750 @@ +Pagel + +7 Jaguar Voice Modem + +| + +| . : | | i + +@ Please note that the Atari Jaguar Voice Modem section of the documentation is still undergoing We significant revisions to properly outline the various requirements for tasks such as making a call or { answering an incoming call. If this section ofyour documentation is more than two months old, #Bsoplease contact Jaguar Developer Supportfor an updated revision. 7 ci 2 | The Jaguar voice modem is a high performance (v32terbo) DSP based modem, with many additional @ features and modes which make it particularly suitable for an interactive and consumer friendly game , environment. : In the rest of this section, we discuss: | The Modem Interface ‘ Data Communications and Bandwidth g Flow Control s. Data Parsing ; AP Call Waiting @ We then conclude with a summary of the commands and unsolicited responses used in voice plus data mode. A full reference manual of all commands is available but not complete yet. This manual is only | necessary for full featured fax and data communication systems (without simultaneous voice). + +nets & ‘The interface between the Jaguar and modem is via the built in Jaguar UART. Communications in both | directions, are in the form of 2 or 3 byte packets, at a baud rate of 57600 or 19200 (1 start bit, no parity, | 2 stop bits). After reset, all communications are initiated by the Jaguar. Typically, Jaguar will send a command to | the modem, and the modem will respond. In simultaneous voice plus data applications, we usually reduce the baud rate between the modem and Jaguar, in order to ease the interrupt response requirements. The Jaguar can also enable various types of "unsolicited" data packets from the modem. In this case the modem may send a data/eommand packet to the Jaguar unsolicited. These unsolicited packets are iG typically used for incoming data, call waiting detection, loss of the line, and other errors. Commands from the Jaguar to the Modem are always sent as a two byte packet, with the least | significant byte sent first. + +: + +. + +|. + +©1995 Atari Corp. + +Confidential Information “FOR Property of Atari Corporation + +26 April, 1995 + +Page 2 + +Jaguar Voice Modem + +j 1 ; = q | @ 7 | + +: Replies from the Modem to the Jaguar are sent as two byte packets, with the most significant byte (usually the command byte) first. The modem will also send a padding byte of OxFF prior to a packet if | there wasa significant gap since the previous packet. : The Parse data flow diagram shows how to handle received data. + +In voice plus data mode (known hereafter as SVD - simultaneous voice plus data), compressed voice j - : data is sent over the telephone line in packets which have a one byte header. Game data packets canbe B inserted into this data stream at any time with a one byte overhead. The game data packets actually : @ interrupt the voice data stream to keep transport latency to an absolute minimum (which is necessary for Bs good interactivity). | = Developers need to understand the data bandwidth which is available, and then decide which packet | sizes are most appropriate for their game. The following equations describe the available bandwidth: ; Be Total data bandwidth = Line Speed / 8 (in bytes per second) j 7 [Modem data is sent with an embedded clock, with no need for start or stop bits] ; o@ Voice data bandwidth = (Voice sampling frequency/4) + (Voice sampling frequency / (4*Voice packet size **)** . This gives you the voice data bandwidth, in bytes per second. This shows that each voice sample uses2 | # | data bits - or 4 samples per byte, and each voice packet has a one byte overhead. e Game data bandwidth = (number of game data packets per second) * . | (game data packet size + x) 7 (x = 1 in normal mode, 2 for error detection mode) { The following table shows the voice sampling rates that the modem will use by default (assuming 80 1 | byte voice packets, and the default adaptive voice sampling rates): : | SpeedLine BytesTotalPer SampleVoice VoiceRate Data PacketVoice HeadersVoice BytesVoicePer RemainingBytesPer : j Second Rate Size Second Second q | P68{| 210 **0** s ea000| i700 |802.25 1721.25 | 378.75 | | |74400}1800 [5600 | 140080-*+| 75 | tai7s |[3005] | | | 12000 1500 11700 |[8013.75] 1113.75 |[386.25] | | 9600 7200 [ 3200 [ 800 [so T0800890 The Remaining bytes/second are available for data packets. Game data packets have a one byte j j overhead each, plus an additional overhead byte for error detection. Note that you MUST use a form of 4 ; error detection, since errors do occur over the line. Error correction is usually achieved by requesting = j fi 126 April, 1995 Confidential Information “POR Property ofAtari Corporation © 1995 Atari Corp. + +| | | 4 " | + +Page 3 + +4 + +|||Page 3|Page 3|Page 3| +|---|---|---|---|---| +|Ef
@,) "
|
~||JaguarVoiceModem
hatthepacketberesent. So,assumingaworstcasedatarateof378bytesper second,thefollowing
datapacket options are possible:||| +||||TotalData Rate
DataPacket
(Bytes/Sec)
Size|Packet
Overhead|TotalPacket
PacketsPer
TotalData
Size
Second
(Bytes/Sec)| +||||se||so| +||||ose||eo
Ee| +||||Asyoucansee,thesmallerthedatapacket size,theless
bytespersecond). However,thesmalJerpacketsdoprovide||lessefficientthismethodis(intermsofthetotal
provideahigher packet-per-second rate,whichwill| +|||increaseuserinteractivity.||| + + + +- | bytes per second). However, the smalJer packets do provide a higher packet-per-second rate, which will increase user interactivity. + +- ; Example code is provided for initialization and overall flow control, and we suggest everyone use it. ae Once the two modems have completed "handshaking", the users will be able to talk over their headsets, + +- &. : @ whilst the Jaguars send each other data packets. | The Jaguar game will need a “Modem” option selection screen. This will allow selection of any of the following items: 1. Call. This brings up an edit field to enter the number to dial. When entered and OK selected, the modem will go off hook and dial the number. The user will hear the dialing via her headset. If the line is answered, she will be able to talk to the answerer via the headset. If there is no answer, she can select “Hang up”. + +- 2. Hang up. This will doa graceful cleardown (i.e. cause both ends to hang up together) if the modem was communicating digitally with the other end. If the modem was still in analog mode, it will simply hang up the line. + + 3. Answer. This is the selection used by the answerer after the two parties have verbally agreed over the analog line to play the game. This selection will mute the headsets and commence + +4. Adjust voice volume An outline of the Modem commands used for each of the four options listed above is given below. , _,, by w@ Example code is also available, and a flow chart is included. Details of each command are given at the — ~ end of this section. + +## i. + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +7 | 4 i i | 1 i | | | | : | |[‘] | | oH : + +© 1995 Atari Corp. Confidential Information “JPR Property ofAtari Corporation + +26 April, 1995 + +Page 4 + +Jaguar Voice Modem + +| ‘ = _ + +| + +.....§.§.§|©§©@.§©6—6pllCl.6.AUUUDChUCClt + +q | a 1 : ; y ‘ + +‘4 2 4 ae = a . u te e + +q + +: + +**==> picture [27 x 22] intentionally omitted <==** + +**----- Start of picture text -----**
+-
**----- End of picture text -----**
+ + +**==> picture [433 x 658] intentionally omitted <==** + +**----- Start of picture text -----**
+Prompt User for |
number todial ;
: Initialize Modem as caller
{ t
Go off hook ,
| Wait for dial tone PO Rial Tone
| Dial number cs
, 2 r- : Report "No diai tone" |
/ Offer"Hang up" —
\. option to User
| requested?Hangup >——yes— Go On Hook |! q
' No ‘ a
No :
~
ke—No Tone detected? 4
oN va Main Menu j
Yes
|3
'
~
| Magic DTIMF 1
sequence? E
Yes q
| Send DTMF reply | i,» )
sequence \ 4
Confidential Information “70® Property ofAtari Corporation © 1995 Atari Corp. |
**----- End of picture text -----**
+ + +26 April, 1995 . + +‘ 1 Jaguar Voice + +Page 5 + +| j = | | : q q i a + +Modem + +**==> picture [507 x 492] intentionally omitted <==** + +**----- Start of picture text -----**
+Report “Handshake in|
i progress"
; |
:
Wait up to 15 seconds |
! forhandshaking |
a ~ oO \ .
Z Timeout F 2 Yes —+/ a
on or rant ° ( Report "Line Error’: |
:
~~Less thanbps? 9600a Yes \ goodReport enough“Line not fer; : 4
— L Voice plus Data" / -
Report connection rate | GoOnHook =|
nn
i/ Start Game } /
\ } ‘ Main Menu >
KC’
**----- End of picture text -----**
+ + +Command Response Description FFFF Reset modem and do a seff test. . Eg (.FFFE rnone __| Set baud rate to 19200 / W OO0F TOOOF ___| Enable echo back of commands Bo00 Enable Analog Line to Headset connection r2cso._—+i|2cso. Set this modem up as a Caller, and enable call waiting detection | Ee Ee Set miscellaneous configuration items A021 A021 _| Set target error rate to better than 1 in 10e6 bits (i.e. minimum) i. © 1995 Atari Corp. Confidential Information “JER Property ofAtari Corporation + +26 April, 1995 + +Jaguar Voice Modem Qin be + +: + +q 3 4 a . , 8 e + +| + +, ; + +| + +q + +4 + +i 4 + +Page 6 + +**==> picture [513 x 219] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||| +|---|---|---|---|---| +|m=|Command|Response|Description| +|FFFE|(no tone detected).|No timeout here|- users are talking.| +|If no tone|is ever detected,|the Caller will|never see the “Handshake|in| +|progress” status,|but the users will|still be able to talk and discuss the problem||| +|over the analog|line.| +|When magic tone|is detected...| + +**----- End of picture text -----**
+ + +## eo i + +## =... + +## Command Response + +4 4 | : © 1995 1995 Atari Corp. Corp. | + +' nn 1 26 April, 1995 Confidential Information TER Property ofAtari Corporation © 1995 1995 Atari Corp. Corp. + +t ( ' 1 q : + +éI | Jaguar——————————————————ee— Voice Modem + +s + +i + +**==> picture [158 x 10] intentionally omitted <==** + +**----- Start of picture text -----**
+, Page 7
**----- End of picture text -----**
+ + +**==> picture [3 x 10] intentionally omitted <==** + +**----- Start of picture text -----**
+4
**----- End of picture text -----**
+ + +**==> picture [3 x 24] intentionally omitted <==** + +**----- Start of picture text -----**
+:
**----- End of picture text -----**
+ + +**==> picture [387 x 513] intentionally omitted <==** + +**----- Start of picture text -----**
+\
Go off hook
‘‘i \ "HangPrompt up anylines" User other to \}|
| \. OK, or QUIT /
x
User selected Ves { Hang up NO
' "QUIT"? \ Goto Main Menu =’
"OK"?
“a User selected
Hl jf
|
i Yes\ \
No
Send Magic DTMF sequence |
// [Response] Report "No [ from] \ —_a
j i heck \ No DTMEF reply within
\ oT actions? s 4 seconds?
\ ok or Quit ¢ ~
— a
Yes
laaN
**----- End of picture text -----**
+ + +Page 8 + +Jaguar Voice Modem + +i + +q + +**==> picture [324 x 6] intentionally omitted <==** + +**----- Start of picture text -----**
+4‘
**----- End of picture text -----**
+ + +**==> picture [604 x 627] intentionally omitted <==** + +**----- Start of picture text -----**
+;| Report "Handshake in | |
q | progress" | d :q
q | Wait up to 15 seconds ; —_
| | forhandshaking | a
: " i wD 4 : eo
: Timeout or Fail? >———Yes——>\ Report "Line Errore 4 =
: NZ ——- | Pe
|
|No | i:
\
! ;
Less than 9600 ~ eport Line no 4
' bps? Yes———*__ good enough for —_ |
“ \._ voice plus data"? ; ; ee
|
|
Go On Hook j
| Report connection rate| | 1
1 4
|4 a ‘ Main Menu /: Ej
( Start Game ) Ne 4
Command Response Description 4
FFFF Reset modem and do a seff test.
' FFFE Fnone _—_| Set baud rate to 19200 '
OOOF Enable echo back of commands 4
1 Booo Enable Analog Line to Headset connection j
1 2480 Set this modem up as an answerer, and enable call waiting detection q
26 April, 1995 Confidential Information “AER Property ofAtari Corporation © 1995 Atari Corp. §
**----- End of picture text -----**
+ + +m — ff Jaguar Voice Modem + +Page 9 + +**==> picture [559 x 351] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||| +|---|---|---|---|---|---|---|---|---|---| +|&'|a|_|Command|Response|Description|;| +|"{3952|||3952|Set|miscellaneous configuration|items| +|A021|A021|Set target error|rate to better than|1|in|10e6|bits|(i.e.|minimum)| +|:|F207|F207|Enable|unsolicited|error|detection codes| +|Bé02|B602|Enable|error detection mode| +|Set|data|packet|size| +|B405|Set voice|packet|size to 80|bytes| +|A37E|TAS7E___||Enable|loss|of|line|detection| +|A060|A060|Go|off|hook| +|Prompt user “Hang up any other hand sets”||| +|||;| +|Wait for|user to|acknowledge|other|lines|are|hung|up| +|Send|magic|DTMF|sequence| +|6800|Poll DTMF tone|detector for magic DTMF|reply sequence| +|FFFE|(no tone|detected).|Timeout|after 4 seconds| +|if timeout,|prompt|user “No response from|caller modem.|Check modem| +|connections”| +|Wait for acknowledgment,|then go|to “Send|magic DTMF sequence"| +|When|magic|reply|detected|...| +|» i|O|[zx|2460|Display “Handshake in progress” status message.| +|8000|8000|Start|Handshake| +|8100|Poll for handshake successful|(timeout|after|15 seconds)| + +**----- End of picture text -----**
+ + +& + +Once the modem has been initialized, and handshaking has occurred, data transmissions are possible. A flow chart for received data is given below: + +**==> picture [2 x 19] intentionally omitted <==** + +**----- Start of picture text -----**
+.
**----- End of picture text -----**
+ + +© 1995 Atari Corp. + +Confidential Information “FER Property ofAtari Corporation + +26 April, 1995 + +Page 10 + +Jaguar Voice Modem + +J + +q + +| . |goe q a 1 a ] . q bg ] **a** :: 4 : 7 : ‘ + +=q ‘ : | |{ + +**==> picture [566 x 633] intentionally omitted <==** + +**----- Start of picture text -----**
+Main data Parse loop
2 Bytes ready? >——No ——-» Exit ! |
=q NN | putPutbytebyte x cxii n packet)packet | |
$FOxx? wa Yes———> buffer :
— Discard Byte 8—a
ws | Mark Packet as “Good".
$FF? —————Yes——-»; Point to next packet. +}
“ i buffer. —____—__>
No
x- SF3xx?NN> Yes $F301? S——No—+} TransmitDiscard “Resend* packet. |———_——_—_——_—_,:
> x command : ;
No
$B1FF? Pause game | Report "Call \
Yes——> | Waiting" Cc
| eport "Line Lost -\
| possibly call if ya)
SA4xx? Yes $A4x1?DO) Yes waiting at other \G0 to D in "Call :|
i
1iNo | | j 4
|
woe L___no | Discard Byte Pair bt ;
{ Modem Error \ | :
**----- End of picture text -----**
+ + +**==> picture [2 x 16] intentionally omitted <==** + +**----- Start of picture text -----**
+:
**----- End of picture text -----**
+ + +26 April, 1995 + +Confidential Information FER Property ofAtari Corporation + +© 1995 Atari Corp. + +] | + +Page 11 + +: g + +1 4 pw | j : 4| q + +{ ; ' + +Jaguar Voice Modem [nee The line which gets a call waiting tone will receive the unsolicited data packets $BiFF then $A4??. The = other line will just get a $A4?? packet. Both ends will then immediately go into analog line mode, @ which will allow them to talk, and for the call waiting receiver to ask the other party to wait while she q picks up the call waiting. She then selects the “go to call waiting” box, which flashes the line for her, @ has the conversation, then selects “reconnect”, which will flash the line again (back to the first party), and send the magic DTMF tone sequence - starting handshake again. + +**==> picture [379 x 448] intentionally omitted <==** + +**----- Start of picture text -----**
+» C i
NY
"Flash to other = \
( line"
: “Hangup" ]
\"Restart game" _/
Flash Line \e-Yes :
No .
a . ves GoOn Hook
:
No
( Main Menu t
yes
{ Goto Ein "Answer" \
**----- End of picture text -----**
+ + +© 1995 Atari Corp. + +Confidential Information FER Property ofAtari Corporation + +26 April, 1995 + +, 2 + +Page 12 + +Jaguar Voice Modem a + +: , + +| | : | + +j + +initiate:Report SofiwareReset = OXFFER ' function: This command causes the Voice Modem to reset all parameters to the default conditions. 3 , After resetting, the Voice Modem will return the self-test result executed during the _.. previous POR\. This command may be issued at any time. CAUTION: care should be f 4 taken because the command will clear all operating parameters to the default | = values. | = The Modem will internally issue the following commands during reset: ° Command Name Command Code : “ Set Configuration Word 1 0x2480 | @ Set Configuration Word 2 [Ox8952 | | = Enable Unsolicited Error Detection Responses OxF207 Set Bit Error Rate Target 0xA021 Connect Headset to Analog Line [ OxB00O "Ff : a Since it is not always possible to determine whether the modem host baud rate is set to { 8 57600 or 19200, the following procedure is recommended for issuing the reset command: | . ¢ Send Reset command at 57600 f * Ifa sucessful response (0xB800) is received within 1 second, then exit reset ‘ : ¢ Ifa response is not received within 1 second, issue the reset command at 19200 and j ignore the response (if any) * Then issue a reset command again at 57600, and wait for the response. : response: The response is returned at a host baud rate of 57600, after the reset is completed and j - within about 1 second. It is in the form 0xB80x where x has the bit form: 4 [DSP] [AFE] [ROM] [SRAM] where 0 is a pass and 1 is a fail. Thus a successful self-test will give a response of 0xB800. 4 default: N/A ; + +| + +|| | | 4 + +Command Reference For Voice PlusData Unless otherwise noted, all values are in hexadecimal. + +. + +26 April, 1995 + +Confidential Information “PER Property ofAtari Corporation + +© 1995 Atari Corp. } + +Page 13 + +| Jaguar Voice Modem + +| + +| | + +function: Set host baud rate to 19200 Only reset {OxFFFF} can change the baud rate back to 57600. + +- | response: none | default: N/A + +| connsconenasn Telanaiog ane 0 i EE | function: Allow the headset to be used as a telephone handset, as if it were directly connected to the analog line. (In reality, a digital connection is made between the line Codec and the headset Codec) + +## i EE oxBone” + +- This command will also cause the modem to switch to SVD mode immediately after handshaking is complete. + +; response: The command will be echoed back within 1.2ms | ca:_—_ ee ene function: This command writes 12 bits, specified by nnn, to the modem Configuration Word 1. Bits 0-5 specify the modem type, and bits 6-11 specify other modem configuration items. The meaning and function of these bits are described below. + +Meaning Bit: 11 10 9 8 r4 6 A TC -atcecimeectRemote toopRequet| | tor { {|_| easeveawxrak | | ft potrt t _ Gockel |, | fotet | Peek smedwADOK |_| | ti ftet i _ TE eisable calwating detecton || | 1 {|e} eened Modem Type Data Rate(bit eemavs: s) Modulation Bit 5 4 3° 20) o an Piss 420 yaawrow | tofo}ot oto) 0 Vzbe ea Ce aoe ___—1 i799 [orsk__f feo fot to) t peel 2i2Aog ___ ——— **——** T100—segg_—_[rskfroesk [ff **e** Peoo yet ttte a Tosco Trek eet eo fo Beles ____—iovenaioo trek | fefpoyr tote) 7 We ___———tse0g_——_foaw fo frye tot tt 28 ___——1fao0_—[orsk Jo fa peta te te Vs as00_—Torsk ro Peet bt |. ©1995 Atari Corp. Confidential Information ‘FPR Property of Atari Corporation 26 April, 1995 + +Page 14 14 + +2 a: + +| | | : | be | q | | + +vir SSsté—é—“—S AG PAM TCM TCM OT Pt Et Po} oO Plo | | Bit 11: | Answer/Call - selects the answer mode or answer mode or mode or or call] mode handshake sequence for the modem mode handshake sequence for the modem handshake sequence for the modem for the modem the modem modem type a selected. This should only be changed when only be changed when be changed when changed when when the modem modem is off-line. off-line. | @& Bit10: Accept/Reject Remote Loop Request Loop Request Request - this will will allow or disallow response or disallow response disallow response response to remote digital remote digital digital z be loopback when requested by the far-end modem. when requested by the far-end modem. requested by the far-end modem. by the far-end modem. the far-end modem. far-end modem. modem. This is valid for V.32terbo/V.32bis/ is valid for V.32terbo/V.32bis/ valid for V.32terbo/V.32bis/ for V.32terbo/V.32bis/ V.32terbo/V.32bis/ V.32, . V.22bis, V.22 and and Bell 212 modem modem types. This may be changed may be changed be changed changed at any any time. —. ; re Bits 9-8: Tx Clock Clock - this selects this selects selects the source of the transmit bit timing, source of the transmit bit timing, of the transmit bit timing, the transmit bit timing, transmit bit timing, bit timing, timing, either locked to locked to to the external external ; . clock XTCLK, XTCLK, internal on-board crystal or locked to the received clock RDCLK RDCLK derived — from the far-end modem modem signal. | Bit 7: Enable call call waiting detection _ Bit 6: Reserved - this bit is reserved for future use and should be set to 0. | of - Bits 5-0: Modem Type - these 6 bits select the modem type desired. When selecting a V.32terbo/V.32bis/V.32 configuration, the desired rates should be defined using the Set Rate} | Sequence Command 1NNN. The combinations of these two commands would have the j effect of either setting a single speed, negotiating within a restricted set of speeds or allowing | all possible speeds. When using a test command, the highest rate enabled is used. 9 response: The command is echoed back within 1.2 ms after it was written. 4 : default: 2480 hex _ | SetConfigurationWord2 tT function: This command writes 12 bits, specified by nnn, to the modem Configuration Word 2. ] | _ The meaning and function of these bits are described below. 4 Meaning Bit: 11 109 8 7 6 5 4 3 2°14 ~«~0 | Reserved st—“‘;STTTTTTUCUTLTTLC UTE Ur } 26 April, 1995 Confidential Information PER Property ofAtari Corporation © 1995 Atari Corp. + + +**==> picture [500 x 294] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---|---| +|Page 14 14|Jaguar|Voice Modem| +|Modem|Type|Data|Rate(bit|s)|Modulation|Bit|5|4|3|2|1|0| +|vir|SSsté—é—“—S|AG|PAM TCM TCM|OT|Pt|Et|Po}|oO|Plo||| +|Bit|11:|||Answer/Call|-|selects|the answer mode or answer mode or mode or or|call] mode handshake sequence for the modem mode handshake sequence for the modem handshake sequence for the modem for the modem the modem modem|type| +|selected.|This should only be changed when only be changed when be changed when changed when when|the modem modem|is off-line. off-line.| +|Bit10:|Accept/Reject|Remote Loop Request Loop Request Request|-|this will will|allow or disallow response or disallow response disallow response response|to remote digital remote digital digital| +|loopback when requested by the far-end modem. when requested by the far-end modem. requested by the far-end modem. by the far-end modem. the far-end modem. far-end modem. modem.|This is valid for V.32terbo/V.32bis/ is valid for V.32terbo/V.32bis/ valid for V.32terbo/V.32bis/ for V.32terbo/V.32bis/ V.32terbo/V.32bis/|V.32,| +|V.22bis,|V.22 and and|Bell|212 modem modem|types.|This may be changed may be changed be changed changed|at any any|time.| +|Bits 9-8:|Tx Clock Clock|- this selects this selects selects|the source of the transmit bit timing, source of the transmit bit timing, of the transmit bit timing, the transmit bit timing, transmit bit timing, bit timing, timing,|either locked to locked to to|the external external| +|clock XTCLK, XTCLK,|internal|on-board|crystal|or|locked|to|the|received|clock RDCLK RDCLK|derived| +|from|the|far-end modem modem|signal.| +|Bit|7:|Enable call call|waiting|detection| + +**----- End of picture text -----**
+ + +Page 15 + +| + +| + +| Jaguar Voice Modem Meaning + +**==> picture [184 x 32] intentionally omitted <==** + +**----- Start of picture text -----**
+Bit: —eo 8 TT 8S 8
**----- End of picture text -----**
+ + +- Se xT a as a ss + +- | Bitli: Enable/Disable Answer Tone - the function of this bit depends on the state of Bit 11 of Configuration Word 1. When an answer mode handshake is selected (Configuration Word 1, + +- j Bit 11 = 0), clearing this bit enables the transmission of 3600 ms of 2100 Hz tone prior to ; beginning the appropriate handshake sequence according to V.25 recommendation. Setting this bit to one causes no 2100 Hz tone to be transmitted prior to the handshake sequence. When an originate mode handshake is selected (Configuration Word 1, Bit 11 = 1) this bit + +- | has no effect. This bit is not used with Bell 103 or Bell 212A modem types and will have no ' effect if these modem types are selected. This bit may be changed at any time. | Bits 10-9: Tones Selection - these two bits allow the generation of 550 and 1800 Hz guard tones for | V.22bis and V.22 answer modes and echo protection tone for V.33, V.17, V.29 and V.27ter half-duplex modes. For other modem types, no tone (00) should be selected. These bits should only be changed when the modem is off line. + +- Bit 8: Enable/Disable Auto-mode - this feature supports Annex A of V.32terbo/V.32bis/V.32 CCITT recommendations and EIA PN-2330 (draft proposal) for automode handshake which allows the Voice Modem to automatically determine the mode of the far-end modem + +- | during handshake and to reconfigure itself appropriately. This feature works if the far-end modem is a V.32terbo/V 32bis/V.32, V.22bis, V.22, V.21, V.23, Bell 212A or Bell 103. + +- | Bit 7: Dial-up/Lease-Line - this bit modifies the handshake from normal dial-up to a specitied 1 leased-line sequence if applicable. | = Bit. 6: Enable/Disable Auto-retrain and Auto-rate Renegotiation - if this feature is enabled, the Voice Modem will initiate a retrain or a rate renegotiation if the actual mean square error (MSE), which represents signal quality, is higher or lower than a dynamically set threshold. + +- : For a more detailed explanation refer to Section 8.2. Bits 5-4: Async/Sync Select - these bits function in conjunction with Configuration Word 2, bit las follows: If Configuration Word 2, bit 1=0 (serial data), then async mode is selected with bit 5-0. Bit 4 allows the choice of normal operation in the +1.0% to -2.5% rate range Or + +- j extended operation in the +2.3% to -2.5% rate range according to V.14 recommendations. However, if bit 1=1 (i-e. parallel data), then bit 4=1 configures the data interface for HDLC + +- : operation and bit 4=0 for asynchronous (8,N,1) operation as described in the parallel data mode section. Synchronous operation, either in serial or parallel data modes, is selected by + +- ai setting bit 4=1, bit 5=1. + +|. + +© 1995 Atari Corp. + +Confidential Information JER Property ofAtari Corporation + +26 April, 1995 + +' | + +Page 16 + +Jaguar Voice Modem + +q , ; | @ 7 | ] 5 : | = : 2 i 2 j Po : a _. * 7 : | og . j 2 _ ° ; 8 + +| | || ; | + +| : | | + +| + +: ‘ 4 j E ; 4 + +. | | | | + +|Bit1
fo
fo.|Bits
=6©{o0
[0|Bit4
{0 __|
[1 ||Function
SerialAsyncNormal Rate
SerialAsync Extended Rate| +|---|---|---|---| +|t+0)
1 ||||Parallel Syncw/HDLC| +||||ParallelSyncBitStream| + + + +- Bits 3-2: Character Length - These bits are used to select the correct character length for the Serial V.14 async/sync converter. They are only used when the modem is operating in asynchronous serial mode (Configuration Word 2, bit 5=0, bit 1=0). The character length includes one start bit and one stop bit. Thus, the commonly used 7 data bit even parity one stop bit character format would require a character length of 10 bits (10). In asynchronous paralle] mode (Configuration Word 2, bit 5=0, bit 4=0, bit 1=1), the character length is always 10 bits. + +- Bit 1: Serial/Paralle] Data Mode - This bit configures the Voice Modem to pass data serially through the V.24 Pins RXD, TXD or in bytes through the controller interface. It is used in conjunction with Word 2, bit 4 and bit 5. Note: Serial mode is not available in “V.32terbo” + +- | 19,200 bit/s mode. + +Bit 0: Enable/Disable Adaptive RLSD Detection - This bit enables or disables the adaptive determination of RLSD thresholds to enable fast and consistent RLSD\ loss detection. Fora more detailed explanation refer to Section 8.5. + +- response: The command is echoed back within 1.2 ms. default: 3000 hex + +function: This command sets the BER target for the auto-speed selection feature. This feature enables Voice Modem to automatically select the highest data rate allowable by the _[modems][ and][ supported][ by][the][line][conditions][such][that][ BER][ does][not][ exceed][the][target] value. The command variable “n” assumes the following values: + +n=0Q ; Disabled n=1 ; BER=10E-6 n=2 ; BER=10E-5 n=3 ; BER = 10E-4 n=4 ; BER = 10E-3 + +response: The command is echoed back within 1.2 ms. default: A021 hex + +. + +26 April, 1995 Confidential Information “7@® Property ofAtari Corporation + +© 1995 Atari Corp. | + +Page 17 + +| Jaguar Voice Modem + +] + +| + +| j + +j + +i Enabie Unsolicitéd Error Detection Responses OXF207 function: The command allows the modem to return the OxF3xx error check responses (if enabled) | at the end of data packets response: The command is echoed back within 1.2 ms. + +## | moon + +function: Selects data modes: + +ae [nonreattimedata + +response: The command is echoed back within 1.2 ms. + +function: Set real time data packet size to xx bytes. response: The command will be echoed back within 1.2ms. default: 0xB504 + +| + +| mam | function: Enable the unsolicited responses OxA4xx (see unsolicited response section below) response: The command will be echoed back within 1.2ms. + +AE: + +| on ee + +|| function: This command is used to detect presence OF absence of dial tone within a very short i ") interval. response: A response of 8CO1 means that a dial tone has been detected. . If a dial tone was not detected, the response will be 8Cxx, where xx is not 01. q ‘ © 1995 Atari Corp. Confidential Information “FOR Property ofAtari Corporation 26 April, 1995 + +Page 18 + +. + +Jaguar Voice Modem + +] + +2 | } + +2 | @ q i + +. + +: : + +| q + +The response is returned within 1.2 ms after the command was issued. + +> SeiVeiceSamplingFrequency= i i OxBSOx + +function: Set the compressed voice sampling frequency, as shown below: + +**==> picture [475 x 57] intentionally omitted <==** + +**----- Start of picture text -----**
+Sample Rate x The default adaptive sampling rates are as
Adaptive sampling (Default) | 0 | follows:
ps6e00Hz Cd Connection Speed Sampling rate
**----- End of picture text -----**
+ + +**==> picture [122 x 404] intentionally omitted <==** + +**----- Start of picture text -----**
+| /
Set Dial :
to be dialed. j :
Detector :
1 :
q
q
the detector with with {
the DTMF DTMF 4
;
4
© 1995 1995 Atari Corp. Corp. ]
:
**----- End of picture text -----**
+ + +response: The command will be echoed back within 1.2ms + +## Dial Number/Transmit DTMF Tone = + +## OKRA + +function: This command is used to dial a digit based on the mode selected using the Set Dial Mode. The command is of the form 8A2x hex, where x denotes the digit to be dialed. The status of digit dialling can be known using the Report Call Progress Detector command. + +## x=0123456789ABCDEF + +Number=0 123456789*#ABCD + +response: The command will be echoed back within 1.2ms. + +## PollDTMF Detector = = Oxb800, + +function: This command starts the DTMF tone detector and returns the status of the detector with with a response of 000x hex. The least significant digit of the response reports the DTMF DTMF tone pair received as follows: x = 0123456789ABCDEF DTMF Tone Pair = 0123456789* #ABCD 26 April, 1995 April, 1995 1995 Confidential Information AR Property ofAtari Corporation © 1995 1995 Atari Corp. Corp. + +26 April, 1995 April, 1995 1995 , + +‘ Jaguar Voice Modem y 4 A If no digit S , it is + +Page 19 + +| + +a response: A response is returned within 1.2 ms after it was written. g eportHandshakeStatus = OB 100. | function: This command causes the Voice Modem to return a 12-bit response indicating the | progress through the handshake, retrain or rate renegotiation. response: The response is returned in the form of 8xyz hex, where x, y and z are shown below. | j Example: V.32bis handshake completed handshake completed completed at 14.4k bit/s: 0x86B2 | V.32bis handshake before rate determination: 0x8002 + +j + +j + +1 + +- If no digit is detected, a response of FFFE hex is returned. The digit detected is held until it is read by the controller or another digit is detected. + +- Example: V.32bis handshake completed handshake completed completed at 14.4k bit/s: 0x86B2 V.32bis handshake before rate determination: 0x8002 Auto-moding, no mode or rate is determined: 0x8000 + +**==> picture [579 x 195] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||| +|---|---|---|---|---|---|---|---|---| +|j|Handshake/Retrain|State|y|Data|Rate|Response|z| +|||Undetermined|||0|||Undetermined|||0||| +|||1200/75| +|=|75/1200|V.32terbo/V.32bis|.| +|Bs|~~2400|__Bell|212|PS}| +|i|4800|é|:| +|||7200|Bell|103|||8||| +|'|9600|Non-trellis|||8|||V.23|;|9| +|9600|=| +||| +|12000|[ve|s—CS|CBT| +|14400|8| +|16800|A| +|.|19200|| D||||| + +**----- End of picture text -----**
+ + +State x Auto-mode Handshake in Progress | 0 | Non-Automode Handshake in Progress Abort/idie Retrain in Progress 3 Rate Renegotiation in Progress | 5 | Data Mode Za + +response: The response is returned within 1.2 ms after the command is written. + +## ==—=————————— BA + +a + +function: Adjust voice volume. The allowable values for x are: + +. + +© 1995 Atari Corp. + +Confidential Information “7OR Property ofAtari Corporation + +26 April, 1995 + +Jaguar Voice Modem + +: j + +| + +q : + +| + +- + +L q = _ + +a + +1 + +' + +## Page 20 + +, + +. + +||Level|||x|| +|---|---|---|---|---|---| +|Maximum|volume|(default)|||0||| + + + +## response: + +The command will be echoed back within 1.2ms + +function: Send data byte xx in real-time (low latency) mode. + +The data byte xx will be sent once the controller has received a full packet of bytes (packet size is set by the BSxx command). The typical latency is around 18ms. response: The command will be echoed back within 1.2ms + +26 April, 1995 + +Confidential Information “7O® Property of Atari Corporation + +© 1995 Atari Corp. 4 + +Page 21 + +| Jaguar Voice Modem @nsolicited Response Reference | This section summarises the various types of unsolicited data that can be expected from the modem. + +function: The byte xx was received from the remote modem. If error detection has been enabled, note that the packet error status will only be received at the end of the packet (after all packet bytes have been received). + +. + +| CME LLL LL function: If error detection has been enabled (with the $B602 command), this reponse will be received after all bytes in a packet have been received. The format iS: + +| F301 = No Errors in packet F311 = Error ocurred in packet oc ee | function: When call waiting detection has been enabled with the 2C80 or 2480 command, this | response indicates that a call waiting tone has been detected. indicates that a call waiting tone has been detected. that a call waiting tone has been detected. a call waiting tone has been detected. call waiting tone has been detected. waiting tone has been detected. tone has been detected. has been detected. been detected. detected. This response will be followed by a A4?? response, indicating that the line has been lost response will be followed by a A4?? response, indicating that the line has been lost will be followed by a A4?? response, indicating that the line has been lost be followed by a A4?? response, indicating that the line has been lost followed by a A4?? response, indicating that the line has been lost by a A4?? response, indicating that the line has been lost a A4?? response, indicating that the line has been lost A4?? response, indicating that the line has been lost response, indicating that the line has been lost indicating that the line has been lost that the line has been lost the line has been lost line has been lost has been lost been lost lost (see below). below). + +## | oc + +| | response indicates that a call waiting tone has been detected. indicates that a call waiting tone has been detected. that a call waiting tone has been detected. a call waiting tone has been detected. call waiting tone has been detected. waiting tone has been detected. tone has been detected. has been detected. been detected. detected. This response will be followed by a A4?? response, indicating that the line has been lost response will be followed by a A4?? response, indicating that the line has been lost will be followed by a A4?? response, indicating that the line has been lost be followed by a A4?? response, indicating that the line has been lost followed by a A4?? response, indicating that the line has been lost by a A4?? response, indicating that the line has been lost a A4?? response, indicating that the line has been lost A4?? response, indicating that the line has been lost response, indicating that the line has been lost indicating that the line has been lost that the line has been lost the line has been lost line has been lost has been lost been lost lost (see below). below). | function: This unsolicited response type is enabled with the command OxA3FE. When enabled, the modem will report line lost, and occasionally also report that the line is still good. As shown in the parse data flow chart, the line good response needs to be taken into account, and discarded. + +| : + +: + +The least significant bit of the response indicates the line status: + +Joxxxx xxx1 = Line Lost Joxxxx xxx0 = Line Good + +| + +Only the LSB is valid. All other bits must be ignored. + +© 1995 Atari Corp. + +## Confidential Information JPR Property ofAtari Corporation + +. + +26 April, 1995 + +Jaguar Voice Modem Voice Modem + +q : | = + +| + +7 . : ; 4 4 + +Page 22 Jaguar Voice Modem Voice Modem FOB er Immediately subsequent to losing the line, the modem will switch back to analog mode, where the headset and microphone are connected to the analog line. + +Whena call waiting tone is detected by the remote modem, the local modem will just get this lost line response on its own. Both ends will in fact switch to analog mode, allowing the users to talk, take care of the call waiting, and then restart communications and ; handshaking. + +| + +26 April, 1995 + +Confidential Information FR Property ofAtari Corporation + +© 1995 Atari Corp. | + diff --git a/docs/atari-jaguar-1999/08 - Jaguar Workshop Series.md b/docs/atari-jaguar-1999/08 - Jaguar Workshop Series.md new file mode 100644 index 00000000..d74004e3 --- /dev/null +++ b/docs/atari-jaguar-1999/08 - Jaguar Workshop Series.md @@ -0,0 +1,864 @@ +Pagel + +Jaguar Workshop Series + +## PN + +WjaguarWorkshopSeries The Jaguar Workshop Series is designed to introduce new Jaguar developers to several basic concepts useful in creating unique multimedia applications with the Jaguar developer console. The first installment of this series is designed to introduce you to the specific steps necessary to properly initialize the Jaguar console for a very small application with very modest hardware demands. Later workshop topics will expand upon this basic application to take advantage of most of the inherent features in the Jaguar hardware and provide useful source code that you may use as 4 starting point for your own applications. The following table indicates those topics which are currently planned to be covered in this series. It is likely that we will add more in the future. The table also notes which topics have source code and which have documentation. Please keep up-to-date via our bulletin board for new topics as they become available. + +||
w|#
SourceCode
Documentation
Topic
Naaeeeee
[Minimum Object ListUpdate
|_|
7 |Moving Bitmapwih tne ObjectProcessor—_—
[2 | |"
Cipping a Bitmap wit he Object Processor__—
[3_| _+_—,
Seatinga map wih the ObjetProcessor__
[=|__|
[sinePrimary Processor
S|;
interrunt ObjectProcessing
-$ | ____,——Heyatoe Reading Seroling over aLarge Objest
[|
[Copyinga tmpwit theBiter —___—
[8|__|
seating a itmap wih fheite
[|__|
Frasional tine DrawingwitfeBiter__
ef
sewing a itman wih theBiter—____—
|
oatng a tapwithteBiter
2 | ___,esosing a atmap wit the Biter —_—
3|__|PerformingLoa Operationswit theBiter___
3|__|
Fransparent Drawingwih theBiter—____
sf
character Ting with theBiter
[16|__|
brawing Monochrome Qveriayswii theBiter__
[|__| irinieruptProcessing
3|__|
[sto object Processing
ef |
osingJagpeg
38f-ing2a
eeee| +|---|---| + + + +Ry + +©1994 Atari Corp. + +Confidential InformationFER Property ofAtari Corporation + +8 November, 1994 + +ik + +**==> picture [548 x 99] intentionally omitted <==** + +**----- Start of picture text -----**
+\ ™ WORKSHOP
a
i“ IA ¢ ~ SERIES
:
Copyright ©1994 Atari Corp. SS .
**----- End of picture text -----**
+ + +Minimum Object List Update + +This application, MOU.COF, focuses on the most basic (and necessary) components of a Jaguar program, namely, the creation and maintenance of an object list that is used by the Object Processor (OP) to render screen images. + +| To follow along with this example you will need the following files included in the \JAGUAR\WORKSHOP\MOU directory: + +- # mou_init.s @ mou_list.s @ mou.inc @ makefile # jaguar.bin + +In addition I will assume that you have properly installed your developer’s toolkit and have the header files supplied by Atari in your include file directory. + +we 2 This example application will display a 16-bit CRY bitmap image (contained in JAGUAR.BIN) and do required maintenance during the vertical blanking period. The application will proceed through the following steps: + +1. Do basic hardware initialization and define a stack + +2. Copy the bitmap image to an absolute location in RAM. + +3. Initialize the video hardware. + +4. Create an object list. + +5. Define a vertical-blank interrupt handler. + +6. Turn on video and begin list processing. + +**==> picture [16 x 19] intentionally omitted <==** + +**----- Start of picture text -----**
+y
**----- End of picture text -----**
+ + +7. Release control to the debugging stub. + +SC ©1994 Atari Corp. + +_ Confidential Information FERProperty ofAtari Corporation 8 November, 1994 + +Page 2 + +Minimum Object List Update + +{i + +‘ . — | a _ . - | @ — | @ | 2 ] 7 1 a 4 a (aimee + 4 i ] a ‘ q 4 j | 4 3 1 ] q q ] 3 Bi + +| | | q + +With the exception of step four, this code can be found in MOU_INIT.S. Step four is coded in MOU_LIST:S. + +MOU _INIT.S begins by including the global header file, JAGUAR.INC, and a program-specific header file named MOU.INC. These header files provide all of the constants used in the source code. The first instruction executed is as follows: + +## move.1 #$00070007,G_END + +This instruction ensures that the Graphics Processing Unit (GPU) is configured to use Motorola MSBLSB (big-endian) for its I/O registers. This line of code is required for all Jaguar programs. A similar line is required for D_END if the DSP is needed (which this sample doesn’t). + +move.w #$FFFF,VI move.l1 #stopob,d0 swap do move.1 d0,OLP + +The first line disables video interrupts and is required to prevent interrupts from occurring in the middle of your setup routines. The next lines temporarily set the current object list to be a single stop object. The next line of code you will find common to most Jaguar sample programs is: + +## move.l #INITSTACK,a7 + +Most Jaguar programs will want to setup a stack. In this case, the equate INITSTACK is used. INITSTACK is defined in JAGUAR.INC to be $1FFFFC (the top longword of DRAM). + +Next, a generic subroutine, InitVideo, is called to initialize the video registers. InitVideo is capable of configuring video for any non-interlaced pixel resolution. The code for this subroutine follows: + +InitVideo: + +**==> picture [511 x 200] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||| +|---|---|---|---|---|---|---|---|---| +|movem.1|d0-d6,-(sp)| +|move.w|CONFIG,d0| +|andi.w|#VIDTYPE,d0|;|0|=|PAL,|1|=|NTSC| +|beq|palvals| +|a|move.w|#NTSC_HMID,d2|;|Values|defined|in|JAGUAR.INC| +|move.w|#NTSC_WIDTH,d0| +|move.w|#NTSC_VMID,d6| +|move.w|#NTSC_HEIGHT,d4| +|bra|calc_vals| +|palvals:| +|move.w|#PAL_HMID,d2|;|Values|defined|in|JAGUAR.INC| +|©1994|Atari Corp.|Confidential Information|TER|Property ofAtari Corporation|8 November, 1994|3| + +**----- End of picture text -----**
+ + +Page 3 + +10 + +|§&|§&|MinimumObjectListUpdate|MinimumObjectListUpdate|||| +|---|---|---|---|---|---|---| +|y|Ly||move.w|#PAL_WIDTH,d0||| +||:
|
@
=
'|calc_vals:|move.w
move.w
move.w
move.w|#PAL_VMID,d6
#PAL_HEIGHT,d4
da0,width
4d4,height|;
+|Width of screen in clocks
Height of screen in half-lines| +||||move.w
asr|d0,dl
#1,dal|;|Width/2| +||fj|||||| +||'
|||sub.w
add.w|dl,d2
#4,d2|;
;|Mid - Width/2
(Mid - Width/2)+4| +|||||sub.w
ori.w|#1,dl
#$400,d1|;
;|Width/2 - 1
(Width/2 - 1)|$400| +||||move.w|dl,a_hde||| +||t||move.w|d1,HDE||| +||||move.w|d2,a_hdb||| +||||move.w|42,HDB1||| +||a||move.w|d2,HDB2||| +|- 7
y
ij|||move.w
sub.w
move.w|4d6,d5
44,d5
45,a_vdb||| +|||||add.w|4,d6||| +||||move.w|d6,a_vde||| +||:|||||| +||||move.w
move.w|a_vdb,VDB
#$FFFF,VDE||; REQUIRED!!!| +||||move.1
move.1l|#0,BORD1
#0,BG||; Black Border
; Black Background| +||||movem.1
(sp)+,d0-d6|||| +|.|||rts|||| + + + +* + +This routine first determines whether the console is a NTSC or PAL machine and loads four registers with pre-defined values for the right console type. The variables width and height are then loaded with two of those constants describing the width of the screen in pixel clocks and the height of the screen in pixels. . + +To obtain the actual horizontal resolution of the screen in pixels, we must first choose a pixel divisor. The following table lists the available pixel divisors and the approximate resulting overscanned and nonoverscanned resolutions: + +**==> picture [6 x 25] intentionally omitted <==** + +**----- Start of picture text -----**
+s
**----- End of picture text -----**
+ + +©1994 Atari Corp. + +Confidential Information TR Property ofAtari Corporation + +8 November, 1994 + +Page 4 + +Minimum Object List Update + +: : ; : | : | ; + +: + +: ¥ z | | : 1 : : j q q F + +| + +| + +| + +**==> picture [267 x 28] intentionally omitted <==** + +**----- Start of picture text -----**
+Pixel Divisor Non-Overscanned Overscanned
Pt 0841830
**----- End of picture text -----**
+ + +, + +Most of the workshop examples (including this one) will use a pixel divisor of four. This mode yields the closest approximation to square pixels and gives us plenty of pixels to work with. Whenever we need to know the width of our screen in pixels, the following formula may be used: + +pixel width = —______widt - pixel divisor + +Computing the vertical height of the screen is even easier. The height variable, set by our video initialization subroutine, is in already in pixels. The last lines of the video initialization sets the video border and background colors. The border color is the color used on those parts of the screen outside of the displayable region. When overscanning, this color does not matter. You should note that the BORD1 and BORD2 registers specify a color in 24-bit RGB. By setting both registers (using a longword write) to zero in our sample code we make the border black. + +If the BGEN bit (#7) is set in the Video Mode register (we’ll do this later), the line-buffer is initialized to the color specified in the BG register at the beginning of every scanline. This only has an effect in RGB16 or CRY16 mode and the contents of BG will be a CRY or 16-bit RGB color pixel depending upon the mode you’re in. This example will use 16-bit CRY mode but since we’re setting it to black, zero will work in either mode. + +Jaguar video display is accomplished using an object list. The object list is consulted by the Object Processor at the start of every horizontal scanline to determine what needs to be drawn. As the screen is drawn and each scanline is successively rendered, certain parts of the object list are destroyed. For this reason, the object list must be updated during each vertical blank. Generally, you should save copies of the phrases which will get destroyed when you first create the list, then you can simply restore those fields from the saved copies. + +The object list in this example is the minimum necessary to generate a display. It is arranged as follows: + +©1994 Atari Corp. + +Confidential Information FR Property ofAtari Corporation + +8 November, 1994 + +Page 5 + +} | + +| | + +**==> picture [537 x 386] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||| +|---|---|---|---|---|---| +|B|Minimum|Object List Update| +|Phrase|Object Type|Description| +|i|1|Branch|This object causes a branch to the Stop object|if the|VC register| +|:|pointswhich pastis currently the visible being screen. prepared The for VC display. registerIts contains the value|is specified line|in| +||4|half-lines.| +|2|This object causes a branch to the stop object|if the|VC register| +|points before the beginning|of the visible screen.| +|i]| +|Bitmap|This object contains the data for the Jaguar logo we want to display| +|=|3&4|||on screen. Bitmap objects|take two phrases (16 bytes) and must be| +|&|||double-phrase aligned.| +|rs|Stop|This object ends object list processing for the current scan-line.| +|@|The first two branch objects simply skip the rest of the list and|jump straight to the stop object if the| +|®|vertical region being updated is outside of the area we want to be visible. This is a required component| +|of|every object list you set up. Because of a bug in the Jaguar chipset, the OP must run every scanline| +|}|(this is done by setting a_vde to $FFFF in the video initialization).|Please trust us on this, bad things will| +|||happen in the system|if you ignore this step.| +|Bs|The bitmap object is responsible for the display of the Jaguar logo. The stop object simply terminates list| +|||processing for the current scan-line.| +|Bae|Me sample code places the object list into a buffer referenced by the label main_obj_list. The buffer is| +|1|a|where the list is first created and where it will be updated during every vertical-blank.| +|The subroutine InitLister builds the initial copy of the object list in the buffer main_obj_list. The| +|subroutine begins|as|follows:| + +**----- End of picture text -----**
+ + +**==> picture [531 x 313] intentionally omitted <==** + +**----- Start of picture text -----**
+movem.1 dil-d5/a0,-(SP)
lea InitLister,a0
move.1 a0,d2
add.l #(LISTSIZE-1)*8,d2
Register A0.1 will be used as a roving list pointer which will be advanced as each phrase of the list is
written. D2.1 is initialized with this code to contain a pointer to the stop object. This pointer will be
needed for constructing each object in the list.
Throughout the entire routine, D1.1 and DO.! will be used to temporarily hold the high and low long of
the phrase being constructed. The first object to be written is a branch object. To review, a branch object
is arranged as follows:
Branch Object
63 55 47 39 31 23 15 7 0
w i eae aaa naan Cae eeee
©1994 Atari Corp. Confidential Information FRProperty ofAtari Corporation 8 November, 1994
**----- End of picture text -----**
+ + +**==> picture [2 x 30] intentionally omitted <==** + +**----- Start of picture text -----**
+‘
**----- End of picture text -----**
+ + +8 November, 1994 + +Page 6 + +Minimum Object List Update + +| J ; F j ; : ] j + +: + +| + +“ + +. q : 4 j : ‘ 4 4 4 | q ; ; 1 { : 4 4 + +j | | + +| + +: + +We will start by initializing D1 and DO to contain the object TYPE, CC (condition code), and LINK fields as follows: + +elr.1 dl move.1 #BRANCHOBJ|O_BRLT,d0 jsxr format_link + +The branch object only branches if a specified condition is met. This condition is encoded in the CC field of the object. The following table lists the five possible condition codes: + +**==> picture [343 x 83] intentionally omitted <==** + +**----- Start of picture text -----**
+Equate CC Description
O_BREQ | QO | Branch if YPOS == VC or YPOS == $7FF.
O_BRGT Branch if YPOS > VC.
O BRLT |2_| Branch [if] YPOS < VC.
O_BROP | 3 | Branch if the Object Processor Flag (OBF) is set.
O
BRHALF | 4 | Branch if on second half of display line (HC & 1 == 1).
**----- End of picture text -----**
+ + +The last line calls a subroutine which takes the address we previously stored in D2.] and transforms it as necessary to place it in the LINK field of the phrase. The LINK field indicates the address of the next object to process if the branch condition is met. If the branch condition is not met the next object in the list is processed. The format_link subroutine is as follows: + +format_link: + +movem.1 d2-d3,-(sp) + +andi.1l #S3FFFF8,d2 ; Ensure alignment move.1l 4d2,d3 : Make a copy swap a2 : Equivalent to << 21 clr.w 4d2 1lsl.1 #5,d2 lsr.1 #8,d3 ; copy >> 11 lsr.1 #3,d3 or.1 a3,di + +movem.1 d2-d3,-(sp) . rts + +The only remaining field of the branch object that has not been filled in is the YPOS field. We want the branch object to branch if the VC register is past the end of the visible screen. To do this, the YPOS field is initialized with the same value the VDE register was initialized with. This value was stored ina variable called a_vde by the InitVideo routine. The following code retrieves this value, shifts it into po place and stores it. Next, the phrase is stored into the buffer. + +move.w a_vde,d3 ; YPOS = a_vde lsl.w #3,a3 : Shift to bits 13-3 or.w a3,d0 ; Store it Confidential Information TER Property ofAtari Corporation + +8 November, 1994 4 + +©1994 Atari Corp. + +| Minimum Object List Update - move.l dl,(a0)+ ; Store the phrase move.l d0,(a0)+ ; in the list buffer / The next phrase is written in a similar manner. First, the CC and YPOS fields are stripped from the last | phrase. This branch object will branch if VC hasn’t reached the top of visible screen yet so YPOS will be set to a_vdb and CC will be set to YPOS > VC. The code follows: + +Page7 + +i j 5 + +: + +| : + +andi.l1 #$FF000007,d0 ; Mask away YPOS and CC ori.l #0_BRGT,d0 3; YPOS > vc move.w a_vdb,d3 3 YPOS = a_vdb lsl.w #3,d3 : Make it bits 13-3 or.w d3,d0 move.l di,(a0)+ ; Store second branch object move.l1 d0,(a0)+ + +| The next object that needs to be written to the list buffer is the bitmap object. Bitmap object require two phrases of space and must be double-phrase aligned. Since our entire list is double-phrase aligned with | the ‘.dphrase’ statement and the bitmap object will be preceded with two phrases of branch objects we ‘jm can be sure that the bitmap object will be properly aligned. The two phrases of a bitmap object are r arranged as follows: + +**==> picture [519 x 192] intentionally omitted <==** + +**----- Start of picture text -----**
+Bitmap Object
63 55 47 39 31 23 15 7 0
| DATA Pointer (Bits 23-3) | _UNK [Pointer][ (Bits] 21-3) [|] HEIGHT ___YPOSTYPE
63 55 47 39 31 23 15 7 0)
Unused = FIRSTPIX, INDEX, WIDTH = OWIDTH, XPOS
RELEASE- ~~ REFLECT PITCH--- ~~ DEPTH
TRANSPARENT —- -— RMW
To begin processing the bitmap object, the temporary phrase storage registers must be cleared and the
: address of the stop object must be stored in the LINK field as follows:
**----- End of picture text -----**
+ + +clr.l dl clr.1 do jsx format_link + +ul The LINK field of a bitmap object contains the address of the next object to be processed. Because the "address of the stop object remains in D2, a subroutine call to format_link is all that is necessary. You - should note that the TYPE field does not need to be filled in because the bitmap object TYPE code is 0. ae ©1994 Atari Corp. Confidential Information TER Property ofAtari Corporation 8 November, 1994 + +**==> picture [2 x 23] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +Page 8 + +Minimum Object List Update + +j | : j Pk a Po i | 4 , : j 1 1 | 4 : 1 : E | 4 q | : _ : | | | q ; j 4 1 | : + +| + +} + +| + +: + +The next field to be filled in is HEIGHT. This field simply specifies the height of the bitmap in pixels. The sample code that follows takes the equate BMP_HEIGHT (defined in MOU.INC), shifts it into place, and stores it in our temporary phrase: move.l #BMP_HEIGHT,d5 lsl.1 #8, d5 lsl.1 #6,d5 or.1 d5,d0 + +The YPOS field of a bitmap object contains the vertical position where the bitmap will be displayed in half-lines. To center the bitmap in our example we use the following formula: + +YPOS = eee -| x2+a_vdb Because YPOS must be specified in half-lines, the pixel result must be multiplied by two to convert it. a_vdb, which is the topmost displayable scanline set by InitVideo, is already in half-lines. To simplify the code which sets YPOS below, both the division and multiplication may be removed because they cancel each other out in the equation. The constant BMP_HEIGHT is set in MOU.INC and isequalto the height of the bitmap in pixels. The result of the equation is AND’ed with $FFFE to ensure that the resulting value is even (which is required). - + +move.w height,d3 sub.w #BMP_HEIGHT,d3 add.w a_vdb,d3 andi.w #$FFFE,d3 lsl.w #3,da3 or.w a3,d0 , + +| lsl.w #3,da3 | or.w a3,d0 , The last field in the first phrase that needs to be completed is the DATA field. This field will contain a pointer to our sample bitmap. For this example, the bitmap image is left in ROM (the Alpine board) and its address is assigned to the label jagbits by the linker. Under most circumstances you should copy bitmaps to RAM with the Blitter prior to displaying it. ROM access speed can be up to ten times slower than RAM (in the case of fetching object data, it is)! If you try to display more than a couple of bitmaps from ROM, the Object Processor will run out of time and your display will be distorted. The only reason we don’tusea RAM copy in the first few examples is to avoid having to explore the Blitter as well as the Object Processor. + +We also expect most bitmaps to be compressed in ROM. If you have enough ROM space to leave your bitmaps uncompressed then you should instead compress your bitmaps and enhance your game by adding a level, more music, etc.. + +You should note that the DATA field only encodes bits 23-3 of the bitmap address. Bits 2-0 aren’t needed because the bitmap must be phrase-aligned. The following code forces the bitmap address tobe phrase-aligned, shifts it into place, and stores it (note: if the bitmap isn’t really phrase-aligned, it will just look funny on screen): + +ee ©1994 Atari Corp. Confidential Information FER Property ofAtari Corporation 8 November, 1994 + +Page 9 + +& w + +## Minimum Object List Update + +move.l #jagbits,d3 . andi.l #$FFFFFO,d3 lsl.1 #8,d3 or.1 d3,d0 + +In the diagram of a bitmap object presented earlier, two fields had a gray background. These fields are modified by the Object Processor as it renders scanlines. For this reason, these portions of the object list must be updated during each vertical blank. This example does the least work possible by simply storing a copy of the phrase that gets destroyed so that it may be restored during the vertical blank. In order to do this, the following code stores the first phrase of the bitmap object with a copy in the variables bmp_highl and bmp_lowl: + +move.1 di,(a0)+ move.1 d1,bmp_highl move.1 d0,(a0)+ move.1 d0,bmp_lowl + +The second phrase of a bitmap object contains more fields, however several may be set by simply OR’ing together equated values. The following code sets three fields. The TRANS bit is set causing the object processor to skip drawing pixels with the color $0000 effectively making these pixels transparent. The DEPTH field is set to O_DEPTH1G6 indicating a 16-bit-per-pixel bitmap. The PITCH field is set & : to O_NOGAP which means that there is no gap between successive phrases of the bitmap data. w move.1 #0_TRANS,d1 move.1 #0DEPTH16|O_NOGAP,d0 + +The next section of code creates the XPOS field. Again, we will center the bitmap horizontally in a similar manner to how we centered it vertically. There are some key differences, however. The value in width is the number of pixel clocks in a scanline. This must first be divided by the pixel divisor to determine the true horizontal screen resolution. You should also note that XPOS = 0 begins display at HDB so there is no reason to add the horizontal display offset as we did with YPOS. The constant BMP_WIDTH comes from MOU.INC and is equal to the bitmap width in pixels. Examine the following code: + +move.w width,d3 ; Width in clocks lsr.w #2,da3 ; /4 Pixel Divisor sub.w #BMP_WIDTH,d3 ; - BMP WIDTH isr.w #1,0a3 : /2 to center it or.w d3,d0 ; Store it + +## The last fields that must be set are IWIDTH and DWIDTH. IWIDTH contains the actual image width in phrases. DWIDTH contains the width (also in phrases) of the image to display. For now, these fields should be set to the same value. A later example will examine hardware clipping using these fields. & w The following code sets the IWIDTH and DWIDTH fields to the constant BMP_PHRASES (defined " “ in MOU.INC) and stores the second phrase of the bitmap object: + +**==> picture [2 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+]
**----- End of picture text -----**
+ + +a©1994 Atari Corp. Confidential Information FER Property ofAtari Corporation 8 November, 1994 + +Page 10 + +Minimum Object List Update + +a | & | @ E z =. | @ ¥ | = | i a 1 + +' = }| + +| 4 | 4 ; " + +‘ + +| q : i q 1 { + +| + +| | | + +1 + +7 + +| + +move.l1 #BMP_PHRASES,d4 move.l d4,d3 Isl.1 #8,d4 ; DWIDTH 1sl.1 #8,d4 lsl.1 #2,d4 or.1 a4,da0 lsl.1 #8,d4 ; IWIDTH Bits 31-28 lsl.1 #2,d4 or.1 d4,do lsr.1 #4,d3 ; IWIDTH Bits 37-32 or.1 d3,dl move.1 dl,(a0)+ ; Store phrase move.1 d0,(a0)+ . + +The last object that is required in the object list is the stop object. The stop object is written as follows: + +clr.1l di move.1 #(STOPOBJ|O STOPINTS) , dO move.l di,(a0)+ move.l1 d0,(a0)+ + +Besides the object TYPE field, the equate O_STOPINTS allows CPU stop object interrupts to be processed (if we enable them later). + +To complete the InitLister subroutine, the address of the list buffer is reloaded, word-swapped (the pointer to the object list must be word-swapped) and returned in DO as shown by the following code: : move.1 #main_obj_list,d0 swap do movem.1 (sp)+,d1-d5/a0 rts + +The final subroutine called by the initialization segment is InitVBint. This routine installs the vertical blank handler, enables video interrupts, and lowers the 68000’s interrupt priority level (IPL) to actually allow CPU interrupts to occur. + +All Jaguar interrupts appear to the CPU as Level 0 Autovector interrupts. Whenever a Level 0 Autovector interrupt occurs, the vector at address LEVEL ($100) is jumped through. When more than one type of interrupt is enabled, the INT1 register must be consulted to determine what type of interrupt + +] + +| + +©1994 Atari Corp. + +Confidential Information PERProperty ofAtari Corporation + +8 November, 1994 F + +|Minimum Object List Update + +Page 11 + +Pactually caused the handler to be called. In this example that step isn’t necessary because the only kind | of interrupts we’re concerned with are video interrupts. + +| The Jaguar Vertical Interrupt register (VI @ $FO004E) controls which half-scanline the vertical blank | interrupt occurs (this must be an odd value). The following code installs the 68k Autovector handler and | configures the VI register properly. + +move.1 #UpdateList,LEVELO move.w a_vde,d0 ori.w #1,d0 move.w d0,VI + +; + +The next section of code enables CPU video interrupts by setting the correct bit in INT1: + +move.w INT1,d0 ori.w #C_VIDENA,dO move.w d0,INT1 + +Finally, the last section of the subroutine lowers the 68k IPL to level 0 to allow interrupts to occur. + +move.w sr,d0d andi.w #S$F8FF,d0 ; move.w d0,sr + +## | Enabling Video Processing, + +|[Only][ two][ more][ statements][are][ required][to][ enable][ the][ video][ display.][ The][ routine][InitLister][ returned][ a][ pre-] _ swapped pointer to the object list buffer in DO. This value must now be stored in the Object List Pointer (OLP @ $F00020). The final command reconfigures the video controller by correctly setting the Video Mode register (VMODE @ $F00028). Sample code follows: + +move.l1 d0,OLP move.l #CRY16|CSYNC|BGEN|PWIDTH4 | VIDEN, VMODE + +The CRY16 equate enables 16-bit CRY mode. The CSYNC equate enables output to composite sync | (which is required for television output). The BGEN equate causes the line buffer to be cleared to the background color prior to starting each scanline. The PWIDTH4 equate enables a pixel divisor of four. Finally, the VIDEN equate enables video. Please note that Jaguar video should never be tured off by not setting the VIDEN flag. + +The last instruction in our initialization is ‘illegal’. This is a brute-force way to return control to the debugger. Most applications will enter their main logic loop at this point. Please note, however, that even though the debugger regains control, interrupts will continue to occur and be serviced by our handler. + +| | | ' : + +| ©1994 Atari Corp. + +Confidential Information “PU™ Property of Atari Corporation + +8 November, 1994 + +Page 12 + +Minimum Object List Update + +: + +blank handler for this sample handler for this sample for this sample this sample sample is very simple. very simple. simple. It must must first restore any modified any modified modified fields in in the q it must signal must signal signal that it has handled the has handled the handled the the interrupt by using the sequence by using the sequence using the sequence the sequence sequence illustrated below: 4 i . move.l a0,-(sp) 4 move.1 #main_obj_list+BITMAPOFF,a0 move.1 bmp_highi, (a0) move.l1 bmp_lowl,4(a0) q move.w #$101,INT1 ] move.w #$0,INT2 : move.l (sp)+,a0 | rte BITMAP_OFF comes from MOU.INC and comes from MOU.INC and from MOU.INC and MOU.INC and and is the offset offset in bytes from bytes from from the beginning of the beginning of the of the the : phrase of the bitmap. the bitmap. bitmap. Because this is an an interrupt routine it must end with must end with end with with the 68k RTE 68k RTE RTE ; 4 for the sample code the sample code sample code code is provided, provided, different developers may choose developers may choose may choose choose different : environments for assembly and for assembly and assembly and and linkage. This section will only This section will only section will only will only only illustrate the command the command command line 4 MADMAC and ALN and why they were chosen. and ALN and why they were chosen. ALN and why they were chosen. and why they were chosen. why they were chosen. they were chosen. were chosen. chosen. 4 file is assembled assembled with MADMAC with the command the command command line options options ‘-fb’ and and ‘-g’. The The ; ' causes MADMAC MADMAC to output BSD format object files output BSD format object files BSD format object files format object files object files files (the type strongly recommended recommended for 14 The ‘-g’ switch causes source-level source-level information to be added be added added to the object file. J table shows the flags used with the Atari Linker ALN and their purpose: shows the flags used with the Atari Linker ALN and their purpose: the flags used with the Atari Linker ALN and their purpose: flags used with the Atari Linker ALN and their purpose: used with the Atari Linker ALN and their purpose: the Atari Linker ALN and their purpose: Atari Linker ALN and their purpose: Linker ALN and their purpose: ALN and their purpose: and their purpose: their purpose: purpose: 4 Switch Meaning V-V Enable medium-verbosity. The -v switch may be used from 4 zero to three times for increasing levels of verbosity. J l-e~~_| Output a COFF format executable. 4 lg~~—~—S—*~«<‘C«t~*«*:*CSCS Place sourrccee-leveell information in the output file. 4 rtSSS Include local as well as global symbols in the output[ file.] 4 Align each object module to a double-phrase boundary. 4 -a 802000 x 4000 Create an absolute file with the TEXT segment starting at : $802000, the DATA segment being contiguous with the TEXT segment, and the BSS segment starting at $4000. 4 -i jaguar.bin jagbits include a raw binary file named JAGUAR.BIN. The start 4 address of the file will be assigned to the label ‘jagbits’. The . end address of the label will be assigned the label ‘jagbitsx’. 19 Name the output file MOU.COF. 4 + +: + +| + +| + +: | + +The vertical blank handler for this sample handler for this sample for this sample this sample sample is very simple. very simple. simple. It must must first restore any modified any modified modified fields in in the object list. Next, it must signal must signal signal that it has handled the has handled the handled the the interrupt by using the sequence by using the sequence using the sequence the sequence sequence illustrated below: + +## UpdateList: + +The constant BITMAP_OFF comes from MOU.INC and comes from MOU.INC and from MOU.INC and MOU.INC and and is the offset offset in bytes from bytes from from the beginning of the beginning of the of the the list to the first phrase of the bitmap. the bitmap. bitmap. Because this is an an interrupt routine it must end with must end with end with with the 68k RTE 68k RTE RTE instruction. + +Though a MAKEFILE for the sample code the sample code sample code code is provided, provided, different developers may choose developers may choose may choose choose different : development environments for assembly and for assembly and assembly and and linkage. This section will only This section will only section will only will only only illustrate the command the command command line 4 switches used with MADMAC and ALN and why they were chosen. and ALN and why they were chosen. ALN and why they were chosen. and why they were chosen. why they were chosen. they were chosen. were chosen. chosen. 4 + +Each assembly file is assembled assembled with MADMAC with the command the command command line options options ‘-fb’ and and ‘-g’. The The switch ‘-fb’ causes MADMAC MADMAC to output BSD format object files output BSD format object files BSD format object files format object files object files files (the type strongly recommended recommended for Jaguar development). The ‘-g’ switch causes source-level source-level information to be added be added added to the object file. + +The following table shows the flags used with the Atari Linker ALN and their purpose: shows the flags used with the Atari Linker ALN and their purpose: the flags used with the Atari Linker ALN and their purpose: flags used with the Atari Linker ALN and their purpose: used with the Atari Linker ALN and their purpose: the Atari Linker ALN and their purpose: Atari Linker ALN and their purpose: Linker ALN and their purpose: ALN and their purpose: and their purpose: their purpose: purpose: + +Confidential Information FRProperty ofAtari Corporation + +9 November, 19943 : + +©1994 Atari Corp. + +Page 13 + +i Minimum Object List Update + +| fmMocr Ooo[the][ sample][ program][ may][ be][ easily][ transferred][ to][ the] }[Once][ MOU.COF][ has][ been][ successfully][ output,] | ROMULATOR by typing ‘rdbjag mou’ or picture [405 x 97] intentionally omitted <==** + +**----- Start of picture text -----**
+™ WORKSHOP
‘i SERIES
Copyright ©1994 Atari Corp. SS
**----- End of picture text -----**
+ + +nnn Eyam Moving a Bitmap with the Object Processor + +| Medion After reading through the first installment in this series you should now be able to construct a basic ® object list and maintain it during the vertical blank. This document will expand upon the first example, | adding motion to the bitmap that is displayed. Each Workshop Series tutorial will not spend much time @ reviewing old material. Each installment will usually only talk about the differences between the current @ §=§=©example and the last. To follow along with this tutorial you will want the source code files to the MOVE.COF executable | | — which may be found in the VJAGUAR\WORKSHOP\MOVE directory: + +# mov_init.s # mov_list.s @ mov_move.s # move.inc @ jaguar.bin @ makefile + +. + +Sa | As with our last example, this sample code will display a 16-bit CRY Jaguar logo. This time, however, the code will update the position of the object during each vertical blank so it moves around, reversing direction each time it hits the edge of the display area. | Brograminitialization= The source file MOV_INIT.S is identical to the last example’s initialization code with the exception of the following line (highlighted in bold): + +jsx InitVideo jsr InitMoveVars jsr InitLister jsr InitVBint + +The external subroutine InitMoveVars is located in MOV_MOVES. It initializes a few BSS variables that we will use to track the object’s movement as follows: + +move.1 d0,-(sp) move.w #X_MOTION,x_motion move.w #¥Y_MOTION,y_ motion + +] + +] + +©1994 Atari Corp. + +Confidential Information “AU® Property of Atari Corporation + +8 November, 1994 + +Page 2 + +Moving a Bitmap with the Object Processor + +{ 4 + +a + +: ee rf o4 1 4 : 4 : mt. : a j 4 ‘ ; : E ; ; 4 2: ; . 1 : ; q ' | 4 4 = ‘ q 4 | —_ 4 | | + +| + +} + +**==> picture [2 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+;
**----- End of picture text -----**
+ + +clr.w frame_count clr.w x_min move.w width,d0 lsr.w #2,d0 sub.w #BMP_WIDTH,d0O move.w d0,x_max move.w a_vdb,d0 andi.w #SFFFE,d0 move.w d0,y_min move.w a_vde,d0 sub.w #BMP_LINES,d0 andi.w #SFFFE,d0 sub.w #2,a0 move.w d0,y_max move.l (sp)+,d0 rts + +The variables x_motion and y_motion are initialized with constants stored in MOVE.INC. By altering these constants you can change the speed and initial direction of the bitmap’s motion (negative values move up and and to the left, positive values move down and down and and to the right). + +| move up and and to the left, positive values move down and down and and to the right). | The variable frame_count is initialized to zero. This variable will be incremented each timea vertical : blank occurs and is zeroed each time we actually move the object. This allows the sample code to set a : frequency (some divisor of the frame rate) at which the bitmap will be updated. : The rest of the initialization sets up four variables that will contain the logical extents of the viewscreen. Each time the object is moved its position is compared to the values in these variables and its direction is reversed if necessary. You will also notice that the width and height of the bitmap are subtracted from the width and height of the bounding rectangle. This is to account for the fact that the movement constraints must be relative to the upper-left hand corner of the bitmap. + +In this example we can use the same object list that was used in MOU.COF. The only difference is that a copy of the bitmap’s initial XPOS and YPOS are stored in the variables x_pos and y_pos. | TheVerticalBlankHandier ###=# = # # #§# = ) As with MOU.COF, the UpdateList routine is called during each vertical blank. It updates the fields of 7 the object list that were modified by the object processor. Because this example requires very little work to be done to move a bitmap around, all of this processing is done during the vertical blank. This also | allows us to return control to the debugger so we can manipulate the movement variables in realtime. | The Programmable Programmable Interrupt Timer would normally be used to regulate the speed of processing game Timer would normally be used to regulate the speed of processing game would normally be used to regulate the speed of processing game normally be used to regulate the speed of processing game be used to regulate the speed of processing game used to regulate the speed of processing game to regulate the speed of processing game regulate the speed of processing game the speed of processing game speed of processing game of processing game processing game game + +The Programmable Programmable Interrupt Timer would normally be used to regulate the speed of processing game Timer would normally be used to regulate the speed of processing game would normally be used to regulate the speed of processing game normally be used to regulate the speed of processing game be used to regulate the speed of processing game used to regulate the speed of processing game to regulate the speed of processing game regulate the speed of processing game the speed of processing game speed of processing game of processing game processing game game logic (or in this case, the speed of the moving bitmap) however, for this example, the frequency ofthe vertical blank itself will be used as the timer. + +Confidential Information FRProperty ofAtari Corporation + +©1994 Atari Corp. + +8 November, 1994 + +Page 3 + +q j | | : | |1 {: 1 ; : + +: : + +Moving a Bitmap with the Object Processor + +uu ; After saving registers, the very first thing UpdateList does is to call the routine MoveBitmap which can | be found in MOV_MOVE.S. MoveBitmap starts out by incrementing the variable frame_count. By comparing the frame_count variable with the pre-defined constant UPDATE_FREQ (defined in | MOVE.INC) the sample code determines whether the subroutine will actually modify the object position variables or wait for more frames to occur first. The code to this logic follows: + +|uu
;
|
||uu
After saving registers, the very first thing UpdateList does is to call the routine MoveBitmap which cansaving registers, the very first thing UpdateList does is to call the routine MoveBitmap which canregisters, the very first thing UpdateList does is to call the routine MoveBitmap which canthe very first thing UpdateList does is to call the routine MoveBitmap which canvery first thing UpdateList does is to call the routine MoveBitmap which canfirst thing UpdateList does is to call the routine MoveBitmap which canthing UpdateList does is to call the routine MoveBitmap which canUpdateList does is to call the routine MoveBitmap which candoes is to call the routine MoveBitmap which canis to call the routine MoveBitmap which canto call the routine MoveBitmap which cancall the routine MoveBitmap which canthe routine MoveBitmap which canMoveBitmap which canwhich cancan
be found in MOV_MOVE.S. MoveBitmapfound in MOV_MOVE.S. MoveBitmapin MOV_MOVE.S. MoveBitmapMOV_MOVE.S. MoveBitmapMoveBitmap starts out by incrementing the variable frame_count. Byout by incrementing the variable frame_count. Byby incrementing the variable frame_count. Byincrementing the variable frame_count. Bythe variable frame_count. Byframe_count. ByBy
comparing thetheframe_count variable with the pre-defined constant UPDATE_FREQ (defined invariable with the pre-defined constant UPDATE_FREQ (defined inwith the pre-defined constant UPDATE_FREQ (defined inthe pre-defined constant UPDATE_FREQ (defined inpre-defined constant UPDATE_FREQ (defined inUPDATE_FREQ (defined in(defined inin
MOVE.INC) the sample code determines whether the subroutine will actually modify the object positionthe sample code determines whether the subroutine will actually modify the object positionsample code determines whether the subroutine will actually modify the object positiondetermines whether the subroutine will actually modify the object positionwhether the subroutine will actually modify the object positionthe subroutine will actually modify the object positionsubroutine will actually modify the object positionwill actually modify the object positionactually modify the object positionmodify the object positionthe object positionobject positionposition
variables or wait for more frames to occur first. The code to this logic follows:or wait for more frames to occur first. The code to this logic follows:wait for more frames to occur first. The code to this logic follows:for more frames to occur first. The code to this logic follows:more frames to occur first. The code to this logic follows:frames to occur first. The code to this logic follows:to occur first. The code to this logic follows:occur first. The code to this logic follows:first. The code to this logic follows:The code to this logic follows:code to this logic follows:to this logic follows:this logic follows:logic follows:| +|---|---| +|||MoveBitmap:
movem.l1 d0-d1,-(sP)| +||move.w
frame_count,d0| +|‘
a|add.w
#1,da0
cmp.w
#UPDATE_FREQ,d0| +||beq
do_move| +||move.w
d0,frame_count| +|]|bra
move_done| +|||do_move:
clr.w
frame_count| +|f Whenthesubroutineactually gets thechancetoupdatethe object’spositionitmustfirstchecktoensure
thattheobjectremainswithintheboundssetbythex_min,x_max,y_min, andy_maxvariables. Ifthe
f objectreachesthelimitoftheseboundaries,theappropriatemotionvariableisnegatedtoreverseits
direction.Finally,themotionvariableforeachdirectionisaddedtotheobject’spositionvariableandthe
functionreturns.Theremainingcodeforthisfunction follows:|| +|:
q
;|move.w
x_pos,d0
; verify X range
cmp.w
x_min,do
ble
change_x
; if at left edge
cmp.w
x_max,d0
5 or at right edge| +||bit
add_xmot| +|1|change_x:
neg.w
x motion
; reverse X direction| +|f
,|add_xmot:
add.w
x_motion
;addmotionamount| + + + +|:
q
;||move.w
cmp.w
ble
cmp.w|x_pos,d0
x_min,do
change_x
x_max,d0|;
;
5|verify X range
if at left edge
or at right edge|| +|---|---|---|---|---|---|---| +|||bit|add_xmot|||| +|1|change_x:|neg.w|x motion|; reverse X direction||| +|f
,|add_xmot:|add.w|x_motion|; add motion amount||| +|||move.w
cmp.w
ble|y_pos,dl
y_min,dl
change_y||; verify Y range
; if at top edge|| +|1||||||| +|||cmp.w|y_max,dl||; or at bottom edge|| +|||bit|add_ymot|||.| +||change_y:|neg.w|y_motion||1 reverse ¥ direction|| +||add_ymot:|add.w|y_motion,dl||; add motion amount|| +|-||move.w|d0,x_pos||; store new values|| +|=||move.w|dl,y_pos|||| +|;
:|move_done:|movem.1(sp)+,d0-dl||||| + + + +**==> picture [1 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +Confidential Information JPR property ofAtari Corporation + +©1994 AtariCorp. + +8November, 1994 + +| + +Page 4 + +Moving a Bitmap with the Object Processor + +| + +‘ | + +away with an AND with an AND an AND AND instruction and replaced with the contents contents of the the variable i | code illustrates the updating updating of the the first phrase: phrase: L move.1 #main_obj_list+BITMAP_OFF,a0 4 move.l bmp_highl, (a0) + restore first longword a move.l bmp_lowl,do ; grab long with YPOS 4 andi.l #$FFFFC007,d0 ; strip old value | move.wisl.w y_pos,dl#3,al ; and replace new : |R Oor.w di,do . move.l d0,4(a0) : now store it ' + +a | vi, 4 = | g | | a s f a : | | + +| + +- : : | | + +| + +| : + +Dee rrlQA.—<(—s—s—sSO—té—FéOCté—é—OCéCtr*=C‘“=>P During each vertical blank, the interrupt handler UpdateList restores the stored copy of the first bitmap ‘ phrase which was modified by the object processor. As an additional step, however, the YPOS portion of that phrase is stripped away with an AND with an AND an AND AND instruction and replaced with the contents contents of the the variable i y_pos. The following code illustrates the updating updating of the the first phrase: phrase: L + +; + +Next, the XPOS field in the second phrase of the bitmap must be updated. This time, however, the phrase to be modified comes directly from the object list buffer. This is possible since the Object Processor never modified this phrase. The following code updates the XPOS field in the second phrase of the bitmap and exits the interrupt handler: + +move.l 12(a0),d0 ; Low long of phrase 2 andi.l #$FFFFF000,d0 ; Extract XPOS move.w x_pos,dl + Fill in current XPOS or.w da1,do move.1 d0,12(a0) ; Store it back move.w #$101,INT1 move.w #0,INT2 + +movem.l (sp)+,d0-d1/a0 rte + +Use your favorite variation of MAKE to create MOVE.COF (the flags should be the same as MOU.COF) and load it into the debugger by typing ‘wdb move’ or ‘rdbjag move’. Type “g’ and hit return to see the results of this sample program. + +As an experiment, you can try modifying the values for XK_MOTION, Y_MOTION, and UPDATE_FREQ in MOVE.INC. You will get different horizontal and vertical speeds depending on the values you select. + +|= + +©1994 Atari Corp. + +Confidential Information FRProperty ofAtari Corporation + +8 November, 1994 + +| 7| G + +i + +| This example builds upon the original example in this series, MOU.COF, to demonstrate the built-in ® capability of the Object Processor to horizontally clip bitmap objects. Before examining this example, . please familiarize your self with Workshop Series #1: Minimum Object List Update. | — The following source code files to CLIP.COF may be found in the \JAGUAR\WORKSHOP\CLIP sub§ = directory: ‘ @ clp_init-s Fi @ clp_list.s : @ clp_clip.s # clip.inc ' @ jaguar.bin ££ @ makefile + +j + +**==> picture [333 x 101] intentionally omitted <==** + +**----- Start of picture text -----**
+| ™
G
,
74Copyright ©1994 Atari Corp. SS
**----- End of picture text -----**
+ + +**==> picture [88 x 66] intentionally omitted <==** + +**----- Start of picture text -----**
+WORKSHOP
SERIES
**----- End of picture text -----**
+ + +| + +## Clipping a Bitmap Object with the Object Processor + +Underconstuction The tutorial document for this example has not yet been created. Please refer to the source code comments in each of the files for specific information about this example. + +1 | + +©1994 Atari Corp. + +Confidential Information “JER property ofAtari Corporation + +9 November, 1994 + +, + +| + +| | + +| + +: + +: + +P + +**==> picture [266 x 96] intentionally omitted <==** + +**----- Start of picture text -----**
+™
IAG
Copyright ©1994 Atari Corp. Sa
**----- End of picture text -----**
+ + +**==> picture [91 x 76] intentionally omitted <==** + +**----- Start of picture text -----**
+WORKSHOP
SERIES
**----- End of picture text -----**
+ + +ie Scaling a Bitmap Object with the Object Processor + +This example builds upon the original example in this series, MOU.COF, to demonstrate the built-in capability of the Object Processor to scale bitmap objects. Before examining this example, please | familiarize your self with Workshop Series #1: Minimum Object List Update. | — The following source code files to SCALE.COF may be found in the JAGUAR\WORKSHOP\SCALE | sub-directory: + +@ scl_init-s @ scl_list.s @ scl_scal.s @ scale.inc @ jaguar.bin # makefile + +: + +| + +Underconstruction The tutorial document for this example has not yet been created. Please refer to the source code comments in each of the files for specific information about this example. + +©1994 Atari Corp. + +Confidential Information FER Property ofAtari Corporation + +9 November, 1994 + +: ij / i : : + +| + +i + +| + +**==> picture [219 x 96] intentionally omitted <==** + +**----- Start of picture text -----**
+G ™
y
NS
Copyright ©1994 Atari Corp. ~~
**----- End of picture text -----**
+ + +**==> picture [89 x 64] intentionally omitted <==** + +**----- Start of picture text -----**
+SERIES
WORKSHOP
**----- End of picture text -----**
+ + +GPU Interrupt Object Processing + +| This example builds upon the original example in this series, MOU.COF, to demonstrate GPU interrupt | objects. Before examining this example, please familiarize yourself with Workshop Series #1: Minimum | Object List Update. The following source code files to GPUINT.COF may be found in the + +\JAGUAR\WORKSHOP\GPUINT directory: + +} + +a + +# gpu_init.s @ gpu_list.s @ gpu_hndl-.s @ gpuint.inc # jaguar.bin # makefile + +The tutorial document for this example has not yet been created. Please refer to the source code comments in each of the files for specific information about this example. + +©1994 Atari Corp. + +Confidential Information FERProperty ofAtari Corporation + +8 November, 1994 + +’ + +| + +| + +| , | | | | i + +a a + +| 1™ if|AG[4] ~ | Copyright ©1994 Atari Corp. > + +**==> picture [90 x 78] intentionally omitted <==** + +**----- Start of picture text -----**
+WORKSHOP
SERIES
**----- End of picture text -----**
+ + +| + +’ Rotating a Bitmap with the Blitter ln.2 | } This example demonstrates bitmap rotation using the Blitter. Initialization and object list creation/maintenance is handled in the same manner as the first Workshop Series example, MOU.COF. @| | ListBeforeUpdate. examining this example, please familiarize yourself with Workshop Series #1: Minimum Object B= The following source code files to JAGROT.COF may be found in the ' \JAGUAR\WORKSHOP\JAGROT directory: # jx init-s @ jr_list.s @ jr_grot.s a @ jr.inc a @ jaguar.bin @ makefile + +| Undeconstucton The tutorial document for this example has not yet been created. Please refer to the source code Hs comments in each of the files for specific information about this example. + +ConfidentialInformation“PO® Property ofAtari Corporation + +8 November, 1994 + +©1994 Atari Corp. + diff --git a/docs/atari-jaguar-1999/09 - Sample Programs.md b/docs/atari-jaguar-1999/09 - Sample Programs.md new file mode 100644 index 00000000..6c96fb7d --- /dev/null +++ b/docs/atari-jaguar-1999/09 - Sample Programs.md @@ -0,0 +1,290 @@ +Page I + +" + +Sample Programs So sete —s—SS == Fsampe ee ~=—C Programs This section describes the various sample programs that are included with the Jaguar development system which are not a part of the Jaguar Workshop series. Each subsection describes a particular program, and will discuss what the program does, what techniques it is supposed to illustrate, and to some degree how the code works. If you have not read the Jaguar Software Reference Manual already, you should do it before reading this section. Please note that the sample programs are often intended to illustrate a particular idea in an easy to understand way. In most cases, this will not be the fastest method, or use the least memory, because such optimization frequently makes it harder to understand what's going on. Once you understand the Jaguar hardware, you will undoubtedly find a number of ways to do the same thing faster and with less code.Atari is constantly creating new sample code, so in the event that there are changes or additions to the sample programs, there will be README.TXT files located in the SOURCE directory and/or within the specific subdirectory of the sample. You should also check the online services at least every couple of weeks to see what updates and additions are available. Please note that in order to reduce the size of the archives containing the sample programs, the executable program itself is not provided in most cases, the project must be built using the tools in your Jaguar developer’s kit. (This should serve as a useful reality check to be sure your installation is correct.) + +{ | | | | i | : | | | + +© 1995 Atari Corp. + +Confidential Information JER Property ofAtari Corporation + +16 May, 1995 + +This program demonstrates how to set up a full-screen bitmap object and then uses the GPU program demonstrates how to set up a full-screen bitmap object and then uses the GPU demonstrates how to set up a full-screen bitmap object and then uses the GPU how to set up a full-screen bitmap object and then uses the GPU to set up a full-screen bitmap object and then uses the GPU set up a full-screen bitmap object and then uses the GPU up a full-screen bitmap object and then uses the GPU a full-screen bitmap object and then uses the GPU full-screen bitmap object and then uses the GPU bitmap object and then uses the GPU object and then uses the GPU and then uses the GPU then uses the GPU the GPU GPU to draw a draw a a j ' Mandelbrot fractal into it. Once the Mandlebrot set has been drawn, has been drawn, been drawn, drawn, a Julia Julia set is drawn, drawn, and the the ; , program then switches back and forth between then switches back and forth between back and forth between forth between between the two images. two images. images. ; ; The 68000 68000 is used to set up the parameters for the GPU, and then the entire screen used to set up the parameters for the GPU, and then the entire screen to set up the parameters for the GPU, and then the entire screen set up the parameters for the GPU, and then the entire screen up the parameters for the GPU, and then the entire screen the parameters for the GPU, and then the entire screen parameters for the GPU, and then the entire screen for the GPU, and then the entire screen GPU, and then the entire screen and then the entire screen then the entire screen the entire screen entire screen screen is drawn by drawn by by the GPU. GPU. ] 4 : As implemented, implemented, the whole screen whole screen screen is drawn in about 5 drawn in about 5 in about 5 about 5 seconds, and could be sped up bya could be sped up bya be sped up bya sped up bya up bya byaa factor of of . @ _ 100% or more with or more with more with with a little more optimization more optimization optimization (like using the DSP to calculate the DSP to calculate DSP to calculate to calculate calculate half the picture while the picture while the while the the | @ GPU calculates the other the other other half). | @ This example is normally found in the JAGUAR\SOURCEVAGMAND directory. Below is a list of all | 2 the files which are included. a Filename Description 3 o : CALCMAND.S | This is the actual Mandlebrot calculation code that runs in the Jaguar GPU. 4 a CRY.PAL This file contains data for a 256-entry CRY-mode color palette for palette-based objects. 4 . : JAGMAND.S This file takes control after the startup code has initialized the system. It creates an object F, list for the background picture, installs an object list refresh routine, and then calls the code | 4 : in MANDLE.S. Poo : MAKEFILE Used with MAKE utility to build executable program file from source code and data files. ‘ .: : MANDLE.S This uses the 68000 to set up the fractal parameters and then calls the GPU to calculate ] . the image. | e 5 STARTUP.RGB | This file is actually in the JAGUAR\SOURCE directory. This is the screen displayed by the | 3 = startup code that is used by several of the sample programs in the Jaguar Developer's Kit. a STARTUP.S Standard Jaguar Startup Code. This module contains all the code necessary to properly ’ 4 initialize the Jaguar hardware and display a simple startup picture. Then it passes control to} # : the_ start label in the JAGMAND.S module. (See the Sample Programs section for j further information on the Standard Jaguar Startup Code.) q + +: _ + +_ i q 7 : | 4 i j + +- Page 2 Sample Programs 4 JaguarMandelbrot/FractalDemo Ni,”rmrmrrCmr—r~—~—...CUi‘i~i*:COSOSCSSRSCOUG This program demonstrates how to set up a full-screen bitmap object and then uses the GPU program demonstrates how to set up a full-screen bitmap object and then uses the GPU demonstrates how to set up a full-screen bitmap object and then uses the GPU how to set up a full-screen bitmap object and then uses the GPU to set up a full-screen bitmap object and then uses the GPU set up a full-screen bitmap object and then uses the GPU up a full-screen bitmap object and then uses the GPU a full-screen bitmap object and then uses the GPU full-screen bitmap object and then uses the GPU bitmap object and then uses the GPU object and then uses the GPU and then uses the GPU then uses the GPU the GPU GPU to draw a draw a a j ' Mandelbrot fractal into it. Once the Mandlebrot set has been drawn, has been drawn, been drawn, drawn, a Julia Julia set is drawn, drawn, and the the ; , program then switches back and forth between then switches back and forth between back and forth between forth between between the two images. two images. images. ; ; The 68000 68000 is used to set up the parameters for the GPU, and then the entire screen used to set up the parameters for the GPU, and then the entire screen to set up the parameters for the GPU, and then the entire screen set up the parameters for the GPU, and then the entire screen up the parameters for the GPU, and then the entire screen the parameters for the GPU, and then the entire screen parameters for the GPU, and then the entire screen for the GPU, and then the entire screen GPU, and then the entire screen and then the entire screen then the entire screen the entire screen entire screen screen is drawn by drawn by by the GPU. GPU. ] 4 As implemented, implemented, the whole screen whole screen screen is drawn in about 5 drawn in about 5 in about 5 about 5 seconds, and could be sped up bya could be sped up bya be sped up bya sped up bya up bya byaa factor of of . @ _ 100% or more with or more with more with with a little more optimization more optimization optimization (like using the DSP to calculate the DSP to calculate DSP to calculate to calculate calculate half the picture while the picture while the while the the | @ GPU calculates the other the other other half). | @ + +This file is where the program execution begins. This is the standard Jaguar Startup Code responsible for initializing the system. It sets up interrupts, sets the video registers correctly for either NTSC or | PAL, and does other related things that must be done properly at startup time for your program to | function. It also displays a startup screen. Once it is finished, it passes control to the _ start label somewhere in your program (JAGMAND:S in this example). , Note that STARTUP.S has been modified slightly from the version in JAGUAR\STARTUP to allow 2 the use of a different startup picture. This type of change is only one allowed in this file. Making ' changes to other portions of the file may result in errors which can prevent your program from | functioning properly. + +\ + +16 May, 1995 + +Confidential Information F@® Property of Atari Corporation + +© 1995 Atari Corp. 4 + +. + +Page 3 + +| Sample Programs & Kkoe This file is where the program execution begins after the startup code has initialized the system. It basically delays for a few seconds so that we can look at the startup screen, then it creates an object list for our background picture, installs an interrupt handler to refresh the object list, and then sets the video 1 mode to 320-pixel CRY mode. Finally, it clears the memory that will be used for our bitmap, and then jumps into the Mandle function, located in MANDLE.S. Note that the object list creation routine make_list is almost identical to the routine InitLister in the STARTUP.S module. The only parts that changed were the labels for the address where the list information is stored. OSLO LLL This contains the 68000 routine that sets up the fractal parameters (coordinates, zoom range, etc.) and tells the GPU to start creating the fractal image. a oe This contains the GPU routine that calculates the fractal image for each pixel of the picture, using the & 0 parameters (coordinates, zoom range, etc.) which are set up by the 68000. + +© 1995 Atari Corp. + +Confidential Information FPR Property ofAtari Corporation + +16 May, 1995 + +7 Page 4 JagLine, JagSlant, JagBlock, JagSkew, JagShade 7 These are very simple programs which demonstrate how to do specific tasks using the blitter. Warning! Please note that note that that the current versions of of these programs are programs are are not intended as general examples ofJaguar general examples ofJaguar examples ofJaguar ofJaguarJaguar programming. They are intended as simple are intended as simple intended as simple as simple examples f of specific blitter operations, blitter operations, operations, and they take short cuts to this end. they take short cuts to this end. cuts to this end. to this end. this end. end. Do not not use these these : examples to obtain startup code or as a shellfor creating your own to obtain startup code or as a shellfor creating your own obtain startup code or as a shellfor creating your own startup code or as a shellfor creating your own code or as a shellfor creating your own or as a shellfor creating your own as a shellfor creating your own a shellfor creating your own shellfor creating your ownfor creating your own creating your own your own own programs. + +Sample Programs 7 im i not intended r 4 examples 4 use these these ’ i | up a a q . 4 up a narrow a narrow narrow 4 : 1] sets up a up a a : ’ . ; 4 / It sets up a up a a = Itsetsup | 4 —_— =.= contains % the files which which | = | ; 3 4 ne a ] é : = 1 2 program q a objects. = ] and JagSlant JagSlant [3 and data files. data files. files. 4 + +| + +| ) | + +Warning! Please note that note that that the current versions of of these programs are programs are are not intended as general examples ofJaguar general examples ofJaguar examples ofJaguar ofJaguarJaguar programming. They are intended as simple are intended as simple intended as simple as simple examples of specific blitter operations, blitter operations, operations, and they take short cuts to this end. they take short cuts to this end. cuts to this end. to this end. this end. end. Do not not use these these examples to obtain startup code or as a shellfor creating your own to obtain startup code or as a shellfor creating your own obtain startup code or as a shellfor creating your own startup code or as a shellfor creating your own code or as a shellfor creating your own or as a shellfor creating your own as a shellfor creating your own a shellfor creating your own shellfor creating your ownfor creating your own creating your own your own own programs. + +| JagLine - This program demonstrates how to draw a horizontal line using the blitter. It sets up a a narrow bitmap object and then draws a single yellow line into the top of it. | _ JagSlant - This program demonstrates how to draw a diagonal line using the blitter. It sets up a narrow a narrow narrow bitmap object and then drawsa single yellow line into the top of it. | JagBlock - This program demonstrates how to draw a solid rectangle using the blitter. It sets up a up a a | narrow bitmap object and then draws a single yellow box into the top of it. , : JagSkew - This program demonstrates how to draw a skewed rectangle using the blitter. It sets up a up a a narrow bitmap object and then draws a non-shaded yellow polygon into it. : JagShade - This program demonstrates how to draw a shaded parallelogram using the blitter. Itsetsup a narrow bitmap object and then draws a shaded yellow 4-sided polygon into the top of it. + +**==> picture [496 x 236] intentionally omitted <==** + +**----- Start of picture text -----**
+This example is normally found in the JAGUAR\SOURCE\BLIT directory. This directory contains
several demos which share a number of common source code files. Below is a list of all the files which which
are included.
Filename Description
BLITBLCK.S This is the code for JagBlock that calls the blitter
BLITLINE.S - This is the code for JagLine that calls the blitter
BLITSHAD.S This is the code for JagShade that calls the blitter
BLITSKEW.S This is the code for JagSkew that calls the blitter
BLITSLNT.S This is the code for JagStant that calls the blitter
CLEARBAR.S The routine in this file uses the biitter to clear the bitmap memory used by the program
CRY.PAL This file contains data for a 256-entry CRY-mode color palette for palette-based objects.
INTSERV.S This file contains the interrupt handling routines used by all the programs.
JAGLINE.S This is the main program file for JagBlock, JagLine, JagShade, JagSkew, and JagSlant JagSlant
LISTBAR.S The routines in this file set up the object list used by all the programs
MAKEFILE Used with MAKE utility to build executable program files from source code and data files. data files. files.
VIDEOINI.S The routines in this file set up the video display used by ali the programs.
**----- End of picture text -----**
+ + +## Confidential Information ‘PER Property ofAtari Corporation + +4 + +16 May, 1995 + +© 1995 Atari Corp.4 + +Page 5 + +Sample Programs + +| | | i i tf f | } | | | t t t / 1 ' | | j 1 1 | i | | ' | + +; + +| | These files contain the code for the blitter for the individual programs. Only one file is used by each || ———program (see table above). ns | ‘This file contains a simple subroutine which uses the blitter to clear the memory used by the bitmap : j object we use to display our picture in all of these programs. It sets up a pattern containing all zeroes, : and then blits this pattern into the bitmap. ' —— nn | This file contains data for a CRY-mode color palette, which will be used by objects with 8 bits per pixel | less. This file contains the routine that installs our vertical blank interrupt, as well as the vertical blank A] interrupt service routine (ISR). The ISR simply calls the Lister function (contained in LISTBAR.S) .. which creates the object list. Note that re-creating it from scratch during each vertical blank is a terrible way to maintain your object | list; please don’t do it this way. It’s much more efficient to change only those fields of those objects | which get changed every frame by the object processor. For better examples of creating and maintaining an object list, see the programs in the \JAGUAR\WORKSHOP directory, which create | object lists of various sizes and complexity. For a specific example of an object list like those used by JagLine, etc., see the routines in the file MOU_LIST.S, located in the \JAGUAR\WORKSHOP\MOU directory. + +This file is the main source file for these programs. It performs program initialization, and then transfers control to the DoBlit function, which is different for each program (this routine is contained in the BLITBLCK.S, BLITLINE:S, BLITSHAD:S, BLITSKEW.S, and BLITSLNT:S files; each program uses just one of these). + +This file contains the Lister routine we use to create our object list, as well as the routines which save | and restore the fields of the object list which are modified during each frame by the object processor. Him ae i. This file contains the routine that detects the current video standard (NTSC or PAL) and sets up the video registers which control aspects of the video such as the size and position of the borders at the 1 edges of the screen. ] q © 1995 Atari Corp. Confidential Information FPR Property ofAtari Corporation 16 May, 1995 1995 + +16 May, 1995 1995 + +ve + +% = Sample Programs Page 7 QW ioypadReadingExample lm This program demonstrates how to read the Jaguar joypad controllers. It is quite simple; the current buttons pressed on the joypad are printed to the screen. Controller #1 is shown on the left side, and | Controller #2 is shown on the right side. This example is normally found in the \JAGUAR\SOURCE\OYTEST directory. + +|[:] + +© 1995 Atari Corp. + +Confidential Information “70% Property of Atari Corporation + +16 May, 1995 | + +' + +Page 8 Sample Programs 1 EEPROMExample§..§s == ccc CG + +] q | j ' : _ ‘ | 4 + +: : | - | + +' + +4 i + +| + +This program demonstrates how to read and write information to the EEPROM ofa cartridge. + +The EEPROM is 128 bytes of non-volatile memory on a standard Jaguar cartridge that is normally used for storing the user's controller preference settings, high scores, etc. This program demonstrates how to access it. Note: This program demonstrates the exact method required for accessing the EEPROM. Use the code from this program as is, without change. + +This example is normally found in the \JAGUAR\SOURCE\EEPROM directory. + +. + +. + +16 May, 1995 + +Confidential Information “FOR Property of Atari Corporation + +© 1995 Atari Corp. } + +| + +Page 9 + +| Sample Programs AGE True Color Bitmap Display Example + +|\ f | + +L + +This program demonstrates how to set the system up for RGB mode instead of CRY mode, and creates a | 16-bit true color RGB bitmap object. It then draws a number of bands of color into the object. This | program uses only the 68000, and while it's not exactly slow, it could be done much faster using the _ GPU and/or Blitter. + +This example is normally found in the \JAGUAR\SOURCE\TESTRGB directory. + +) + +© 1995 Atari Corp. + +Confidential Information FPR Property of Atari Corporation + +16 May, 1995 + +: : ; i : + +; ' Po | 1 + +‘ + +: Warning! Please note that the current version of this program is not intended as a ; general example ofJaguar programming. It isa simple example ofa specific DSP , operation, and it takes short cuts to this end. Do not use this example to obtain 4 + +Ve,hrrrtrtrtrtstr—S=«i‘COrQOCUOtCi(C(’N’TNNYNNCCSOUCésCOGMRL + +This program demonstrates how to playback a simple waveform using one of the samples in the DSP waveform ROM. Nothing is shown on screen, but you should hear a tone from your speakers. + +This example is normally found in the JAGUAR\SOURCE\SIMPLE directory. + +| + +16 May, 1995 + +Confidential Information ‘FER Property ofAtari Corporation + +© 1995 Atari Corp. + +i + +Page 11 + +| | ' L q 1 ‘ | |j | | 1 j 4 : ' | q { | + +Sample Programs nono oe | This program is a sort of Blitter recipe book written by Francois- Yves Bertrand. It uses the blitter to copy a bitmapped picture from the source bitmap to the screen. Then it allows you to plug values into the blitter registers to see what happens. This program is really as much a tool you can use to figure out what values to use with your own blitter | code as it is a sample program. Playing with this program as you read through the blitter sections of the | Jaguar Software Reference Manual - Tom & Jerry is really a great way to learn the Jaguar blitter. With this tool, you can program any of the blitter register and see the result directly on screen. The actual program uses two main objects: ~—@ The first one is an ATARI logo, 64 x 64, 16 bits per pixel. This is used as the source. }| 9 The second one is the destination buffer. It is 320 x 256, 16 bits per pixel, 3 layers (2 for double buffering and one for Zbuffer) i You can move around the register with the UP/DOWN keys or faster with 1/7 keys on paddle 1. You can change the value of a register with LEFT/RIGHT keys or faster with C/B keys. The only register you cannot change is the base register (for both Al and A2). If you set the DSTA2 register (so Al is the source and A2 the reception), the program swaps the Al base and A2 base. You will have to swap | manually all the other registers (PITCH,PIXEL SIZE...) to have the correct result on screen. | The source code for this program is not provided. While the program itself is interesting to play with, | = and useful as a tool to help figure out your own blitting routines, the source code is not really a good Jaguar programming example in general. + +This example is normally found in the \JAGUAR\BLITTER directory. + +q + +j + +© 1995 Atari Corp. + +Confidential Information FPR Property ofAtari Corporation + +16 May, 1995 + +| | j + +Page 12 + +Sample Programs + +: | + +‘CSR ay | = 4 + +| | + +| + +} + +BPEGDecompressionExample§.§.=«sse ee,,rrt“(t™w~w™C—~C~COC;UCid«COWCO@SCOCi‘(CU.CUOwtCOi‘i‘ + +TESTBPEG is a sample program for the Jaguar that demonstrates how to take the files created with the BPEG image compression tools and use them in a program with the BPEG routine and tools. For further information, please see the Libraries section. + +This example is normally found in the JAGUAR\BPEG directory. + +**==> picture [7 x 16] intentionally omitted <==** + +**----- Start of picture text -----**
+ee
**----- End of picture text -----**
+ + +16 May, 1995 + +Confidential Information AR Property ofAtari Corporation + +© 1995 Atari Corp. } + +in 4 + +3Sample Programs + +Page 13 + +, 4 4 Warning! Please note that the current version of this program is not intended as a q j general example of Jaguar programming. It is a simple example of using the Jaguar q i Synth and Music Driver, and it takes short cuts to this end. Do not use this example 3 q to obtain startup code or as a Shellfor creating your own programs. + +4 ] This program demonstrates how to use the Jaguar Synthesizer and Jaguar Music Driver to play music in @eeSsyur programs. 4 j For further information, please see the Libraries section. + +] + +j This example is normally found in the \JAGUAR\MUSIC\SYNDEMO directory. + +: | A different example that uses a wider variety of patches for the synthesizer may be found in the p of \JAGUAR\MUSIC\MUSICDRY directory. + +| ;1 © 1995 Atari Corp. + +Confidential Information “F® Property of Atari Corporation + +16 May, 1995 + +Page 14 + +Sample Programs + +[ j } _ @ | 4 rf ' : 4 — 7 | | : | | |PF@ ] x | | **|** og3 1 ‘ 1 4 EB PO + +3D Rendering &TextureMappingDemo###§ 4. + +| | | . : : : | | | | a . : | , | + +Warning! Please note that the current version of this program is not intended as a general example ofJaguar programming. It is an example of using the 3D Graphics library, and it takes short cuts to this end. Do not use these examples to obtain startup code or as a Shellfor creating your own programs. + +## rrrtrts—COsCCQCUiaC(i‘C(NYNNYNRH.._.s—iéié(a‘i‘aéa‘i‘iéi;mt + +This program encompasses and demonstrates the Jaguar 3D Graphics routines supplied by Atari. The program drawsa fully light-shaded and texture mapped space fighter on screen. Using the joypad controller, you can control the fighter's position and orientation. + +**==> picture [237 x 172] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||| +|---|---|---|---|---|---| +|Controller|Button|Movement| +|Rotates you|backward| +|Rotates|you to the|right| +|Rotates|you|to the|left| +|ChangesRotates you thecounter-clockwiselight shading| +|Rotates|you|clockwise| +||6's|Changes|[light]|intensity| +|||Reduces number of objects| +|||s8'9|S|:||TurnsIncreases on/offnumb obj|e|ctr of rotation objects| + +**----- End of picture text -----**
+ + +The number of objects on screen increases/decreases exponentially when you use the '7' and '9' keys; you can have 1 object (14), 8 objects (27), 27 objects (37), and soon. + +Whereisit? =4... .,. This example is normally found in the JAGUAR\3DDEMO directory. 7 + +16 May, 1995 + +Confidential Information FER Property ofAtari Corporation © 1995 Atari Corp. + diff --git a/docs/atari-jaguar-1999/10 - Libraries.md b/docs/atari-jaguar-1999/10 - Libraries.md new file mode 100644 index 00000000..b3218e7c --- /dev/null +++ b/docs/atari-jaguar-1999/10 - Libraries.md @@ -0,0 +1,2099 @@ +Page I + +1 if | | :j { i ' | 1 ' { + +i + +| + +**==> picture [38 x 12] intentionally omitted <==** + +**----- Start of picture text -----**
+Libraries
**----- End of picture text -----**
+ + +This section describes the various libraries that are included with the Jaguar development kit. @ = Because Atari is constantly updating and improving the Jaguar libraries and sample code, it's possible @ sthat there may be differences between the documentation and the most current release of a library. Always check the library distribution archive for one or more text files with additional or replcement documentation. + +- @ =the following libraries aze included: : . Jaguar Startup Code a 3D Graphics ° BPEG Image Compression & Decompression + +- : ° Cinepak Decompression & Playback (See separate Cinepak For Jaguar section) | + +- } Es Networking (see Jaguar Voice Modem section) . Music & Sound . Jaguar Music Driver + +- | «~~ BEPROM Access Library : ° NV-RAM Cartridge Access Library | See also the Sample Programs section. + +© 1995 AtariCorp. + +Confidential Information “JPR Property ofAtariCorporation + +26 April, 1995 + +: Page 2 + +Libraries + +7 + +| ; @ . 4 — ' : + +| | + +] ‘ j 7 4 + +| Our startup performs the following steps: | 1. Sets GPU and DSP Endian registers correctly. | 2. Disables video refresh. + +| : } . _ 1 4 ; ; 4 | ‘ 4 \ : s 5 { e | 4 q ’ cP + +5 + +| + +| + +| + +| | ' + +JaguarStartupCode—_ a Starting up a Jaguar (initializing video, the object list, etc...) is the most important thing a program must do correctly. This startup code (STARTUP.S) performs all of the program initialization correctly and | must always be used. Note that modifying, reordering, or omitting any part of this startup, except ' those portions explicitly marked as being changeable, will likely cause your software to fail our hardware testing procedures. + +SS ,rCS—r—"C*teN—i(i‘é‘O;@*wswOC:wsCsCN«sCiséSCUCiéC(;iéH Link STARTUP:S first to make it the first code to be executed. Do not perform any initialization of any kind prior to running this startup code. When this code finishes it will jump to the label _start to enter your code. + +3. Sets the 68k stack pointer to the end of DRAM. 4. Initializes video registers. + +5. Creates an object list as follows: BRANCH Object (Branches to stop object if past display area) BRANCH Object (Branches to stop object if prior to display area) BITMAP Object (Jaguar License Acknowledgement - see below) STOP Object + +6. Installs an interrupt handler, configures VI, enables 68k video interrupts, lowers 68k IPL to allow interrupts. + +7. Uses GPU routine gSetOLP to stuff OLP with pointer to object list. + +8. Turns on RGB video ($6C7 in VMODE). + +" 9. Jumps to _start (your supplied code). As soon as your code gains control you should perform whatever other initialization tasks your code j may need to allow the graphic to be on screen for a reasonable amount of time. 1 26 April, 1995 Confidential Information FER Property ofAtari Corporation © 1995 Atari Corp. j oo eeeeeeeFSFSsSaeseFeFeeFeeFeFeeeeeee Si + +Page 3 + +| i k i ; | | q j q { i q ‘ { ' + +| Libraries + +q + +: + +t + +When you need to transfer control to your object list (for your title screen OF whatever else) you should poll the variable ‘ticks' for a change. At this point (vertical blank) you should switch interrupt handlers ™ (by placing anew value at LEVELO $100) and change the OLP. Remember, the OLP should only be | changed by the GPU (you can use our DRAM routine if the GPU isn't already running). : | ee en @ = The macro license_logo definition at the top of STARTUP.S should be changed as necessary to indicate @ ~~ either the “I icensed by” or “Licensed to” graphic respectively. The “1 jcensed to” graphic should only B be used by our subcontractors doing a port of an existing game created by a company other than Atari. | The “Licensed by” graphic should be used in all other cases. | “AOE LLL LPM LAAT ' This collection of files should always be used as the baseline startup reference. For example, at the time | of this writing, many of our other sample programs have not yet been updated to reflect some of the | new things this startup does more correctly. They will be updated soon. However, whenever an update a needs to be made, this startup code will always be updated first. + +j + +© 1995 Atari Corp. + +Confidential Information “AOR Property of Atari Corporation + +26 April, 1995 + +Page 4 + +Libraries + +j + +| | ! | + +i + +& to q and/or ZZ j : CG into a a j ' this utility, . 7 File ToolKit: ToolKit: _ are created, created, 1 ’ binary data data a data in this in this this | @ pages 49-79. 49-79. i ; ge by the the 3 3DS2JAG | @ PF 4 | | 4 | :. 4 : : ' : { ] © 1995 Atari Corp. | + +| = : | | | | + +J Constriction OTA JAGFile ==— | Once the .3DS model has been completely parsed and assembled, the JAG model created by the the | conversion utility must be assembled and output. The following is a sample of output from 3DS2JAG : for a cube created in 3D Studio: + +i : ' j + +| : ' + +## @QpiGraphies + +## == + +Please note that there is nothing preventing developers from using a different 3D modeling program to create their 3D objects. However, you will have to provide your own object conversion utilities and/or 3D transformation and rendering functions. + +## SDS2JAG Object/Texture Conversion Utility = + +The utility 3DS2JAG converts an object file created with AutoCAD 3-D Studio v2.0 or v3.0 into a a format that can be used with the Jaguar 3D graphics routines. For detailed information on this utility, see the Tools chapter. + +For a full description of the 3D-Studio object data format refer to the manual "3D Studio File ToolKit: ToolKit: reference, publication 100672-A, December 18, 1992". As newer versions of 3D Studio are created, created, 3DS2JAG will have to be modified to reflect any new commands. The structure of the .3DS binary data data file can be found in Chapter 2, page 7, and the Data Structure Reference, page 35-47. The data in this in this this file is grouped into chunks, defined by a Command, Size, and Data block. See Chapter 3, pages 49-79. 49-79. + +**==> picture [190 x 252] intentionally omitted <==** + +**----- Start of picture text -----**
++* File: cube .JAG
o* Created From: cube. 3ds
-data
-phrase
SEGOFFSET EQU $4
.include "blit.ine”
-globl data
-phrase
data:
**----- End of picture text -----**
+ + +26 April, 1995 + +Confidential Information “AO Property of Atari Corporation + +Page 5 + +**==> picture [557 x 725] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---| +|||Libraries| +|y||xs|dc.wdc.w|812|;*;*|numbernumber|ofof|VerticesFaces| +|dc.1|-vertlist|;*|pointer|to|vertices| +|de.1l|.texlist|;*|pointer|to|texture|maps| +|de.l|-tboxlist|;*|pointer|to|texture|boxes| +|7eee|ES|SSS TSS|SST TSS| +|;*|FACE|DATA|-|negative|values|signify|reversing|the|segment|vertext|pair| +|.|ee|cen|peewee|eee see|eee|SRS|SE|RSS|RR|SRS|SR| +|i| +|.facelist:de.l|SFFFFOOOO|;*|Gouraud|shaded.|No|texture.| +|de.w|3|;*|Face|0:|Segments|in|Face| +|de.w|$008f|:*|color|GREEN|MATTE|(GOURAUD)|i| +|de.w|4|*|8| +|dc.w|6|*|8| +|de.w|7|*|8| +|de.l|SFFFFO000|;*|Gouraud|shaded.|No|texture.| +|de.w|3|;*|Face|1:|Segments|in|Face| +|de.w|$008f|;*|color|GREEN|MATTE|(GOURAUD)| +|de.w|4|*|8|j| +|de.w|5|*|8| +|de.w|6|*|8| +|dce.l|SFFFFO000|;*|Gouraud|shaded.|No|texture.| +|de.w|3|;*|Face|2:|Segments|in|Face| +|!| +|de.w|0|*|8| +|W|dce.w|$00f9|;*|color|ORANGE|MATTE|(GOURAUD)||| +|dc.w|5|*|8| +|de.w|47|8||| +|dc.l|SFFFFO000|;*|Gouraud|shaded.|No|texture.| +|dce.w|3|;*|Face|3:|Segments|in|Face| +|dce.w|$00f9|3*|color|ORANGE|MATTE|(GOURAUD|}| +|de.w|0|*|8| +|de.w|1|*|8| +|de.w|5|*|8| +|de.l|SFFFFO000|;*|Gouraud|shaded.|No|texture.| +|de.wdc.w|3$0089|;*.*|Facecolor|GRAY4:|SegmentsMATTE|(GOURAUD)in|Face||| +|do.w|1|*|8| +|'|dc.w|6|*|8| +|de.w|5|*|8| +|dc.l|$FFFFOO00O0|;*«|Gouraud|shaded.|No|texture.| +|de.w|3|;*|Face|5:|Segments|in|Face| +|de.w|$0089|;*|color|GRAY|MATTE|(GOURAUD)| +|de.w|1|*|8| +|de.w|2|*|8| +|de.w|6|*|8| +|de.l|S$FFFFO000|;*|Gouraud|shaded.|No|texture.| +|de.w|3|;*|Face|6:|Segments|in|Face| +|de.w|$00f1|;*|color|RED|MATTE|(GOURAUD|)| +|de.w|3|*|8| +|RS|de.w|4|*|8| +|de.w|7|*|8| +|de.l|SFFFFO000|:*|Gouraud|shaded.|No|texture.| +|de.w|3|;*|Face|7:|Segments|in|Face| +|de.w|S$00f1|;*|color|RED|MATTE|(GOURAUD)| +|© 1995|Atari Corp.|Confidential Information|JER|Property ofAtari Corporation|26|April, 1995| + +**----- End of picture text -----**
+ + +26 April, 1995 + +| : 7 | Zz| | ; . vi i ji i | ‘ ‘ f I B a i ‘ | + +Libraries =. 4 4 | | = |= = % | a | : | g | a | F i 7 = ¢ a Z | oa ; 4 & ? 4 3 : = q | a | a _| f gg f 4 P| F 4 a 4 fF 4 | = | = | @ -— . ™ a q eS 7 . } e ©1995 Atari Corp. | + +Page 6 + +de.w 3 * 8 dce.w 0 * 8 de.w 4* 8 dc.1 SFFFFO000 ;* Gouraud shaded. No texture. dc.w 3 3* Face 8: Segments in Face de.wde.w 2S0O0ff* 8 ;* color YELLOW MATTE (GOURAUD) dc.w 7 * 8 dc.w 6 * 8 dc.l SFFFF0000 ;* Gouraud shaded. No texture. de.w 3 ;* Face 9: Segments in Face de.w Soofft ;* color YELLOW MATTE (GOURAUD) de.w 2 * 8 dce.wde.w 37 ** 88 dc.i SFFFF0000 :* Gouraud shaded. No texture. dc.w 3 ;* Face 10: Segments in Face de.w $0001 ;* color BLUE MATTE (GOURAUD) de.w 0* & de.w 2 * 8 dce.w 1 * 8 dc.1 SFFFFOO000 ;* Gouraud shaded. No texture. de.w 3 ;* Face 11: Segments in Face de.w $0001 ;* color BLUE MATTE (GOURAUD) dc.w 0 * 8 dce.w 3 * 8 de.w 2+* 8 3 ete ee SE SS SSS SSS SSS SSS SSS SS SSS SS SSS SSS SSS SSS SSS SSS SS 7* VERTEX DATA j Seem e ese RSS SS SSS SS SS TESS SSS SESS SSS SS SSS S SS SSS SSS SS SS SSS ESTE -vertlist: : 3* vertex: 0 \ dc.1 SFFCFO031 s* xX ly (16.0,16.0) (-49,49) dc.1 $FFCFDBOD ;* Z |Nx (16.0,0.16) (-49) dc.1 $24F3DBOD ;* Ny|Nz (0.16,0.16) s* vertex: 1 de.l $00310031 :* X |¥ (16.0,16.0) (49,49) dc.l $FFCF24F3 ;* 2 [Nx (16.0,0.16) (-49) dc.1 $24F3DBOD ;* NyiNz (0.16,0.16) 4% vertex: 2 dc.1 $0031FFCE 7*X {¥ (16.0,16.0) (49,-50) de.l S$FFCF24F3 ;* Z [Nx (16.0,0.16) (-49) de.1 S$DBODDBOD ;* Ny|[Nz (0.16,0.16) ;* vertex: 3 de.l S$FFCFFFCE :* X fy (16.0,16.0) (-49,-50) dce.1 S$FFCFDBOD ;* Z |Nx (16.0,0.16) (-49) dc.1 SDBODDBOD 7* Ny|Nz (0.16,0.16) ;* vertex: 4 dc.l S$FFCFO031 7* xX [Y (16.0,16.0) (-49,49) de.1 $0032DB0D ;* Z [Nx (16.0,0.16) (50) 26 April, 1995 Confidential Information “PER Property of Atari Corporation + +Libraries + +| | + +: | i | 1 | | 1 | i | | 4 q { + +**==> picture [2 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +Libraries . Page 7 dc.1 $24F324F3 ;* Ny|Nz (0.16,0.16) 7* vertex: 5 de.1 $00310031 s* x [Y (16.0,16.0) (49,49) dc.1 $003224F3 ;* zZ [Nx (16.0,0.16) (50) | dc.1l $24F324F3 ;* Ny|Nz (0.16,0.16) ;* vertex: 6 dc.1 $0031FFCE 7* X |Y (16.0,16.0) (49,-50) de.l $003224F3 ;* Z Nx (16.0,0.16) (50) de.1 SDBOD24F3 s* Ny!Nz2 (0.16,0.16) { 7* vertex: 7 | dc.1 S$FFCFFFCE | ;* xX |Y (16.0,16.0) (-49,-50) . | de.l1 $0032DB0D ;* Z2 {Nx (16.0,0.16) (50) | | dc.1 $DBOD24F3 s* Ny|Nz (0.16,0.16) | ;* Model Size = ( 232 = Oxe8 ) bytes -texlist: \ + +«tboxlist: + +», See the sources for the 3D Demo program for further detail. | Fransformation & Display Routines At this time, the only documentation for the 3D transformation & display routines is contained within the comments of the actual source code itself. Please examine the 3D demo program source code for more information. + +The 3D demo program demonstrates the use of the 3D object transformation & rendering routines. It shows a detailed, texture-mapped spaceship and lets you move it around using the joypad. See the more detailed description in the Sample Programs section. + +© 1995 Atari Corp. + +Confidential Information “FER Property ofAtari Corporation + +26 April, 1995 + +' + +| + +Page 8 + +Libraries + +i | 4 | ; | 4 ; 5 a & 4 = + +| JPEG is a "lossy" compression scheme, meaning that the after being compressed and then ; | decompressed, the picture will not be exactly identical to the original. You can fine tune the | | compression quality as needed to strike the most acceptible balance between image quality and ' compression ratio. 4 Note: BPEG is primarily designed for RGB-mode graphics, and the compression utility takes RGB; : mode graphics files as input. However, the BPEG decompression library is capable of converting the 5 : images to CRY-mode on the fly when they are decompressed (at the cost of longer decompression a : times). & Note: The BPEG package replaces the JAGPEG package previously included with the Jaguar i Developer’s kit. The BPEG utility is easier to use, and the decompression library is faster and includes 4 : complete source code so that you can make any modifications required by your specific application. = Using the Compression UUlity) #§ #=§=§##= i The first thing you have to do is have a compressed image. Atari provides a tool in the Jaguar i developer's kit that allows you to compress Targa-format? picture files into BPEG format. See the | a Tools chapter for information about this utility. 8 | LetsCompressSomeimages== = = ................,ssCsd@ ( Using the compression tools is quite simple. Included in the BPEG package is a sample program that | 3 i displays two compressed pictures on the Jaguar screen. Normally, compressing the images istakencare @@% i of automatically by the MAKEFILE used by the sample program, but let’s do it manually so that you | 3 4 are familiar with the process. . : 1) Move to the \JAGUAR\BPEG to the \JAGUAR\BPEG the \JAGUAR\BPEG \JAGUAR\BPEG directory. The sample sample pictures FISH.TGA and PATRICK.TGA FISH.TGA and PATRICK.TGA and PATRICK.TGA PATRICK.TGA | + +| 8 | 3 @@% | 3 . | @ -_. + +i ‘ ! i i 4 + +E : , j a 4 2 | Gi + +## Jaguar BPEG image Compression &Decompression__ + +BPEG is a version of JPEG! for the Jaguar. The BPEG utility and library are provided to allow you to compress bitmapped RGB graphics to a small fraction of their original size, so that they use minimal space in your Jaguar programs. + +1) Move to the \JAGUAR\BPEG to the \JAGUAR\BPEG the \JAGUAR\BPEG \JAGUAR\BPEG directory. The sample sample pictures FISH.TGA and PATRICK.TGA FISH.TGA and PATRICK.TGA and PATRICK.TGA PATRICK.TGA provided are located in this directory. + +> 1 JPEG stands for Joint Photographic Experts Group. A JPEG picture is one that has been compressed using& the JPEG lossy file compression scheme. 2 Targa is a popular image file format for 16-bit and 24-bit RGB true color graphics. If your graphics programs do not support the Targa file format, then you should investigate one of the various file format conversion utilities. HiJack Pro for Windows is available at computer stores everywhere, and the shareware program Paint Shop Pro (for MS-Windows) is available online. 26 April, 1995 Confidential Information 7@® Property ofAtari Corporation © 1995 1995 Atari Corp. + +© 1995 1995 Atari Corp. + +Page 9 + +{ | | i ‘ i j ' | i i 1| | | | |[1] ' q | | i 4} ' ' | | j ; | + +- am Libraries2) Type in the command: 3 cbpeg -quality 25 fish.tga fish.bpg | We are compressing the file FISH.TGA to get the file FISH.BPG, using 2 quality setting of 25. ' The compression process will normally take just a few seconds, but of course this will vary depending on the size of the image, the quality percentage selected, and the speed of your + +- | computer. 3) Now you should have a file named FISH.BPG which is 9112 bytes, that's less than 5% the size of the original FISH.TGA file! + +- 4) Now type in the command: cbpeg -quality 75 patrick.tga patrick.bpg + +- | Now we are compressing the file PATRICK.TGA to PATRICK.BPG using a quality setting of 75. This should result in a file that is 6864 bytes long (less than 4% of the original file size). + +- | Note that this picture compressed to a smaller size than FISH.TGA even though we are using a higher quality setting. + +Later we will examine the sample program that displays these pictures on the Jaguar. ~ mn oa ee The BPEG:S file contains the source for the BPEG decompression routines. This file contains several flags which customize the operation of BPEG. While these flags are meant to be used at assembly time, you may wish to modify the code so that they may be set at runtime. The source is provided so that this sort of program-specific modification can be made. q The flags CRY15, CRY16, RGB1S5, RGB16, RGB32 defined at the top of BPEG:S control the output mode of the decompressor. One, and only one, of these flags must be set to TRUE (non-zero) and the others set to FALSE (zero). + +The BPEG functions are accessed via two 68000-based routines which call the GPU-based decompression code with the proper parameters. The decoding steps are: 1) Call BPEGInit (no input or output parameters). + +- | 2) _~—s Call BPEGDecode + +- + +AO.1 is the BPEG stream pointer A1.1 is the output buffer address DO.1 is the output buffer line width (in bytes) + +Confidential Information JER Property ofAtari Corporation + +} 3 © 1995 Atari Corp. + +26 April, 1995 + +, Libraries = - k i ; 7 P| + +Page 10 + +| DO = 0 (no problem)/ 1 (bad format) = 0 (no problem)/ 1 (bad format) 0 (no problem)/ 1 (bad format) (no problem)/ 1 (bad format) 1 (bad format) (bad format) format) | 3) Test BPEGSuatus BPEGSuatus (long). Possible values are: -1 (decoding) , | O (finished) (finished) 2 (decoding (decoding aborted, Huffman error) | If you want to decode another image, just go to step 2. BPEGInit copies copies the GPU GPU code in the GPU RAM, GPU RAM, RAM, without using the the blitter. You can change change this if the blitter is not not used at this moment. moment. : BPEGDecode sets some sets some some variables in the GPU, the GPU, GPU, and run it. The GPU GPU uses (corrupts) ALL REGISTERS (corrupts) ALL REGISTERS ALL REGISTERS REGISTERS E FROM BOTH BANKS, BOTH BANKS, BANKS, and almost almost all GPU memory GPU memory memory (the exact amount of memory exact amount of memory amount of memory of memory memory used depends depends onthe fl chosen output mode). mode). If you you require that some GPU some GPU GPU registers be be left alone (like for interrupt processing), for interrupt processing), processing), then you will you will will a edit the BPEG.S BPEG.S source file so that it leaves leaves a few few registers free. However, recognize that this will will | result in slower decode slower decode decode times. [ Note: If you're decoding an image in CRY15/CRY16 modes, you must have the 32Kb RGB->CRY P conversion table, and declare the GLOBAL symbol CRYTable, at the start of the table. This table is : included in the file RGB2CRY.S. a Tip: Don't forget that cartridge forget that cartridge that cartridge cartridge access is slower than RAM slower than RAM than RAM RAM access. It's a good idea to copy some of a good idea to copy some of good idea to copy some of idea to copy some of to copy some of copy some of some of of the + +| : 1 @@| ; a yo. | & L | | 7 . | rf | @ Eo -— | @ ‘ E: | 3 | 2 ._ . rf og ] 2 ] a ' + +| [ 4 \ + +; q 1 1 + +**==> picture [265 x 119] intentionally omitted <==** + +**----- Start of picture text -----**
+|
Output:
DO = 0 (no problem)/ 1 (bad format) = 0 (no problem)/ 1 (bad format) 0 (no problem)/ 1 (bad format) (no problem)/ 1 (bad format) 1 (bad format) (bad format) format)
3) Test BPEGSuatus BPEGSuatus (long). Possible values are:
-1 (decoding) ,
O (finished) (finished)
2 (decoding (decoding aborted, Huffman error)
**----- End of picture text -----**
+ + +BPEGInit copies copies the GPU GPU code in the GPU RAM, GPU RAM, RAM, without using the the blitter. You can change change this if the blitter is not not used at this moment. moment. + +BPEGDecode sets some sets some some variables in the GPU, the GPU, GPU, and run it. The GPU GPU uses (corrupts) ALL REGISTERS (corrupts) ALL REGISTERS ALL REGISTERS REGISTERS FROM BOTH BANKS, BOTH BANKS, BANKS, and almost almost all GPU memory GPU memory memory (the exact amount of memory exact amount of memory amount of memory of memory memory used depends depends onthe chosen output mode). mode). + +If you you require that some GPU some GPU GPU registers be be left alone (like for interrupt processing), for interrupt processing), processing), then you will you will will have to edit the BPEG.S BPEG.S source file so that it leaves leaves a few few registers free. However, recognize that this will will result in slower decode slower decode decode times. + +Tip: Don't forget that cartridge forget that cartridge that cartridge cartridge access is slower than RAM slower than RAM than RAM RAM access. It's a good idea to copy some of a good idea to copy some of good idea to copy some of idea to copy some of to copy some of copy some of some of of the BPEG tables into RAM before running the decoder, for ultimate speed. + +. + +TESTBPEG is a sample program that demonstrates how to take the files created with the BPEG tool and use them. This sample program is similar to many of the other sample programs for the most part, except that it sets up the video a bit differently with a 16-bit RGB mode instead of 16-bit CRY, anda creates a 16-bit RGB bitmap object instead of an 8-bit palette-based object. This is, of course, to accomodate the JPEG pictures which the program displays. + +Do not use this sample program as a demonstration of anything other than how to use the BPEG library. + +The interesting parts of this are in the TEST-S file, which sets up and calls the BPEG routines to decompress the pictures. It switches back and forth between two different pictures which were compressed with different quality settings. One of the pictures is 75% quality, the other is set to only 25% but still manages to look reasonably decent. 26 April, 1995 Confidential Information AER Property ofAtari Corporation © 1995 1995 Atari Corp. + +© 1995 1995 Atari Corp. + +Page I] + +j ' i | | | § { | { {| | ' i q : : { 4 j i ' j | | + +4 + +‘ | + +4 Libraries | com Below are some annotated excerpts from the TEST-S file of the TESTBPEG sample program. First we must declare the external references to the pictures and decompression code that will be + +added in at link time. + +: extern BPEGInit ; Copy over GPU code into GPU RAM -extern.extern BPEGDecodeBPEGStatus ;; Executesemaphoredecodefor "finishedroutines decoding” status extern fish_jpg ; picture #1 extern pat_jpg ; picture #2 Here's the code to actually call the BPEG routine to decompress and display one image, wait for it to finish decoding, and then go onto the next image. Note that this simple example does not check for errors returned by the BPEGDecode function. + +bsr BPEGInit ; copy over GPU code -show_fish: . dy lea fish_jpg,a0 ; Address of compressed picture data y nC lea bitmap_addr,al ; Get destination address move .1 4 ( (WIDTH*DEPTH) /8) ,d0 ; Width of destination bitmap, in bytes bsr BPEGDecode ; Decode image : .wait_fish:tst.l BPEGStatus ; Wait for decompression to finish bmi.s .wait_fish ; before continuins.-lea pat_jpg,a0 ; Address of compressed picture data lea bitmap addr,al 3 Get destination address move .1 ¥( (WIDTH*DEPTH) /8) ,d0 ; Width of destination bitmap, in bytes bsr BPEGDecode ; Decode image .wait_patrick:tst.1 BPEGStatus ; Wait for decompression to finish bmi.s .wait_patrick ; before continuing.-bra .show_fish ; Loop forever through both pictures Note that the pictures are switched back and forth as quickly as the decompression code can spit them out. Also take a look at the MAKEFILE, which shows how you can specify a command input file for the ALN linker to get around the 128-byte MSDOS commandline length limitation. The "-c testbpeg.Ink" option specifies that the linker should read input from the file TESTJPG.LNK, which in turn contains additional commands for the linker. + +i 1995 © 1995 Atari Corp. Confidential Information JER Property ofAtari Corporation 26 April, 1995 + +: + +a. vj j 4 + +: , + +q = : ' | s | : a = F 4 r 4 + +P | : | | j + +## From the MAKEFILE for TESTBPEG: + +testjpg.abs: $(OBJ) dehuff-.dat aln $(ALNFLAGS) ${OBJ) -c testjpg-lnk + +The contents of the TESTJPG.LNK file shows how the .JAG picture files are included in the program, as well as the DEJAG routine's -BIN file and .DAT files. + +## Contents of the TESTJPG.LNK file: + +-i fish.bpg fish jpg -i patrick.bpg pat_jpg + +The "-i" option tells ALN to include the file specified by the next parameter, and to create a label at that address as specified by the next parameter after that. Therefore, the first line of this file tells ALN to include the file FISH.BPG (the BPEG-compressed version of FISH.TGA) and to create a label "fish_jpg" at the address where the data from this file ends up in the resulting file. Then our test program refers to " fish_jpg " when it decompresses the picture (as shown in the sample code above). + +q + +26 April, 1995 + +Confidential Information ‘PER Property ofAtari Corporation + +© 1995 Atari Corp. + +4 4 ; + +Page 13 + +| A i j j : j | |: Er: + +| + +Libraries + +4 + +/ + +: + +| + +Cinepak Video Decompession & Playback . . : The Cinepak Video Decompression & Playback libraries,: related sample programs, and utilities are : . : @ discussed in a separate chapter. Please see the chapter Cinepak For Jaguar for more information. + +There are two basic types of networking that can be used with the Atari Jaguar. The first type is a local area network (LAN) with multiple Jaguar consoles in the same room or building connected via the asynchronous serial port. This is similar to a computer LAN setup. The second type of network is two | Jaguar consoles connected to each other over the telephone lines via the Jaguar modem. i At this time, the specifications for LAN-style networking is still in development within Atari. The ' specification for The Jaguar Voice Modem is given in its own section.. + +**==> picture [1 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +© 1995AtariCorp. + +Confidential Information “JPR Property ofAtariCorporation + +26April, 1995 + +| Page 14 Libraries | Sound in Jaguar is produced by the requires a synthesizer program running in the Digital Signal I Processor (DSP) in Jerry. This document describes the lowest level interface to one such program, i FULSYN, aka “the Jaguar Synth”. The Jaguar Synth is voice table driven. The main loop checks a voice table to see which voices are ; turned on, and then it calls the appropriate module for each active voice. There are twelve synthesis ie modules: 7 e 6 Sampler modules. e 3 FM Modules. : e 1 Wave Table module. e 2 Envelope-based Waveform modules q All of the modules can be placed at a stereo pan location. Sampler Modulesgggg i The Sampler modules allow either 8-bit or Sampler modules allow either 8-bit or modules allow either 8-bit or allow either 8-bit or either 8-bit or or 16-bit signed sample signed sample sample data, as well as a special compressed well as a special compressed as a special compressed a special compressed special compressed compressed ‘ format where where 16-bit data has been compressed data has been compressed has been compressed been compressed compressed 2:13. This compression compression is slightly lossy. All Samplers use use use i. data that is not not in Jerry's Jerry's internal RAM. RAM. All samplers also also support pitch shifting. The Samplers The Samplers Samplers have the | ability to loop within the sample so that long sustains may be achieved without using too much memory. loop within the sample so that long sustains may be achieved without using too much memory. within the sample so that long sustains may be achieved without using too much memory. the sample so that long sustains may be achieved without using too much memory. sample so that long sustains may be achieved without using too much memory. so that long sustains may be achieved without using too much memory. that long sustains may be achieved without using too much memory. long sustains may be achieved without using too much memory. sustains may be achieved without using too much memory. may be achieved without using too much memory. be achieved without using too much memory. achieved without using too much memory. using too much memory. too much memory. much memory. memory. much memory. memory. memory. 4 The parameters for the Sampler modules are: +o 4 e Pitch e Loop flag/Volume E e Pointer to sample data e End of loop : e Size of loop e Pan value | e Envelope Information (optional) 1 LL,rrrrrt~—t«s”—ia‘“‘“‘ONCOONCCOCONOCOC#COCC;’'CC;:CUCitéiéC®#® j The FM modules are simple to understand but produce a wide variety of sounds. In simple terms, an FM FM ’ synthesizer takes a 128 sample waveform where each sample consists of a 16 bit signed integer sign i extended to a 32 bit long. The synth then modulates the frequency according to another waveform (built ‘ like the first). The simple FM parameters are: | e Pitch e Volume 4 e Pointer to Sample Waveform e Pointer to Modulating Waveform q e Frequency of modulation e Depth of modulation 4 © Pan Value 4 | 3 This compression is done by the SNDCOMP utility. : 26 April, 1995 Confidential Information ‘JPR Property ofAtari Corporation © 1995 1995 Atari Corp. Corp. + +a Libraries | Signal @ program, I 4 a voices are synthesis = a |g modules = a compressed ] Samplers use use use have the (im too much memory. much memory. memory. much memory. memory. memory. @ E a | = . a : = terms, an FM FM : integer sign rf waveform (built | 4 P| i 4 4 , 4 fi. M F | © 1995 1995 Atari Corp. Corp. i , + +## Sampler Modulesgggg + +The Sampler modules allow either 8-bit or Sampler modules allow either 8-bit or modules allow either 8-bit or allow either 8-bit or either 8-bit or or 16-bit signed sample signed sample sample data, as well as a special compressed well as a special compressed as a special compressed a special compressed special compressed compressed ] format where where 16-bit data has been compressed data has been compressed has been compressed been compressed compressed 2:13. This compression compression is slightly lossy. All Samplers use use use data that is not not in Jerry's Jerry's internal RAM. RAM. All samplers also also support pitch shifting. The Samplers The Samplers Samplers have the (im ability to loop within the sample so that long sustains may be achieved without using too much memory. loop within the sample so that long sustains may be achieved without using too much memory. within the sample so that long sustains may be achieved without using too much memory. the sample so that long sustains may be achieved without using too much memory. sample so that long sustains may be achieved without using too much memory. so that long sustains may be achieved without using too much memory. that long sustains may be achieved without using too much memory. long sustains may be achieved without using too much memory. sustains may be achieved without using too much memory. may be achieved without using too much memory. be achieved without using too much memory. achieved without using too much memory. using too much memory. too much memory. much memory. memory. much memory. memory. memory. @ The parameters for the Sampler modules are: E a + +Libraries + +Page 15 + +**==> picture [214 x 23] intentionally omitted <==** + +**----- Start of picture text -----**
+@ © The complex FM module adds:
**----- End of picture text -----**
+ + +| + +e Pointer to Modulator of Modulation e Frequency of modulation of frequency e Depth of modulation of frequency e Frequency of modulation of depth e Depth of modulation of depth + +All envelope handling is done outside of the DSP by adjusting the volume of each voice. + +## Wavetable Module + +The wavetable synth uses a conceptually complex synthesis technique that offers a very wide degree of flexibility of sound with a modest computational overhead. The wavetable synth plays a set of instructions. An instruction defines a waveform, a time, a volume change, a fade time and a next instruction. The waveforms consist of 128 samples. Each sample is a 16 bit signed integer sign extended to a long. The waveforms are 512 bytes long and must start on a 512 byte boundary. The instructions may loop to form a sustain. Much of the flexibility of the wavetable synth is derived from the fact that as the synth switches from one instruction to the next, the output waveform is the linear interpolation between the waveforms in the two instructions. + +The parameters for the wave table synth are: + +## @ \@_ + +**==> picture [445 x 64] intentionally omitted <==** + +**----- Start of picture text -----**
+_ e@ PitchVolume ee Release FlagPointer to First Instruction
\ Pointer to Release Instruction @ Sample Length QN size)
® Pan Value
**----- End of picture text -----**
+ + +The Instructions contain: + +e Pointer to Sample e Number of Ticks to Play the Sample e Number of Ticks to Fade to Next Sample e Amplitude Fade e Pointer to Next Instruction + +The wavetable amplitude fade control acts like a built-in envelope. + +The Waveform module allows any 128 sample waveform (as defined for the wavetable synth) to be played to the DACs at any musical pitch. The volume of this is then modulated by what may be thought of as a very slow sample as an envelope. This envelope has the ability to loop so that long sustains may be achieved without using too much memory. The parameters for the waveform module are: + +ad Pointer to Waveform e Pointer to Envelope e Pitch 6 Loop flag & @ e Volume e Envelope rate e End of loop e Size of loop e Pan value + +oo © 1995 Atari Corp. Confidential Information “FOR Property of Atari Corporation 26 April, 1995 + +1 + +second version of the waveform module exists. version of the waveform module exists. of the waveform module exists. the waveform module exists. waveform module exists. module exists. exists. It uses a slope-destination, time envelope. The uses a slope-destination, time envelope. The a slope-destination, time envelope. The slope-destination, time envelope. The time envelope. The envelope. The The 4 j " amplitude information is about about the current point and the time current point and the time point and the time and the time the time time is the amount of time the amount of time amount of time of time time it takes to get from takes to get from to get from get from from ‘ previous point's amplitude point's amplitude amplitude to this this point's amplitude. The amplitude. The The sustain point for this envelope point for this envelope for this envelope this envelope envelope is the second the second second & the last point. The parameters point. The parameters The parameters parameters for this version version of the waveform the waveform waveform module are: p | Pointer to Waveform to Waveform Waveform e Pointer to Envelope Envelope 1 | Pitch e Loop flag flag - loops at the sustain point loops at the sustain point at the sustain point the sustain point sustain point point = Volume e Release slope = Pan value value Lf There are also two versions two versions versions of the sampler module which the sampler module which sampler module which module which which use this slope-destination slope-destination envelope. One is a ’ bit sampler and the other one sampler and the other one and the other one the other one other one one is a compressed compressed 16 bit sampler. sampler. | @ The last FM module, last FM module, FM module, module, called the FM/Env synth, combines the Simple FM wave generation with the the FM/Env synth, combines the Simple FM wave generation with the FM/Env synth, combines the Simple FM wave generation with the synth, combines the Simple FM wave generation with the combines the Simple FM wave generation with the the Simple FM wave generation with the Simple FM wave generation with the FM wave generation with the wave generation with the generation with the with the the : Waveform synth envelope generation. envelope generation. generation. @ To use the the synth follow these steps: 1) Load the synth code into the synth code into synth code into code into into the DSP. DSP. yo 2) Initialize some locations in DSP RAM. DSP RAM. P| 3) Initialize the DAC and DAC and and start the DSP. DSP. I | 4) Set up a "Voice Table". up a "Voice Table". a "Voice Table". "Voice Table". Table". f 4 5) Start the voice. the voice. | @ 6) Turn off voices off voices voices as required required , 4 7) Repeat from from (4). rf 4 Voice Tables Tables are stored in DSP RAM. stored in DSP RAM. in DSP RAM. DSP RAM. 1 | The DSP code, and all its internal variables, are in the bottom of DSP RAM. This allows DSP code, and all its internal variables, are in the bottom of DSP RAM. This allows code, and all its internal variables, are in the bottom of DSP RAM. This allows and all its internal variables, are in the bottom of DSP RAM. This allows all its internal variables, are in the bottom of DSP RAM. This allows internal variables, are in the bottom of DSP RAM. This allows variables, are in the bottom of DSP RAM. This allows are in the bottom of DSP RAM. This allows in the bottom of DSP RAM. This allows j | | TABLESTART (the start of the Voice Tables) of the Voice Tables) the Voice Tables) Voice Tables) Tables) to be quite low in DSP RAM (TABLESTART is a 4 define, use use it as the position may change). as the position may change). may change). change). The size of the table of the table the table table at TABLESTART TABLESTART is not defined in the synth itself, itself, it is determined by the programmer at run time (see table below). The remainder of DSP _ RAM should be used to store the following, should be used to store the following, be used to store the following, used to store the following, to store the following, store the following, the following, following, (a) Custom samples for both wavetable and FM synthesis, | & (b) Voice Tables, these must be contiguous with TABLESTART, Voice Tables, these must be contiguous with TABLESTART, Tables, these must be contiguous with TABLESTART, these must be contiguous with TABLESTART, must be contiguous with TABLESTART, be contiguous with TABLESTART, contiguous with TABLESTART, with TABLESTART, TABLESTART, (c) Wave Table instructions and (d) | @ Waveform envelopes. envelopes. Other uses for DSP RAM may arise as new synthesis modules are written. Each rg Voice Table starts with a long (32 bit) value that indicates Table starts with a long (32 bit) value that indicates starts with a long (32 bit) value that indicates with a long (32 bit) value that indicates a long (32 bit) value that indicates long (32 bit) value that indicates (32 bit) value that indicates bit) value that indicates value that indicates that indicates indicates if the voice is active or not. The legal values _. are: _ “ Value Voice Type Type Value Voice Type Type [0 |[Endofactivevoicesssss | 24| Wavetorm/Envelope Wavetorm/Envelope | 26 April, 1995 1995 Confidential Information Information “FER Property ofAtari Corporation ofAtari CorporationAtari Corporation Corporation © 1995 Atari Corp. 2 + +q To use the the synth follow these steps: f 1) Load the synth code into the synth code into synth code into code into into the DSP. DSP. | 2) Initialize some locations in DSP RAM. DSP RAM. i 3) Initialize the DAC and DAC and and start the DSP. DSP. | 4) Set up a "Voice Table". up a "Voice Table". a "Voice Table". "Voice Table". Table". ‘ 5) Start the voice. the voice. 4 6) Turn off voices off voices voices as required required 4 7) Repeat from from (4). Voice Tables Tables are stored in DSP RAM. stored in DSP RAM. in DSP RAM. DSP RAM. i The DSP code, and all its internal variables, are in the bottom of DSP RAM. This allows DSP code, and all its internal variables, are in the bottom of DSP RAM. This allows code, and all its internal variables, are in the bottom of DSP RAM. This allows and all its internal variables, are in the bottom of DSP RAM. This allows all its internal variables, are in the bottom of DSP RAM. This allows internal variables, are in the bottom of DSP RAM. This allows variables, are in the bottom of DSP RAM. This allows are in the bottom of DSP RAM. This allows in the bottom of DSP RAM. This allows q TABLESTART (the start of the Voice Tables) of the Voice Tables) the Voice Tables) Voice Tables) Tables) 4 define, use use it as the position may change). as the position may change). may change). change). The size of the table of the table the table table at TABLESTART TABLESTART 4 synth itself, itself, | RAM should be used to store the following, should be used to store the following, be used to store the following, used to store the following, to store the following, store the following, the following, following, 4 (b) Voice Tables, these must be contiguous with TABLESTART, Voice Tables, these must be contiguous with TABLESTART, Tables, these must be contiguous with TABLESTART, these must be contiguous with TABLESTART, must be contiguous with TABLESTART, be contiguous with TABLESTART, contiguous with TABLESTART, with TABLESTART, TABLESTART, | Waveform envelopes. envelopes. 4 Voice Table starts with a long (32 bit) value that indicates Table starts with a long (32 bit) value that indicates starts with a long (32 bit) value that indicates with a long (32 bit) value that indicates a long (32 bit) value that indicates long (32 bit) value that indicates (32 bit) value that indicates bit) value that indicates value that indicates that indicates indicates 4 are: 4 Value Voice Type Type Value Voice Type Type 1 [0 |[Endofactivevoicesssss | 24| Wavetorm/Envelope Wavetorm/Envelope j 26 April, 1995 1995 Confidential Information Information “FER Property ofAtari Corporation ofAtari CorporationAtari Corporation Corporation + +( Page 16 Libraries Waveiaule With Envelope Monte= | A second version of the waveform module exists. version of the waveform module exists. of the waveform module exists. the waveform module exists. waveform module exists. module exists. exists. It uses a slope-destination, time envelope. The uses a slope-destination, time envelope. The a slope-destination, time envelope. The slope-destination, time envelope. The time envelope. The envelope. The The 4 { amplitude information is about about the current point and the time current point and the time point and the time and the time the time time is the amount of time the amount of time amount of time of time time it takes to get from takes to get from to get from get from from ‘ the previous point's amplitude point's amplitude amplitude to this this point's amplitude. The amplitude. The The sustain point for this envelope point for this envelope for this envelope this envelope envelope is the second the second second & to the last point. The parameters point. The parameters The parameters parameters for this version version of the waveform the waveform waveform module are: p | e Pointer to Waveform to Waveform Waveform e Pointer to Envelope Envelope 1 | : e Pitch e Loop flag flag - loops at the sustain point loops at the sustain point at the sustain point the sustain point sustain point point = ® Volume e Release slope = | e Pan value value Lf There are also two versions two versions versions of the sampler module which the sampler module which sampler module which module which which use this slope-destination slope-destination envelope. One is a ’ ‘ 16 bit sampler and the other one sampler and the other one and the other one the other one other one one is a compressed compressed 16 bit sampler. sampler. | i The last FM module, last FM module, FM module, module, called the FM/Env synth, combines the Simple FM wave generation with the the FM/Env synth, combines the Simple FM wave generation with the FM/Env synth, combines the Simple FM wave generation with the synth, combines the Simple FM wave generation with the combines the Simple FM wave generation with the the Simple FM wave generation with the Simple FM wave generation with the FM wave generation with the wave generation with the generation with the with the the : | Waveform synth envelope generation. envelope generation. generation. @ + +i } fi y i i { | i | f { i i i || | q | ( j q ‘ | | | ; j1 ( i 4 ‘ 4 . ; : + +Page 17 + +**==> picture [500 x 88] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||| +|---|---|---|---|---| +|Libraries| +|i|Value|Voice Type|Value|Voice Type| +|.|16-bit Sampler|||40 _| 16-bit Sample/Slope Destination Envelope| +|44|| Compressed|16-bit Sample/Slope| +|Destination|Envelope| +|2N wavetable wavetable|48|Sound Effects Sampler Module Effects Sampler Module Sampler Module| +|(uses|16-bit compressed samples) compressed samples) samples)| + +**----- End of picture text -----**
+ + +, S 2N wavetable wavetable 48 Sound Effects Sampler Module Effects Sampler Module Sampler Module (uses 16-bit compressed samples) compressed samples) samples) | | ‘The values in the rest of the Voice table are given in the following pages. In the tables that follow, the § = symbol * means this value may be changed while the note is active. Values not specified do not need to B be set. The end of the Table list is indicated by a O where the next table would start. When doing polyphonic synthesis (more than one note at a time), the volume of each voice must be reduced to avoid overflow. For example a single loud voice would have a volume of about $6000. Adding 3 of these would overflow 16 bits. To avoid this you must scale down the volume of each voice | such that the total fits into 16 bits. In the preceding example a reduction of about 3 would work. | ‘The values to use for pitch are given in the accompanying spreadsheet. Find the note that you want the ' value for. The values for the FM synths and the wavetable synth are in the column marked (64K) for the other modules the value to use is in the column (256). | — = The synth has a certain amount of time available to synthesize each sample, during that time it can do ga, Only SO much. The total time available is 168 time units (these are not clock ticks). The following is a Be list of the approximate number of time units used by each synth module: Simple FM ~15 time units ; Complex FM ~24 time units ; FM/Env ~23 time units | Samplers ~19 time units Wave Table ~18 time units ' Waveform synth ~19 time units Waveform with slope-destination envelope ~17 time units Sampler with slope-destination envelope ~23 time units | Skip a voice ~3 time units + +These numbers may change as the synth modules are modified and optimized. The timings above assume that all table and sample data are in internal DSP memory (except for sample used by the Sampler module). The numbers given for the Sampler modules assume that the main bus is not busy doing other things. The total number of time units used can be computed from these numbers and kept below 167. The number available can be read from a location in DSP RAM called TIMELEFT. Note: The 168 time units will reduce if oversampling is added to the synth. y The above timings assume that the synth is running at the default rate of ~20kHz. This can be changed by modifying the value stored in SCLK. If this is done then all of the pitch information will need to be # © ~=— modified. + +] | + +© 1995 Atari Corp. + +Confidential Information JER Property ofAtari Corporation + +26 April, 1995 + +| Page 18 | Module Definitions = | / Offset q (longs) Description | ) Voice type type (8) i. 1 Pointer to Carrier Wave. to Carrier Wave. Carrier Wave. Wave. Must be on a long | 2 Pointer to Modulating Wave. to Modulating Wave. Modulating Wave. Wave. | 3 Reset to zero. to zero. zero. : 4 Pitch. Given as the size the size size of a a step | 5 Reset to to zero. 4 6 Volume of this voice, of this voice, this voice, voice, 15 bits. 7 Reset to to zero. : 8 Frequency of Modulation. Modulation. 9 Depth of modulation. modulation. This is a a 7.8 number. 19 Pan Value. Value. 0 is full right, | : Offset + +’ Ps r | . 3 | § - q : P| : i Z 4 : | | @ = - 4 q . + +**==> picture [37 x 26] intentionally omitted <==** + +**----- Start of picture text -----**
+Libraries
**----- End of picture text -----**
+ + +**==> picture [486 x 190] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +|Simple|FM| +|Offset| +|(longs)|Description| +|)|Voice type type|(8)| +|1|Pointer to Carrier Wave. to Carrier Wave. Carrier Wave. Wave.|Must be on a long|(82|bit)|boundary|(should|be DSP memory|for speed).|#| +|2|Pointer to Modulating Wave. to Modulating Wave. Modulating Wave. Wave.|Must be on|a|long|(32|bit)|boundary|(should be DSP memory for| +|3|Reset to zero. to zero. zero.| +|4|Pitch.|Given as the size the size size|of a a step|in samples as a 15.16 number.|%| +|5|Reset to to|zero.| +|6|Volume of this voice, of this voice, this voice, voice,|15|bits.|&| +|7|Reset to to|zero.| +|8|Frequency|of Modulation. Modulation.|Given|as the size|of a step|in samples|as a 15.16|number.|*| +|9|Depth|of modulation. modulation.|This|is a a 7.8 number.|=| +|19|Pan Value. Value.|0|is|full|right,|$3FFF|is|balanced,|$7FFF|is|full|left.|%| + +**----- End of picture text -----**
+ + +## Offset (longs) Description + +## Complex FM + +[__2 _| Pointer to Modulating Wave. Must be on a long (82 bit) boundary in internal DSP memory. ® | + +**==> picture [39 x 24] intentionally omitted <==** + +**----- Start of picture text -----**
+| . :
**----- End of picture text -----**
+ + +q + +26 April, 1995 + +Confidential Information FER Property ofAtari Corporation + +© 1995 Atari Corp. + +Page 19 + +| i j i ij i j | | {i {|[|] | { | q 1 { / | 1 | |["] , 4 : + +» |@ + +**==> picture [535 x 203] intentionally omitted <==** + +**----- Start of picture text -----**
+Libraries
:
7 rewi §6Offset Sampler
| [0(longs)__| VoiceDescription type (12 = 16 bit, 28 = 8 bit; 32 = compressed 16 bit)
[2 High bit is the loop flag. The low 15 bits are the volume. ©
[3 _ _ | P ointeritch. Given to Sample. as the Must be on size of a step a inword samples (sample as size) a 23.8 boundary number. outside_* of internal DSP memory.
End of loop in samples as a 23.8 number. For a non-looping sample this is the sample number at
end of the sample. When the current pointer passes this point the Voice type is set to -4. Fora
looped sample this is end point of the loop. This is given in samples as an integer with no fractional
part. %
| [5
||6_.19 _|_ | Pan[Loop lengthReset Value. to zero. 0 inis full samples. right, This $SFFF is a is 23.8 balanced, number. $7FFF© is full left. *
**----- End of picture text -----**
+ + +: + +Samples can be looped. (Note that this is a separate issue from looping in a music score.) Sample looping works like this. Assume a sample in memory. There are four points of interest. + +## y + +. @e TheThe beginningstart of the ofsample. the loop. @ The end of the loop. e The end of the sampie. |o To play a looped sample: e Turn on the loop flag. e Set the End Loop to the end of the loop. (In samples) e Set the loop length (in samples) so that (Loop End - Loop length) = (beginning of the loop). + +This will play the sample until it reaches the loop point, at which point it will loop backwards by loop length samples. Looping will occur continuously until you stop it. To stop looping, set the End loop value to the end of the sample (in samples) and clear the loop flag. At the end of a sample the voice type is set to -4 by the synth. This allows the voice to be skipped. The voice may be reused at this point. + +| |@ | © 1995 Atari Corp. Confidential Information “PO® Property of Atari Corporation 26 April, 1995 ' | i + +| ; | ia | 1 + +Page 20 + +Libraries + +| a a a —_ ; = = + +| |: i. + +Pg + +; J . j Ss + +] + +; | | & | - : 2 =_ + +1 | + +Lo ; : + +| 4 4 F | + +_ + +**==> picture [513 x 212] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||| +|---|---|---|---|---|---| +|N| +|2|Wave|Table| +|Offset| +|(longs)|Description| +|23.8 number.|&| +|performance|reasons|it should|be|in DSP|RAM.| +||__||[feromanceressonstshousteinbermai]| +|Size|of wavetable|sample.|This|23.8|numberis2__.| +|}|performance reasons|it should be in DSP RAM. At the end of the release sequence this|is set to -1.| + +**----- End of picture text -----**
+ + +After the release sequence completes, the pointer at offset 10 is set to -1 to indicate that the voice may be reused. + +**==> picture [487 x 220] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||| +|---|---|---|---|---|---|---|---|---|---|---| +|Waveform| +|Offset| +|(longs)|Description| +|1|Pointer to Waveform.|Must be on 512|byte boundary.|For performance|it should|be|in|internal DSP| +|a|Pointeperfo|r|mance to Simpleit|should Envelopebe|in (seeinternal separateOSP|memory. definition).|Must be on a long (32|bit) boundary. For| +|End|of loop|in samples|as a 15.16|number.|For a non-looping sample this|is the sample number at| +|end|of the sample. When the|current|pointer|passes|this|point the Voice type|is|set to|-4.|For a| +|part.|&| + +**----- End of picture text -----**
+ + +Note: See the discussion on looping for the Sampler module. + +4 + +26 April, 1995 + +Confidential Information “POR Property of Atari Corporation + +©1995 Atari Corp. + +Wi. j + +g Libraries ae E | Offset + +Page 21 + +i | t : | | : : i 1 q | 1 | ii + +ft + +Fa + +| + +## FM Envelope + +Offset (longs) Description 1 Pointer to Carrier Wave. Must be on a long (32 bit) boundary (should be DSP memory for a FoRperformance). © + +Reset to zero. + +Pointer to Simple Envelope (see separate definition). Must be on a long (32 bit) boundary (should be DSP memory for best performance). = + +- 79 Pan Value. 0 is full ight, SSFFF is balanced, $7FFF is fullleft# + +$m Note: See the information on looping for the Sampler module. + +Offset (longs) Description + +## Waveform with Slope-Destination Envelope + +memory + +na Pointerboundary. to Slope-DestinationFor best performance envelope in should (see separate be in internal definition). DSP memory.Must be on a long (32-bit) + +4 ‘ . + +i + +© 1995 Atari Corp. + +Confidential Information “F@® Property of Atari Corporation + +26 April, 1995 + +Page 22 + +Libraries + +o, + +. c ; + +||Sampler With Envelope| +|---|---| +|Offset|| +|(longs)
FO|Description
|Voletype(40=16bi,44= compressed16b)| +|[6
le||Resettozero.
Endof **S**ample This
aga numbenOOSOS—SCOCCCCCSCSC~S*Y| +||(shouldbeDSPmemoryforbestperformance).*| + + + +Note: See the information on looping for the Sampler module. + +|Sound Effects Sampler|.| +|---|---| +|Offset
(longs)
Description
| 0 |Voicetype(48= compressed 16bi)|| +|[ehcherptawonotadnces
exact,otherpitchesmightaddnoise*
[6 |Resettozero.
[8|EndofSample.Thisisa2a8number|| + + + +This is a one-shot, non-looping, non-interpolated sampler module. The sample will only sound exact when played at its original pitch. The advantage of this module is that it is very fast, using only 12 to 13 time units. It is ideal for one-shot samples like sound effects or percussion instruments. + +**==> picture [32 x 19] intentionally omitted <==** + +**----- Start of picture text -----**
+ce\ 4
**----- End of picture text -----**
+ + +| | + +26 April, 1995 + +Confidential Information “70® Property ofAtari Corporation + +© 1995 Atari Corp. + +|{ | |i i} 1 : i ' | i | + +; + +i + +| + +| ; ‘ t :: . : . + +Offset + +## Wave Table Instructions + +(tongs) Description Pointer to sample to be played. Must be on a 512 byte boundary. For performance should be it | should be in internal DSP memory. [27 __| —TonsedSSCSTime. Length of time, in ticks to play this sample. Fade value. This value sets the amplitude change per tick of fade. A becomes A*n, where n is a scaled 15 bit number. n = $4000 is no change, n = $2000 is divide volume by two, etc. 4 N-1 } Fade length. The length of the fade given as N where the fade lasts o! ) ticks. 2 <=N <= 14. Pointer to next instruction. May be anywhere in memory on a long (32 bit) boundary. For performance reasons it should be in DSP RAM. This should be set to -1 to indicate the end of the : voice. + +Offset (longs) Description + +## Simple Envelope + +**==> picture [538 x 326] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||| +|---|---|---|---|---|---|---|---|---|---| +|aesses| +|| ees| +|Ce|eer|ee|e|n| +||| +|7|Slope-Destination|Envelope| +|Offset| +|;|(longs)|Description| +|||0|__||Must be set to 0x00010000| +|Must|be|set|to|0x00000001| +|:|||2|_||Slope value,|in|15.15 format| +|||[3|__||Destination|value,|in|15.15 format| +|'|Slope value,|in|15.15|format| +|||||5|||Destination|value,|in|15.15 format| +|||6|__||Slope value,|in 15.15 format| +|Destination|value,|in|15.15|format| +|[8| +|-|9|__|||Must|be|set|to|0x000|02|0000| + +**----- End of picture text -----**
+ + +© 1995 Atari Corp. + +Confidential Information “FO® Property of Atari Corporation + +26 April, 1995 + +t + +: Page 24 24 Libraries Jaguar Music Driver Driver sc The Jaguar Music Jaguar Music Music driver is an extension is an extension an extension extension to the sound system the sound system sound system system described in the section The in the section The the section The The Jaguar Synth. Synth. : It is assumed is assumed assumed that the reader the reader reader is familiar with familiar with with that section. section. In either case, either case, the code is the same, FULSYN. code is the same, FULSYN. is the same, FULSYN. the same, FULSYN. same, FULSYN. FULSYN. 1 The only difference only difference difference is that one of Jerry's timers that one of Jerry's timers one of Jerry's timers of Jerry's timers Jerry's timers timers is used to run a used to run a to run a run a a real time time interpreter of preparsed MIDI preparsed MIDI MIDI | data. This is then used to automatically This is then used to automatically is then used to automatically then used to automatically used to automatically to automatically automatically turn the first n voices on and off. n voices on and off. voices on and off. on and off. and off. off. This requires the voicetable requires the voicetable the voicetable voicetable to 1 be at least n n entries in in length. The number of voices used The number of voices used number of voices used of voices used voices used used is set set in the the file PARSE.CNF. PARSE.CNF. For simplicity, simplicity, i this document will document will will assume that n = n = = 8. The sample The sample sample rate of the underlying synth of the underlying synth the underlying synth underlying synth is assumed assumed to be the be the the ] default ~20kHz. ~20kHz. If this this is changed then a new copy of NOTES.CNF must be generated. changed then a new copy of NOTES.CNF must be generated. then a new copy of NOTES.CNF must be generated. new copy of NOTES.CNF must be generated. copy of NOTES.CNF must be generated. of NOTES.CNF must be generated. NOTES.CNF must be generated. must be generated. generated. 1 The system system is used as follows: ' 1) A MIDI MIDI file is created in created in in file 0 format with no more than 8 note polyphony. format with no more than 8 note polyphony. with no more than 8 note polyphony. no more than 8 note polyphony. more than 8 note polyphony. than 8 note polyphony. 8 note polyphony. note polyphony. polyphony. This file is converted to a simplified format by simplified format by format by by the program program PARSE, just just type ‘parse filename.mid' on the commandline‘. commandline‘. It creates creates a MADMAC MADMAC assembly source code code file containing data : statements representing the MIDI MIDI score information. information. The default output filename output filename filename is TEST.OUT. TEST.OUT. When PARSE runs, PARSE runs, runs, it also produces a description of the also produces a description of the produces a description of the a description of the description of the of the the file to standard output (this can to standard output (this can standard output (this can (this can can optionally be disabled). be disabled). disabled). This should usually be redirected usually be redirected be redirected redirected to a file. If one one exists in the current current directory, PARSE also reads a file named PARSE.CNF. named PARSE.CNF. PARSE.CNF. This file is used to create patch maps. The default mapping is for all channels channels to map map to the the patch at their channel channel number (see (see the provided PARSE.CNF PARSE.CNF file for the format). for the format). the format). j Looping in the MIDI the MIDI MIDI file is supported supported using the following following controller events: Controller 12 marks marks | loop targets, the value on controller value on controller on controller controller 12 is the target number; the target number; target number; number; Controller 13 selects a loop target a loop target loop target target and should be be followed immediately by a Controller Controller 14 event that gives gives the number number of times to loop. A negative A negative negative loop count causes count causes causes it to loop forever. A comment comment is inserted into inserted into into the output output file that can be made be made made into a label so that loop counts can be counts can be can be reset to loop more than more than than 127 times. For more information see the format of the the music events at the end of this of this this document. pS 2) A set of patches and envelopes are created using the format described in The Jaguar Synth for of patches and envelopes are created using the format described in The Jaguar Synth for patches and envelopes are created using the format described in The Jaguar Synth for and envelopes are created using the format described in The Jaguar Synth for envelopes are created using the format described in The Jaguar Synth for are created using the format described in The Jaguar Synth for created using the format described in The Jaguar Synth for the format described in The Jaguar Synth for format described in The Jaguar Synth for described in The Jaguar Synth for in The Jaguar Synth for The Jaguar Synth for Jaguar Synth for Synth for for + +Page 24 24 Libraries Jaguar Music Driver Driver sc CR The Jaguar Music Jaguar Music Music driver is an extension is an extension an extension extension to the sound system the sound system sound system system described in the section The in the section The the section The The Jaguar Synth. Synth. ' It is assumed is assumed assumed that the reader the reader reader is familiar with familiar with with that section. section. In either case, either case, the code is the same, FULSYN. code is the same, FULSYN. is the same, FULSYN. the same, FULSYN. same, FULSYN. FULSYN. The only difference only difference difference is that one of Jerry's timers that one of Jerry's timers one of Jerry's timers of Jerry's timers Jerry's timers timers is used to run a used to run a to run a run a a real time time interpreter of preparsed MIDI preparsed MIDI MIDI a data. This is then used to automatically This is then used to automatically is then used to automatically then used to automatically used to automatically to automatically automatically turn the first n voices on and off. n voices on and off. voices on and off. on and off. and off. off. This requires the voicetable requires the voicetable the voicetable voicetable to a be at least n n entries in in length. The number of voices used The number of voices used number of voices used of voices used voices used used is set set in the the file PARSE.CNF. PARSE.CNF. For simplicity, simplicity, | this document will document will will assume that n = n = = 8. The sample The sample sample rate of the underlying synth of the underlying synth the underlying synth underlying synth is assumed assumed to be the be the the 3 default ~20kHz. ~20kHz. If this this is changed then a new copy of NOTES.CNF must be generated. changed then a new copy of NOTES.CNF must be generated. then a new copy of NOTES.CNF must be generated. new copy of NOTES.CNF must be generated. copy of NOTES.CNF must be generated. of NOTES.CNF must be generated. NOTES.CNF must be generated. must be generated. generated. ] The system system is used as follows: : 1) A MIDI MIDI file is created in created in in file 0 format with no more than 8 note polyphony. format with no more than 8 note polyphony. with no more than 8 note polyphony. no more than 8 note polyphony. more than 8 note polyphony. than 8 note polyphony. 8 note polyphony. note polyphony. polyphony. This file is -_ converted to a simplified format by simplified format by format by by the program program PARSE, just just type ‘parse filename.mid' g on the commandline‘. commandline‘. It creates creates a MADMAC MADMAC assembly source code code file containing data | statements representing the MIDI MIDI score information. information. The default output filename output filename filename is TEST.OUT. TEST.OUT. : When PARSE runs, PARSE runs, runs, it also produces a description of the also produces a description of the produces a description of the a description of the description of the of the the file to standard output (this can to standard output (this can standard output (this can (this can can j optionally be disabled). be disabled). disabled). This should usually be redirected usually be redirected be redirected redirected to a file. If one one exists in the current current ra directory, PARSE also reads a file named PARSE.CNF. named PARSE.CNF. PARSE.CNF. This file is used to create patch maps. The default mapping is for all channels channels to map map to the the patch at their channel channel number (see (see the 4 provided PARSE.CNF PARSE.CNF file for the format). for the format). the format). 4) « Looping in the MIDI the MIDI MIDI file is supported supported using the following following controller events: Controller 12 marks marks | z= loop targets, the value on controller value on controller on controller controller 12 is the target number; the target number; target number; number; Controller 13 selects a loop target a loop target loop target target j and should be be followed immediately by a Controller Controller 14 event that gives gives the number number of times to g loop. A negative A negative negative loop count causes count causes causes it to loop forever. A comment comment is inserted into inserted into into the output output file .- that can be made be made made into a label so that loop counts can be counts can be can be reset to loop more than more than than 127 times. For = more information see the format of the the music events at the end of this of this this document. a 2) A set of patches and envelopes are created using the format described in The Jaguar Synth for of patches and envelopes are created using the format described in The Jaguar Synth for patches and envelopes are created using the format described in The Jaguar Synth for and envelopes are created using the format described in The Jaguar Synth for envelopes are created using the format described in The Jaguar Synth for are created using the format described in The Jaguar Synth for created using the format described in The Jaguar Synth for the format described in The Jaguar Synth for format described in The Jaguar Synth for described in The Jaguar Synth for in The Jaguar Synth for The Jaguar Synth for Jaguar Synth for Synth for for : | voicetable entries, with a few differences. . a) In all of the FM modulation frequency controls, the rate may be made proportional to the f 7 . pitch of the note or left absolute. This is controlled by the high order bit of the frequency. The 4 relative frequency is a 23:8 integer:fraction number. For example the value $80000100 results in ? the modulation frequency being the same as the pitch. , 4 b) A new parameter, the envelope/sample end point, is specified in the patch at the following ; locations: = 4 You can also manipulate your program's MAKEFILE so that the MIDI file is essentially the 'source' file and whenever | L it is updated, the PARSE and MADMAC programs will be called automatically by the MAKE utility. See the 3 MAKEFILE for the sample program provided with the Jaguar Synth & Music Driver. 4 26 April, 1995 Confidential Information FER Property ofAtari Corporation ©1995 AtariCorp, 2h + +j [ j + +j : + +Page 25 ( \ Module Offset : i Samplers 8 ‘ Waveform 10 : FM/Env 15 c) For all samplers, For all samplers, all samplers, samplers, the pitch may be adjusted by a factor placed in the pitch parameter of the may be adjusted by a factor placed in the pitch parameter of the be adjusted by a factor placed in the pitch parameter of the adjusted by a factor placed in the pitch parameter of the by a factor placed in the pitch parameter of the a factor placed in the pitch parameter of the placed in the pitch parameter of the in the pitch parameter of the the pitch parameter of the pitch parameter of the parameter of the of the the patch. The value $1000 means no change, $800 drops the pitch by a factor of 2 (one octave) and The value $1000 means no change, $800 drops the pitch by a factor of 2 (one octave) and value $1000 means no change, $800 drops the pitch by a factor of 2 (one octave) and $1000 means no change, $800 drops the pitch by a factor of 2 (one octave) and means no change, $800 drops the pitch by a factor of 2 (one octave) and no change, $800 drops the pitch by a factor of 2 (one octave) and change, $800 drops the pitch by a factor of 2 (one octave) and $800 drops the pitch by a factor of 2 (one octave) and drops the pitch by a factor of 2 (one octave) and the pitch by a factor of 2 (one octave) and pitch by a factor of 2 (one octave) and by a factor of 2 (one octave) and a factor of 2 (one octave) and factor of 2 (one octave) and of 2 (one octave) and 2 (one octave) and (one octave) and octave) and and | a value of $2000 raises the pitch by a factor of 2. value of $2000 raises the pitch by a factor of 2. $2000 raises the pitch by a factor of 2. raises the pitch by a factor of 2. the pitch by a factor of 2. by a factor of 2. a factor of 2. factor of 2. of 2. 2. ; d) For all patches, all patches, patches, the volume may be adjusted by a factor placed in the volume parameter of volume may be adjusted by a factor placed in the volume parameter of may be adjusted by a factor placed in the volume parameter of be adjusted by a factor placed in the volume parameter of adjusted by a factor placed in the volume parameter of by a factor placed in the volume parameter of a factor placed in the volume parameter of factor placed in the volume parameter of placed in the volume parameter of in the volume parameter of the volume parameter of volume parameter of parameter of of \ the patch. The value $100 means no change, $80 drops the volume by a factor of 2, and a value value $100 means no change, $80 drops the volume by a factor of 2, and a value $100 means no change, $80 drops the volume by a factor of 2, and a value means no change, $80 drops the volume by a factor of 2, and a value no change, $80 drops the volume by a factor of 2, and a value change, $80 drops the volume by a factor of 2, and a value $80 drops the volume by a factor of 2, and a value drops the volume by a factor of 2, and a value the volume by a factor of 2, and a value volume by a factor of 2, and a value by a factor of 2, and a value a factor of 2, and a value factor of 2, and a value of 2, and a value 2, and a value and a value a value value of $200 raises the volume by $200 raises the volume by raises the volume by the volume by volume by by a factor of 2. of 2. 2. \ The files are built into a program (see below) i E| The program program is run and out comes the music. run and out comes the music. and out comes the music. out comes the music. comes the music. the music. music. program PARSE converts the MIDI file into MADMAC assembler source code using dc.] PARSE converts the MIDI file into MADMAC assembler source code using dc.] converts the MIDI file into MADMAC assembler source code using dc.] the MIDI file into MADMAC assembler source code using dc.] MIDI file into MADMAC assembler source code using dc.] file into MADMAC assembler source code using dc.] into MADMAC assembler source code using dc.] MADMAC assembler source code using dc.] assembler source code using dc.] source code using dc.] code using dc.] using dc.] dc.] i It is assembled and converted to a SCR files. At this time PARSE and the interpreter is assembled and converted to a SCR files. At this time PARSE and the interpreter assembled and converted to a SCR files. At this time PARSE and the interpreter converted to a SCR files. At this time PARSE and the interpreter to a SCR files. At this time PARSE and the interpreter a SCR files. At this time PARSE and the interpreter SCR files. At this time PARSE and the interpreter files. At this time PARSE and the interpreter At this time PARSE and the interpreter this time PARSE and the interpreter time PARSE and the interpreter PARSE and the interpreter and the interpreter the interpreter interpreter | the MIDI functions for note on/off, MIDI volume, pitch bend, pan, tempo change, and MIDI functions for note on/off, MIDI volume, pitch bend, pan, tempo change, and functions for note on/off, MIDI volume, pitch bend, pan, tempo change, and for note on/off, MIDI volume, pitch bend, pan, tempo change, and note on/off, MIDI volume, pitch bend, pan, tempo change, and on/off, MIDI volume, pitch bend, pan, tempo change, and MIDI volume, pitch bend, pan, tempo change, and volume, pitch bend, pan, tempo change, and pitch bend, pan, tempo change, and bend, pan, tempo change, and pan, tempo change, and tempo change, and change, and and i i The system assumes envelopes are also provided using dc.| directives. These are assembled system assumes envelopes are also provided using dc.| directives. These are assembled assumes envelopes are also provided using dc.| directives. These are assembled envelopes are also provided using dc.| directives. These are assembled are also provided using dc.| directives. These are assembled provided using dc.| directives. These are assembled using dc.| directives. These are assembled dc.| directives. These are assembled directives. These are assembled These are assembled are assembled assembled | into the DSP the DSP DSP at runtime runtime Jaguar sound system may be thought of as having two separate components, a synthesizer and a sound system may be thought of as having two separate components, a synthesizer and a system may be thought of as having two separate components, a synthesizer and a may be thought of as having two separate components, a synthesizer and a be thought of as having two separate components, a synthesizer and a thought of as having two separate components, a synthesizer and a as having two separate components, a synthesizer and a having two separate components, a synthesizer and a two separate components, a synthesizer and a separate components, a synthesizer and a components, a synthesizer and a a synthesizer and a synthesizer and a and a a i i interpreter. These two sections are quite independent, These two sections are quite independent, two sections are quite independent, sections are quite independent, are quite independent, quite independent, independent, although the second requires the first to the second requires the first to second requires the first to requires the first to first to to i generate sound. use the system, follow these steps. For clarity follow along ig the sample code (DRIVER:S), Load the system, follow these steps. For clarity follow along ig the sample code (DRIVER:S), Load system, follow these steps. For clarity follow along ig the sample code (DRIVER:S), Load follow these steps. For clarity follow along ig the sample code (DRIVER:S), Load these steps. For clarity follow along ig the sample code (DRIVER:S), Load steps. For clarity follow along ig the sample code (DRIVER:S), Load For clarity follow along ig the sample code (DRIVER:S), Load clarity follow along ig the sample code (DRIVER:S), Load follow along ig the sample code (DRIVER:S), Load along ig the sample code (DRIVER:S), Load ig the sample code (DRIVER:S), Load the sample code (DRIVER:S), Load sample code (DRIVER:S), Load code (DRIVER:S), Load (DRIVER:S), Load Load | DSP code into DSP RAM, set up 2 voice table, turn on the IS port, start the DSP and turn off mute. code into DSP RAM, set up 2 voice table, turn on the IS port, start the DSP and turn off mute. into DSP RAM, set up 2 voice table, turn on the IS port, start the DSP and turn off mute. DSP RAM, set up 2 voice table, turn on the IS port, start the DSP and turn off mute. RAM, set up 2 voice table, turn on the IS port, start the DSP and turn off mute. set up 2 voice table, turn on the IS port, start the DSP and turn off mute. up 2 voice table, turn on the IS port, start the DSP and turn off mute. 2 voice table, turn on the IS port, start the DSP and turn off mute. voice table, turn on the IS port, start the DSP and turn off mute. table, turn on the IS port, start the DSP and turn off mute. turn on the IS port, start the DSP and turn off mute. on the IS port, start the DSP and turn off mute. the IS port, start the DSP and turn off mute. IS port, start the DSP and turn off mute. port, start the DSP and turn off mute. start the DSP and turn off mute. the DSP and turn off mute. DSP and turn off mute. and turn off mute. turn off mute. mute. |: system is now ready for use as a synth. This functionality is primarily intended for interactive is now ready for use as a synth. This functionality is primarily intended for interactive now ready for use as a synth. This functionality is primarily intended for interactive ready for use as a synth. This functionality is primarily intended for interactive for use as a synth. This functionality is primarily intended for interactive use as a synth. This functionality is primarily intended for interactive as a synth. This functionality is primarily intended for interactive a synth. This functionality is primarily intended for interactive This functionality is primarily intended for interactive functionality is primarily intended for interactive is primarily intended for interactive primarily intended for interactive intended for interactive for interactive interactive t en | turn on the music interpreter set SCORE_ADD to the location of the tokenized music (this must be a on the music interpreter set SCORE_ADD to the location of the tokenized music (this must be a the music interpreter set SCORE_ADD to the location of the tokenized music (this must be a music interpreter set SCORE_ADD to the location of the tokenized music (this must be a interpreter set SCORE_ADD to the location of the tokenized music (this must be a set SCORE_ADD to the location of the tokenized music (this must be a SCORE_ADD to the location of the tokenized music (this must be a to the location of the tokenized music (this must be a the location of the tokenized music (this must be a location of the tokenized music (this must be a of the tokenized music (this must be a the tokenized music (this must be a tokenized music (this must be a music (this must be a (this must be a must be a be a a i aligned address), set TIMER_ADD to 0, start the timer and out comes music. address), set TIMER_ADD to 0, start the timer and out comes music. set TIMER_ADD to 0, start the timer and out comes music. TIMER_ADD to 0, start the timer and out comes music. to 0, start the timer and out comes music. 0, start the timer and out comes music. start the timer and out comes music. the timer and out comes music. timer and out comes music. and out comes music. out comes music. comes music. music. The remaining code remaining code code shows how to add in custom effects. how to add in custom effects. to add in custom effects. add in custom effects. in custom effects. custom effects. effects. To play music and sound effects simultaneously make sure that play music and sound effects simultaneously make sure that music and sound effects simultaneously make sure that and sound effects simultaneously make sure that effects simultaneously make sure that simultaneously make sure that make sure that sure that that 4 you restrict sound effects to the voice table entries that the music interpreter does not use. restrict sound effects to the voice table entries that the music interpreter does not use. sound effects to the voice table entries that the music interpreter does not use. effects to the voice table entries that the music interpreter does not use. to the voice table entries that the music interpreter does not use. the voice table entries that the music interpreter does not use. voice table entries that the music interpreter does not use. table entries that the music interpreter does not use. entries that the music interpreter does not use. that the music interpreter does not use. the music interpreter does not use. music interpreter does not use. interpreter does not use. does not use. not use. use. During each sample period the synth goes thru the voice tables (starting at TABLESTART) and checks each sample period the synth goes thru the voice tables (starting at TABLESTART) and checks sample period the synth goes thru the voice tables (starting at TABLESTART) and checks period the synth goes thru the voice tables (starting at TABLESTART) and checks the synth goes thru the voice tables (starting at TABLESTART) and checks synth goes thru the voice tables (starting at TABLESTART) and checks goes thru the voice tables (starting at TABLESTART) and checks thru the voice tables (starting at TABLESTART) and checks the voice tables (starting at TABLESTART) and checks voice tables (starting at TABLESTART) and checks tables (starting at TABLESTART) and checks (starting at TABLESTART) and checks at TABLESTART) and checks TABLESTART) and checks and checks checks : the first longword of each one to find out which synth module to use next. first longword of each one to find out which synth module to use next. longword of each one to find out which synth module to use next. of each one to find out which synth module to use next. each one to find out which synth module to use next. one to find out which synth module to use next. to find out which synth module to use next. find out which synth module to use next. out which synth module to use next. which synth module to use next. synth module to use next. module to use next. to use next. use next. next. 5 This is actually controlled by your MAKEFILE. You can use the standard .O extension normally used by object 7 modules, or you can use a different extension to identify that this object module contains music score data. In the latter case, the SCR filename extension (for Musical Score) is recommended. i © 1995 Atari Corp. Confidential Information “JPR Property ofAtari Corporation 26 April, 1995 + +Libraries i + +‘ + +| c) For all samplers, For all samplers, all samplers, samplers, the pitch may be adjusted by a factor placed in the pitch parameter of the may be adjusted by a factor placed in the pitch parameter of the be adjusted by a factor placed in the pitch parameter of the adjusted by a factor placed in the pitch parameter of the by a factor placed in the pitch parameter of the a factor placed in the pitch parameter of the placed in the pitch parameter of the in the pitch parameter of the the pitch parameter of the pitch parameter of the parameter of the of the the patch. The value $1000 means no change, $800 drops the pitch by a factor of 2 (one octave) and The value $1000 means no change, $800 drops the pitch by a factor of 2 (one octave) and value $1000 means no change, $800 drops the pitch by a factor of 2 (one octave) and $1000 means no change, $800 drops the pitch by a factor of 2 (one octave) and means no change, $800 drops the pitch by a factor of 2 (one octave) and no change, $800 drops the pitch by a factor of 2 (one octave) and change, $800 drops the pitch by a factor of 2 (one octave) and $800 drops the pitch by a factor of 2 (one octave) and drops the pitch by a factor of 2 (one octave) and the pitch by a factor of 2 (one octave) and pitch by a factor of 2 (one octave) and by a factor of 2 (one octave) and a factor of 2 (one octave) and factor of 2 (one octave) and of 2 (one octave) and 2 (one octave) and (one octave) and octave) and and a value of $2000 raises the pitch by a factor of 2. value of $2000 raises the pitch by a factor of 2. $2000 raises the pitch by a factor of 2. raises the pitch by a factor of 2. the pitch by a factor of 2. by a factor of 2. a factor of 2. factor of 2. of 2. 2. d) For all patches, all patches, patches, the volume may be adjusted by a factor placed in the volume parameter of volume may be adjusted by a factor placed in the volume parameter of may be adjusted by a factor placed in the volume parameter of be adjusted by a factor placed in the volume parameter of adjusted by a factor placed in the volume parameter of by a factor placed in the volume parameter of a factor placed in the volume parameter of factor placed in the volume parameter of placed in the volume parameter of in the volume parameter of the volume parameter of volume parameter of parameter of of the patch. The value $100 means no change, $80 drops the volume by a factor of 2, and a value value $100 means no change, $80 drops the volume by a factor of 2, and a value $100 means no change, $80 drops the volume by a factor of 2, and a value means no change, $80 drops the volume by a factor of 2, and a value no change, $80 drops the volume by a factor of 2, and a value change, $80 drops the volume by a factor of 2, and a value $80 drops the volume by a factor of 2, and a value drops the volume by a factor of 2, and a value the volume by a factor of 2, and a value volume by a factor of 2, and a value by a factor of 2, and a value a factor of 2, and a value factor of 2, and a value of 2, and a value 2, and a value and a value a value value of $200 raises the volume by $200 raises the volume by raises the volume by the volume by volume by by a factor of 2. of 2. 2. + +## a) + +A) The program program is run and out comes the music. run and out comes the music. and out comes the music. out comes the music. comes the music. the music. music. q The program PARSE converts the MIDI file into MADMAC assembler source code using dc.] PARSE converts the MIDI file into MADMAC assembler source code using dc.] converts the MIDI file into MADMAC assembler source code using dc.] the MIDI file into MADMAC assembler source code using dc.] MIDI file into MADMAC assembler source code using dc.] file into MADMAC assembler source code using dc.] into MADMAC assembler source code using dc.] MADMAC assembler source code using dc.] assembler source code using dc.] source code using dc.] code using dc.] using dc.] dc.] directives. It is assembled and converted to a SCR files. At this time PARSE and the interpreter is assembled and converted to a SCR files. At this time PARSE and the interpreter assembled and converted to a SCR files. At this time PARSE and the interpreter converted to a SCR files. At this time PARSE and the interpreter to a SCR files. At this time PARSE and the interpreter a SCR files. At this time PARSE and the interpreter SCR files. At this time PARSE and the interpreter files. At this time PARSE and the interpreter At this time PARSE and the interpreter this time PARSE and the interpreter time PARSE and the interpreter PARSE and the interpreter and the interpreter the interpreter interpreter understand the MIDI functions for note on/off, MIDI volume, pitch bend, pan, tempo change, and MIDI functions for note on/off, MIDI volume, pitch bend, pan, tempo change, and functions for note on/off, MIDI volume, pitch bend, pan, tempo change, and for note on/off, MIDI volume, pitch bend, pan, tempo change, and note on/off, MIDI volume, pitch bend, pan, tempo change, and on/off, MIDI volume, pitch bend, pan, tempo change, and MIDI volume, pitch bend, pan, tempo change, and volume, pitch bend, pan, tempo change, and pitch bend, pan, tempo change, and bend, pan, tempo change, and pan, tempo change, and tempo change, and change, and and looping. The system assumes envelopes are also provided using dc.| directives. These are assembled system assumes envelopes are also provided using dc.| directives. These are assembled assumes envelopes are also provided using dc.| directives. These are assembled envelopes are also provided using dc.| directives. These are assembled are also provided using dc.| directives. These are assembled provided using dc.| directives. These are assembled using dc.| directives. These are assembled dc.| directives. These are assembled directives. These are assembled These are assembled are assembled assembled idj@ and loaded into the DSP the DSP DSP at runtime runtime The Jaguar sound system may be thought of as having two separate components, a synthesizer and a sound system may be thought of as having two separate components, a synthesizer and a system may be thought of as having two separate components, a synthesizer and a may be thought of as having two separate components, a synthesizer and a be thought of as having two separate components, a synthesizer and a thought of as having two separate components, a synthesizer and a as having two separate components, a synthesizer and a having two separate components, a synthesizer and a two separate components, a synthesizer and a separate components, a synthesizer and a components, a synthesizer and a a synthesizer and a synthesizer and a and a a music interpreter. These two sections are quite independent, These two sections are quite independent, two sections are quite independent, sections are quite independent, are quite independent, quite independent, independent, although the second requires the first to the second requires the first to second requires the first to requires the first to first to to | actually generate sound. To use the system, follow these steps. For clarity follow along ig the sample code (DRIVER:S), Load the system, follow these steps. For clarity follow along ig the sample code (DRIVER:S), Load system, follow these steps. For clarity follow along ig the sample code (DRIVER:S), Load follow these steps. For clarity follow along ig the sample code (DRIVER:S), Load these steps. For clarity follow along ig the sample code (DRIVER:S), Load steps. For clarity follow along ig the sample code (DRIVER:S), Load For clarity follow along ig the sample code (DRIVER:S), Load clarity follow along ig the sample code (DRIVER:S), Load follow along ig the sample code (DRIVER:S), Load along ig the sample code (DRIVER:S), Load ig the sample code (DRIVER:S), Load the sample code (DRIVER:S), Load sample code (DRIVER:S), Load code (DRIVER:S), Load (DRIVER:S), Load Load 1 | the DSP code into DSP RAM, set up 2 voice table, turn on the IS port, start the DSP and turn off mute. code into DSP RAM, set up 2 voice table, turn on the IS port, start the DSP and turn off mute. into DSP RAM, set up 2 voice table, turn on the IS port, start the DSP and turn off mute. DSP RAM, set up 2 voice table, turn on the IS port, start the DSP and turn off mute. RAM, set up 2 voice table, turn on the IS port, start the DSP and turn off mute. set up 2 voice table, turn on the IS port, start the DSP and turn off mute. up 2 voice table, turn on the IS port, start the DSP and turn off mute. 2 voice table, turn on the IS port, start the DSP and turn off mute. voice table, turn on the IS port, start the DSP and turn off mute. table, turn on the IS port, start the DSP and turn off mute. turn on the IS port, start the DSP and turn off mute. on the IS port, start the DSP and turn off mute. the IS port, start the DSP and turn off mute. IS port, start the DSP and turn off mute. port, start the DSP and turn off mute. start the DSP and turn off mute. the DSP and turn off mute. DSP and turn off mute. and turn off mute. turn off mute. mute. | The system is now ready for use as a synth. This functionality is primarily intended for interactive is now ready for use as a synth. This functionality is primarily intended for interactive now ready for use as a synth. This functionality is primarily intended for interactive ready for use as a synth. This functionality is primarily intended for interactive for use as a synth. This functionality is primarily intended for interactive use as a synth. This functionality is primarily intended for interactive as a synth. This functionality is primarily intended for interactive a synth. This functionality is primarily intended for interactive This functionality is primarily intended for interactive functionality is primarily intended for interactive is primarily intended for interactive primarily intended for interactive intended for interactive for interactive interactive sounds. | en To turn on the music interpreter set SCORE_ADD to the location of the tokenized music (this must be a on the music interpreter set SCORE_ADD to the location of the tokenized music (this must be a the music interpreter set SCORE_ADD to the location of the tokenized music (this must be a music interpreter set SCORE_ADD to the location of the tokenized music (this must be a interpreter set SCORE_ADD to the location of the tokenized music (this must be a set SCORE_ADD to the location of the tokenized music (this must be a SCORE_ADD to the location of the tokenized music (this must be a to the location of the tokenized music (this must be a the location of the tokenized music (this must be a location of the tokenized music (this must be a of the tokenized music (this must be a the tokenized music (this must be a tokenized music (this must be a music (this must be a (this must be a must be a be a a long aligned address), set TIMER_ADD to 0, start the timer and out comes music. address), set TIMER_ADD to 0, start the timer and out comes music. set TIMER_ADD to 0, start the timer and out comes music. TIMER_ADD to 0, start the timer and out comes music. to 0, start the timer and out comes music. 0, start the timer and out comes music. start the timer and out comes music. the timer and out comes music. timer and out comes music. and out comes music. out comes music. comes music. music. The remaining code remaining code code shows how to add in custom effects. how to add in custom effects. to add in custom effects. add in custom effects. in custom effects. custom effects. effects. To play music and sound effects simultaneously make sure that play music and sound effects simultaneously make sure that music and sound effects simultaneously make sure that and sound effects simultaneously make sure that effects simultaneously make sure that simultaneously make sure that make sure that sure that that you restrict sound effects to the voice table entries that the music interpreter does not use. restrict sound effects to the voice table entries that the music interpreter does not use. sound effects to the voice table entries that the music interpreter does not use. effects to the voice table entries that the music interpreter does not use. to the voice table entries that the music interpreter does not use. the voice table entries that the music interpreter does not use. voice table entries that the music interpreter does not use. table entries that the music interpreter does not use. entries that the music interpreter does not use. that the music interpreter does not use. the music interpreter does not use. music interpreter does not use. interpreter does not use. does not use. not use. use. ' During each sample period the synth goes thru the voice tables (starting at TABLESTART) and checks each sample period the synth goes thru the voice tables (starting at TABLESTART) and checks sample period the synth goes thru the voice tables (starting at TABLESTART) and checks period the synth goes thru the voice tables (starting at TABLESTART) and checks the synth goes thru the voice tables (starting at TABLESTART) and checks synth goes thru the voice tables (starting at TABLESTART) and checks goes thru the voice tables (starting at TABLESTART) and checks thru the voice tables (starting at TABLESTART) and checks the voice tables (starting at TABLESTART) and checks voice tables (starting at TABLESTART) and checks tables (starting at TABLESTART) and checks (starting at TABLESTART) and checks at TABLESTART) and checks TABLESTART) and checks and checks checks 4 the first longword of each one to find out which synth module to use next. first longword of each one to find out which synth module to use next. longword of each one to find out which synth module to use next. of each one to find out which synth module to use next. each one to find out which synth module to use next. one to find out which synth module to use next. to find out which synth module to use next. find out which synth module to use next. out which synth module to use next. which synth module to use next. synth module to use next. module to use next. to use next. use next. next. + +**==> picture [2 x 34] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +BP a a Ss { Fd E i 1 | 4 + +| More details may be found in the example files. | Stoppingthe Music[interpreter] To stop your music before the end of the score is reached, you do the following steps: + +| | 3 7 : | : + +a j 1 + +q first long word of each word of each of each each voice structure.) This tells the synth to do nothing for those voices. voices. j You may want your sound effects to continue even if your music stops. If you are playing music only 1 with the first five or six voices, and are using the last two or three voices for sound effects, then in step q 1 you would change the volume parameters in the individual voice tables that are being used for music, : and leave the volume of the sound effects voices alone (and don’t turn off those voices in step 3). If f you want to change the volume of everything, including sound effects, then you can either change all of : the individual voices or you can change the UEBERVOLUME variable, which will affect all voices. q The MIDIVOLUME variable will only affect new notes generated by the music driver; changing it will q not change the volume of a note that has started but not yet finished. + +1 4 | ; 1 yy} a | @ q + +| + +/ + +| Page 26 Libraries is created by the program PARSE. A list is kept by the parser of all voices that are in use anda warning ym 4 | The Music driver interprets a structure in memory to manipulate entries in the voice table. This structure . | is given if the desired polyphony fails to accommodate the needs of the MIDI file being parsed. The { | voice assigned to a note on event is determined by taking the jast used voice, adding one until an | available voice is found. At any given time the voice table can be quite complex. A representative voice 7 table follows (showing only the voice type in detail): a 12 x xX xX 20K BP aq 28 x x x + 2X a q ~4 x XX .+X a : -4 x x x o+X Ss ; -4 x x x 2.x q 16 x xX xX re4 { -4 x x xX 2-X Fd 4 24 x xX x 2X E | 0 i + +This type of table would be expected while playing an eight voice music file with two channels reserved for sound effects. + +- 1) Ramp down the volume to fade out the music and/or sound effects. This step is optional, but it will probably sound better this way than if you just cut off the music abruptly. + +- 2) Set the SCORE_ADD pointer to point at the end of your music score. This should contain a long word value of $7FFFFFFF. + +- 3) Step 2 will cause the music driver to stop feeding the synthesizer's voice tables with new information, but it won’t stop the synthesizer from processing the information already there. To do this, we must set the voice type value to -4 for each voice you want to turn off. (That’s the first long word of each word of each of each each voice structure.) This tells the synth to do nothing for those voices. voices. + +26 April, 1995 + +Confidential Information TR Property ofAtari Corporation + +© 1995 Atari Corp. + +Page 27 + +; | | | | i | |1 | 5 | | | || | 4 i { | ; : { i . : : | { + +Libraries When you want to restart your music, you would simply reset the voice types, volume, and SCORE_ADD variable to the appropriate values. + +|ee Each event consists of two long words. The first long is the time (in milliseconds) from the start of the | song the the event is scheduled for (this limits the length of any individual tune, without loops, to about 6 weeks). The next long is the actual event encoded as follows. + +Coded events look like this: | BEEV| VVxx| xxxx|xxxx | xxxx | xxxx | Xxxx | xxxx EEE = Event type . ixx NOTE ON | 1xxV|VVPP | PPPF | FFFF | FFFF | FFFF | FARA | AAAA : vivvPP|PPP= Voice= Patchnumbernumber F|FFFF|FFFF|FFFF|F = Frequency AAA|AAAA = Amplitude | 000 NOTE OFF[|][ Xxxx] 000V | VVxx | xxxx | xxxx | xxxx | xxxx[|][xxxx] | v|vv = Voice number | 011p|011pppJUMP| DDDWITH| DDDCOUNT| Dppp | ppp | cece | CCCC j eccc|cccc is number of loops played j D| DDDD| DDDD | DDDD | DDDD | DDDD is the number of phrases to jump 2 010 CONTROLLER CHANGE 010v | VWPP | PPPF | CCCC | CNNN | NNNN | NNNN | NNNN + +v|vv = Voice Number pp|PP = Patch Number F = Flag to change the base pitch eccc|c = Controller Code NNN |NNNN|NNNN|NNNN = Value © 1995 Atari Corp. Confidential Information JPR Property ofAtari Corporation + +**==> picture [60 x 28] intentionally omitted <==** + +**----- Start of picture text -----**
+26 April, 1995
**----- End of picture text -----**
+ + +-_ Libraries | 4. ir g | + +Og + +| 2 s + +SBSEGW, | merge them them j The MERGE MERGE a note values values | the frequency : Synth, you | MIDI files. If is & = 50% of its of its its | good. The = utility is | a = © 1995 Atari Corp. ‘ + +' : + +| , Page 28 Libraries . : : Controllers77 = Volumarar **e** : i 9 = Pitch Bend 10 = Stereo Pan | Patse-MIDIFileParser== = The MIDI parser is a command line program which translates a MIDI file into commands recognized by ' the Jaguar syntheziser. The output of the parser is a MADMAC assembler source file (ASCII) containing the sound data for the synthesizer in assembly language format. This file has to be assembled ' and linked in with your program, playing the music. The PARSE utility is documented in the Tools | chapter of the documentation. | eerrrrt——~—Ss—=CVCisSN®COWOWCOW®C(‘(’RCS(NYRRRRKN.Crrrrt——~—Ss—=CVCisSN®COWOWCOW®C(‘(’RCS(NYRRRRKN.C : The MERGE utility is designed to take multiple music data files created with PARSE and merge them them together into a single file that will contain everything interleaved together appropriately. The MERGE MERGE utility is documented in the Tools chapter of the documentation. | The XNOTES utility is designed to automatically create a NOTES.CNF file with the correct note values values | for a given sampling rate. The NOTES.CNF file is used by the PARSE utility to contro] the frequency | value that is used for each musical note. If you change the sample rate used by the Jaguar Synth, you 1 should run XNOTES to create a new NOTES.CMF file, then run PARSE again on your MIDI files. If j you skip these steps, the pitch of the notes will be incorrect. The use of the XNOTES utility is documented in the Tools chapter. + +: Controllers77 = Volumarar **e** : 9 = Pitch Bend 10 = Stereo Pan Patse-MIDIFileParser== = + +eerrrrt——~—Ss—=CVCisSN®COWOWCOW®C(‘(’RCS(NYRRRRKN.Crrrrt——~—Ss—=CVCisSN®COWOWCOW®C(‘(’RCS(NYRRRRKN.C + +The SNDCOMP utility is designed to take a 16-bit digitized sound file and compress it to 50% of its of its its original size. The compression it does is a "lossy" compression, but the quality is quite good. The compressed sound files it creates are then used with the Jaguar Synthesizer. The SNDCOMP utility is documented in the Tools chapter of the documentation. + +26 April, 1995 + +Confidential Information PR Property ofAtari Corporation + +| Libraries - Page 29 Jaguar SoundTooiUserGuidejé= =#=..44..s Ci The Jaguar sound tool was written to provide a “user friendly" interface to the Jaguar synthesizer | module. The sound tool provides a way of editing up to 8 voices by using one of the seven synthesizer | modules. Each voice can be turned on individually or, together with other voices. Voices can be saved | to or loaded from the host machine allowing you to save work in progress. Additionally, you may save 4 : your work in ASCII form, ready to be linked into your source code. For the rest of this section, it will be assumed that you have read TheJaguar Synth section. | In general, each of the synth modules share the same user interface. Whenever possible, you'll find that | the joypad keys display the same functionality throughout the different synth editors. You can move | | from object to object within an editor by holding down the Fire B button and then pressing up, down | left, or right depending on the placement of the object that you would like to go to. An object is defined ’ : as a single slider, a group of buttons, or any other item that allows you to edit the voice that you're | working on. | As you move you move move to each object, each object, object, you'll see it being being selected by an green box drawn around by an green box drawn around an green box drawn around box drawn around around it. The two main two main main | object types types are numerical numerical sliders and buttons. and buttons. buttons. To change the value of a numerical change the value of a numerical the value of a numerical value of a numerical of a numerical a numerical numerical slider, use the | k joypad up and down keys to add up and down keys to add and down keys to add down keys to add keys to add to add add to or subtract from or subtract from subtract from from the total. Using the the left and right buttons, and right buttons, right buttons, buttons, you can can | move the the slider cursor cursor left or right. This will will allow you you to increment increment or decrement your decrement your your slider value by value by by | a larger or smaller amount. or smaller amount. amount. Notice that the value the value value will only increment or decrement by decrement by by 1 each time you you | press the up or down up or down or down down key. To scroll through these numbers more more quickly, hold down the option key down the option key the option key option key key | while pressing up or down. pressing up or down. up or down. or down. down. Alternatively, you may may type in the direct value and value and and the number will number will will appear i at the cursor location. the cursor location. cursor location. location. Button groups dre much simpler much simpler simpler to use. Simply select the joypad key which joypad key which key which which i represents the button which you wish to button which you wish to which you wish to you wish to wish to to select. i The following following is a brief discussion a brief discussion brief discussion discussion of each of the the synth editors along with a description of the the main : Menu screen. screen. : + +As you move you move move to each object, each object, object, you'll see it being being selected by an green box drawn around by an green box drawn around an green box drawn around box drawn around around it. The two main two main main object types types are numerical numerical sliders and buttons. and buttons. buttons. To change the value of a numerical change the value of a numerical the value of a numerical value of a numerical of a numerical a numerical numerical slider, use the k joypad up and down keys to add up and down keys to add and down keys to add down keys to add keys to add to add add to or subtract from or subtract from subtract from from the total. Using the the left and right buttons, and right buttons, right buttons, buttons, you can can move the the slider cursor cursor left or right. This will will allow you you to increment increment or decrement your decrement your your slider value by value by by a larger or smaller amount. or smaller amount. amount. Notice that the value the value value will only increment or decrement by decrement by by 1 each time you you press the up or down up or down or down down key. To scroll through these numbers more more quickly, hold down the option key down the option key the option key option key key while pressing up or down. pressing up or down. up or down. or down. down. Alternatively, you may may type in the direct value and value and and the number will number will will appear at the cursor location. the cursor location. cursor location. location. Button groups dre much simpler much simpler simpler to use. Simply select the joypad key which joypad key which key which which represents the button which you wish to button which you wish to which you wish to you wish to wish to to select. The following following is a brief discussion a brief discussion brief discussion discussion of each of the the synth editors along with a description of the the main } Menu screen. screen. + +Each of the 8 synth voices can be edited through this main menu screen. As discussed earlier, use the Fire B key along with joypad up and down to scroll through each voice. When a voice is chosen, hit i the up and down buttons to select a synth editor then hit 2 to edit the voice. Turn the voice on or off by hitting the 1 key. Hitting the Fire A key will turn on all of your enabled voices at once. Note that at startup, each of the voices except for the first one is disabled. Once you have edited a voice, you can can } . return to the main menu by either using the main menu button or, by hitting the pause key. + +you can can 5 move will cause : box with with | the 3 3 | 26 April, April, 1995 + +The final row of buttons allows you to load or save out your current work. To save your work, move down until you've selected the last row of buttons. Hit the 2 key and the SNDTOOL program will cause a break command in the debugger on your host computer. You will be prompted by an alert box with with instructions on saving your file. In the same manner, an ASCII file can be saved out by hitting the 3 3 © 1995 Atari Corp. Confidential Information “FER Property ofAtari Corporation 26 April, April, 1995 + +t Page 30 Libraries i key. Note that this is a 100% ASCII file which can be read into any text editor. Each of the voices is ( separated by a different label, voicel:, voice2:, etc. You will also find envelopes, user defined waveforms, and wavetable instructions saved out as well. All addresses within the voice table will be represented by a label. This label will either correspond to one of the labels embedded in the file, or, as | in the case of sample addresses, simply be referenced as an external lable at the top of the file. \ Use the Load Waves button the Load Waves button Load Waves button Waves button button to load in user defined waveforms. load in user defined waveforms. in user defined waveforms. user defined waveforms. defined waveforms. waveforms. You can load in up to 5 can load in up to 5 load in up to 5 in up to 5 up to 5 to 5 5 different user i defined waveforms. waveforms. They are stored at the addresses UWAVE1, UWAVE2, the addresses UWAVE1, UWAVE2, addresses UWAVE1, UWAVE2, UWAVE1, UWAVE2, UWAVE2, ... UWAVES. UWAVES. To read ina read ina ina i waveform for the first user user defined wave, wave, use the command: command: ; i read filename .UWAVE1] 1 The Cwave button performs harmonic synthesis using a table of 32 partials with user specified Cwave button performs harmonic synthesis using a table of 32 partials with user specified button performs harmonic synthesis using a table of 32 partials with user specified performs harmonic synthesis using a table of 32 partials with user specified harmonic synthesis using a table of 32 partials with user specified synthesis using a table of 32 partials with user specified using a table of 32 partials with user specified a table of 32 partials with user specified table of 32 partials with user specified of 32 partials with user specified 32 partials with user specified partials with user specified with user specified user specified specified : amplitude relationships. Briefly, any sound can be broken down sound can be broken down can be broken down be broken down broken down down intoaa series of sine waves called of sine waves called sine waves called waves called called q partials or harmonics. The Cwave or harmonics. The Cwave harmonics. The Cwave The Cwave Cwave utility allows the specification of the relative allows the specification of the relative the specification of the relative specification of the relative of the relative the relative relative amplitudes of thirty-two of thirty-two thirty-two + +Libraries + +j 7 . : up | ( | g } 4 : Z = ' 4 | i q { j ale { a -_ | 2 , , 4 ‘ + +| q | 7 q | | + +| j Y Use the numerical sliders to change frequency and depth of modulation. Use the text sliders to select your waveforms and pitch. Select these values by using the up and down joypad keys until the selected ’ : pitch or waveform appears in the slider. Use the Frequency mode button to select the way the frequency [ E : value is calculated. When in "Fixed" mode, the frequency value in the voice table will be whatever is | = shown in the slider. When in "ratio" mode, the frequency value will be whatever is in the slider 4 E multiplied by whatever pitch value you have. Note that the frequency multiplier will be in the 15.16 1 a format so for instance, 1.32768 in the slider will represent a multiplier value of 1.5. Exit the synth by _ using the Main Menu button or by hitting the pause key in any object. Play the sample by pressing the 9a Fire A button. Press it again to turn the voice off. 4 ; + +| : { 1 : 7 : + +Qi + +Use the Load Waves button the Load Waves button Load Waves button Waves button button to load in user defined waveforms. load in user defined waveforms. in user defined waveforms. user defined waveforms. defined waveforms. waveforms. You can load in up to 5 can load in up to 5 load in up to 5 in up to 5 up to 5 to 5 5 different user defined waveforms. waveforms. They are stored at the addresses UWAVE1, UWAVE2, the addresses UWAVE1, UWAVE2, addresses UWAVE1, UWAVE2, UWAVE1, UWAVE2, UWAVE2, ... UWAVES. UWAVES. To read ina read ina ina waveform for the first user user defined wave, wave, use the command: command: ; + +The Cwave button performs harmonic synthesis using a table of 32 partials with user specified Cwave button performs harmonic synthesis using a table of 32 partials with user specified button performs harmonic synthesis using a table of 32 partials with user specified performs harmonic synthesis using a table of 32 partials with user specified harmonic synthesis using a table of 32 partials with user specified synthesis using a table of 32 partials with user specified using a table of 32 partials with user specified a table of 32 partials with user specified table of 32 partials with user specified of 32 partials with user specified 32 partials with user specified partials with user specified with user specified user specified specified amplitude relationships. Briefly, any sound can be broken down sound can be broken down can be broken down be broken down broken down down intoaa series of sine waves called of sine waves called sine waves called waves called called partials or harmonics. The Cwave or harmonics. The Cwave harmonics. The Cwave The Cwave Cwave utility allows the specification of the relative allows the specification of the relative the specification of the relative specification of the relative of the relative the relative relative amplitudes of thirty-two of thirty-two thirty-two harmonics, which are mathematically combined into a resuitant waveform. + +After pressing the 5 number key the harmonics can be entered by typing: + +sl .awave + +At this point the first harmonic can be entered by typing a hexadecimal value and pressing [Return]. This automatically displays the field for the second harmonic. Pressing {Return] again brings up the field for the third harmonic, etc. After entering the last harmonic and pressing [Return] a dot (’.’) has to be entered followed by a [Return] . The debugger then returns to its command line. To continue, type: + +g .continue + +The Cwave utility stores the waveform it creates in user wave 1. After a wave has been created, it may be saved using the Waveform Load/Save button. + +1 + +26 April, 1995 + +Confidential Information “FO®. Property ofAtari Corporation + +© 1995 Atari Corp. + +Libraries Page 31 CompiexFMEditor = | Identical to Simple FM except for extra sliders to provide an extra indirection of modulation. The synth documentation will provide the needed details. | qepisampisedion 0 — | 46BitCompressed SampleEditor Froma user interface standpoint these two editors are virtually identical. There is currently a default 16 | bit sample built into the sound editor. To load additional samples, select the Load Sample button from | the first group of buttons. + +| -The sound tool will currently handle Audio IFF files and AVR files as well as raw sample files. Since | there is no header information stored with a raw sample file, you must set the variable .samplesize to let the sound tool know how big the newly loaded sample is. You can accomplish this by typing in the following: sl .samplesize (type in new number of samples here) You can now type in "g .continue" to return to the program. Currently the maximum sample file size “], thatinformation the sound from tool AIFF will acc fil **e** s.)pt is 200000 bytes. (NOTE: The tool currently does not extract pitch Use the numerical sliders to set loop length, loop end and pitch values. You can play the sample by pressing the Fire A button at any time. If the Loop On button has been selected, the sample will play continuously, looping through the parameters which you have set up. Once the Fire A button has been released, the synth will play the rest of the sample. + +WavelormEditor Use the numerical sliders to set rate, loop end, and loop length. Use the up and down buttons to cycle through the given pitches and waveforms. You can edit the envelope by first making it the current object. Use the joypad up and down buttons to increase or decrease values at the current point. Move to the next point in the envelope by holding down the Fire C button and using the joypad left and right buttons. Insert points by pressing the 1 number key on the keypad. In the same way, delete points by the 4 key. Pressing the 0 number key will restore the envelope to a standard default. You may choose any one of five envelopes (through the envelope slider) to sample or edit. Each time you scroll through an envelope you will be able to see it change visually on the screen. The voice can be played by using the Fire A button. As with the sample editor, the sound will loop until the Fire A button is released. “am A new envelope can be saved or loaded by selecting the load/save menu button. Load or save functions will affect the current envelope. (The one displayed in the slider) After breaking, you will be promted to input the correct commands to load an envelope. At this point you can also save out the current envelope to be used at another time. + +: | : | i i | | ' | iI | | ? : ; : . + +; , + +© 1995 Atari Corp. + +Confidential Information “FO® Property of Atari Corporation + +26 April, 1995 + +' Page 32 Libraries | FMEnvelope = j This synth editor combines the features of the waveform and simple FM synths. See The Jaguar Synth } section for details. + +_ Ve § g q | & fg ‘ a | 5 r q = | OY | | 1 a ] 7 a | j | @ ' : | = | 2 YJ © | 3 | | a + +1 1 j { : | + +’ to the synth. the synth. | 46 bit CompressedSampler/Envelope | This synth editor combines the features of the waveform and 16 bit sampler synth. Note that the q envelope is of a different kind in this module. The new envelope for this module is a basic slopes destination, time envelope. The Amplitude information is about the current point and the Time is the amount of time it takes to get a from the previous point's amplitude to this point's amplitude. You can add points by pressing the 1 number key while inside the envelope window and delete points ; by pressing the 4 key. To move from point to point hold down the Fire C button and use the joypad. : The point can be edited vertically as well as horizontally. The two parameters that are available to the user are: | - Amplitude (0 - 32767) i - Time (0 - 2,000,000,000 ms) | The information (Amplitude and Time) about each point are updated as the points are moved. See The Jaguar Synth for details. + +The 2N Wavetable editor will allow you to edit a set of wavetable instructions. Use the sustain/release buttons to select which list of instructions you want to edit. The large object in the center of the screen will hold your list of instructions. Notice that the current instruction in this list will be highlighted in green. Use the up and down joypad keys to scroll the list. This current instruction will also be represented by the sliders at the bottom of the screen. You can use these sliders to create a new wavetable instruction. Use the panel of buttons on the right side of the screen to insert the new instruction (represented by the slider values) into the actual wavetable instruction list. You can also change the existing instruction or remove an instruction using this bank of buttons. The last instruction in your sustain list will automatically loop to the first instruction. If you would rather loop to another instruction, place the index of the instruction that you want to loop to into the Loop To slider. Notice that the Fade Length slider shows positive values. The too] will negate the value before passing it on to the synth. the synth. + +rs ' 26 April, 1995 Confidential Information ‘JER Property ofAtari Corporation ©1995 Atari Corp. + +Libraries : gh| ( | can use use | Ei | required to complete these document. , | ] { 4 - ] + +| | + +1 + +| + +1 ’ + +| : j : + +4 j| . ” 3 q + +: + +a 7 + +| + +| + +| ; + +j : j + +- Page 34 + +- | ProcedureSummary The basic tasks for processing MIDI files consist of: ° converting (or parsing) your MIDI file into a form that the Jaguar can use use ° creating synthesizer and sample patches ° incorporating patch information into files used by the Jaguar synthesizer + +Figure 1 illustrates these tasks. The following is a summary of the steps required to complete these tasks. Each of these steps is described in detail in later sections of this document. + +1. Install the Jaguar Music System tools. + + - a. Install] the tools and sample code from the distribution archives b. Create a new directory for your music project. Cc. Copy the Jaguar sound files to the new directory. + +## 2. Create your sound patches. + +- a. Design and save your synthesized and sample patches. b. Save ASCII versions of your patches. Cc. Convert your samples to raw format, compress them, and write down sample information. + +- 3. Prepare your MIDI file. + +; + +**==> picture [14 x 17] intentionally omitted <==** + +**----- Start of picture text -----**
+3
**----- End of picture text -----**
+ + + - a. Clean up your MIDI sequences. b. Write down information about your MIDI sequences. c. Save your MIDI file in sections as separate type 0 MIDI files. + +4. Copy your MIDI Type0 files, patch ASCII files, and samples. + +5. Extract patch data, envelope, waveform and wavetable data to separate ASCII files. + + - a. Extract patch data to separate ASCII files. + + - b. Replace the label names in your patch data. + + - c. Adjust other patch values in your patch data. d. Extract envelope data to separate ASCII files. €. Extract user waveform data to separate ASCII files. f. Extract wavetable data to separate ASCII files. + +6. Modify the file synth.s. a. Set the number of patches. b. Include patch data files. c. Write down patch numbers. d. Add sample labels and include sample files. + +26 April, 1995 Confidential Information FER Property ofAtari Corporation + +© 1995 Atari Corp. + +**==> picture [45 x 179] intentionally omitted <==** + +**----- Start of picture text -----**
+| 1
|
j
.
|
yi q
a
; =
**----- End of picture text -----**
+ + +} | i { ' : { | | ] i + +Page 35 + +_. + +7 Libraries i €. Initialize the voice table to the correct number of voices. 4 i ” f. Add waveform labels and include user waveform files. Zz g. Add envelope labels and include envelope files. . h. Add wavetable labels and include wavetable files. + +] Ss : + +ft 4 a | + +i \ + +7. Add MIDI information to parse.cnf. + +8. Run the parse program to parse your MIDI tiles. 9. After testing your music one section at 2 time, run the merge tool to combine your sections. 10. For each MIDI file, change the MIDIFILE entry in the makefile. + +11. Run the make tool. + +- + +12. Load and run test.cof. 13. Refine your MIDI files, patches, and voice settings. + +14. Adjust volume and tempo in synth.cnf if necessary. 15. Repeat steps 5 through 14 until your music plays correctly. + +## , + +© 1995 Atari Corp. + +Confidential Information “JPR Property ofAtari Corporation 26 April, 1995 : + +j :{ + +z Hy),. 4, + +| | 4 + +{ | | + +gg3 g + +: : + +| 4 ; + +a + +: + +, + +| j + +4 4 : ; , + +4 - + +| + +**==> picture [505 x 466] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 36 Libraries
. MIDI Sequencer Sound Tool
Create MIDI file Create patches and Create samples
save as ASCII
Extxtract informationinf 3 Convert to
WwW from ASCII patch raw compressformat and
Parse and merge sections Patches,
one at a time Waveforns,
Envelopes,
Wavetables |
Include
Refine music and patches
make
**----- End of picture text -----**
+ + +Figure 1. Processing a MIDI File + +## Step-by-Step Procedure + +This section presents the steps for processing a MIDI file in detail. + +26 April, 1995 + +Confidential Information “FUR Property ofAtari Corporation + +—_— + +© 1995 Atari Corp. fF | + +|| I i | | i | | + +7 Libraries Page 37 ,. Sapa neal Whe daquar MAIE’SystemTools ; a. Install the tools and sample code from the distribution archives. : | The Jaguar Music System tools and sample files are installed automatically when you install the disks g that come with a Jaguar Development System. If you have received updated archives containing the | 7 tools (or downloaded them from an online service), then you should extract the archives into a t temporary directory. The directory structure used in the archives is: 1 JAGUAR\BIN[-][Various][ tools][ such][ as the][ MIDI][ parser,][ sound][ sample][ file][ format][conversion][utilites,][etc.] j JAGUAR\MUSIC\FULSYN - The Jaguar Synthesizer, source code and linkable object code. JAGUAR\MUSIC\SNDTOOL - The Jaguar Synthesizer Sound Tool - Used for creating patches for the | Jaguar Synth. j JAGUAR\MUSIC\SNDTOOL.MID - The MIDI version of the Sound Tool. 1 JAGUAR\MUSIC\SOUNDSA variety of ready-made sound patches for use with the Jaguar Synth and i the Sound Tool. N : JAGUAR\MUSIC\MUSICDRV - The sample program for the Jaguar Synth. This is the sample program . described in this document. JAGUAR\MUSIC\SYNDEMO- This is an alternate sample program for the Jaguar Synth. This one includes a more complex MIDI score that uses multiple instruments and looping. Also, this one uses multiple FM patches and no samples. To extract the various archives using this directory structure, use the following command: + +pkunzip -d music. zip + +Where “music.zip” is the name of the archive you are extacting at the moment. The PKUNZIP tool is supplied on your original Jaguar Developer System disks. + +If you are installing an update, please always extract the archives to a temporary directory first, so you can backup the existing files before copying over the new ones. b. Create a new directory for your music project. Make a new directory on your hard disk. You will use this directory to hold your MIDI file, synthesizer | w patches, samples, and several Jaguar files and programs . 7 The Jaguar Music System Tools distribution includes two sample projects. One plays a simple scale of notes using the Jaguar Synth’s Sample module. This project is contained in the directory , { JAGUAR\MUSIC\MUSICDRV. The second sample plays a more complex song with multiple voices, ' © 1995 Atari Corp. Confidential Information JER Property ofAtari Corporation 26 April, 1995 + +iy q Page 38 | | and uses FM patches instead of samples. This project is found in the JAGUAR\MUSIC\SYNDEMO directory. + +Libraries + +ay "al ' | : , : 2 + +: | q ' | | | q + +j ° synth.cnf { This file contains settings for global and MIDI volume of the synthesizer file contains settings for global and MIDI volume of the synthesizer contains settings for global and MIDI volume of the synthesizer settings for global and MIDI volume of the synthesizer global and MIDI volume of the synthesizer and MIDI volume of the synthesizer MIDI volume of the synthesizer volume of the synthesizer of the synthesizer the synthesizer synthesizer and the system clock : used to adjust music tempo. This file also allows the Jaguar Synth to be to adjust music tempo. This file also allows the Jaguar Synth to be adjust music tempo. This file also allows the Jaguar Synth to be music tempo. This file also allows the Jaguar Synth to be tempo. This file also allows the Jaguar Synth to be This file also allows the Jaguar Synth to be file also allows the Jaguar Synth to be also allows the Jaguar Synth to be allows the Jaguar Synth to be the Jaguar Synth to be Jaguar Synth to be Synth to be to be be reconfigured for the Bs optimum performance and memory usage requirements for individual performance and memory usage requirements for individual and memory usage requirements for individual memory usage requirements for individual usage requirements for individual requirements for individual for individual individual | the Jaguar Synth source code be reassembled -- see below). Jaguar Synth source code be reassembled -- see below). Synth source code be reassembled -- see below). source code be reassembled -- see below). code be reassembled -- see below). be reassembled -- see below). reassembled -- see below). -- see below). see below). below). : You will not need to change the following files: ° driver.s : This file contains initialization information for the Jaguar synthesizer. | ° fulsyn.inc | This file contains parameter settings and instructions file contains parameter settings and instructions contains parameter settings and instructions parameter settings and instructions settings and instructions and instructions instructions for the Jaguar the Jaguar Jaguar synthesizer. 7 located in the JAGUAR\MUSIC\FULSYN the JAGUAR\MUSIC\FULSYN JAGUAR\MUSIC\FULSYN directory.) | * £802_50.das : —____ ne q 26 April, 1995 Confidential Information ‘JER Property ofAtari Corporation + +i, + +c. Copy the Jaguar sound files to the new directory. + +This document uses the MUSICDRV project as its example. You will need the following files to perform the procedure described in this document. During this procedure, you will need to modify some of these files. Be sure to save the original copies of these files so you can use them for other projects. + +You will need to change the following files using a text editor. + +° makefile This file is used by the MAKE tool to compile various files into an executable program file. + +° parse.cnf + +This file contains MIDI channel, MIDI note range, voice number, and transposition data for the MIDI parsing process. It is used by the PARSE utility. + +This file is used to assemble patch data, samples, envelopes, user waveforms, and wavetables that must reside in the Jaguar's memory. + +This file contains settings for global and MIDI volume of the synthesizer file contains settings for global and MIDI volume of the synthesizer contains settings for global and MIDI volume of the synthesizer settings for global and MIDI volume of the synthesizer global and MIDI volume of the synthesizer and MIDI volume of the synthesizer MIDI volume of the synthesizer volume of the synthesizer of the synthesizer the synthesizer synthesizer and the system clock used to adjust music tempo. This file also allows the Jaguar Synth to be to adjust music tempo. This file also allows the Jaguar Synth to be adjust music tempo. This file also allows the Jaguar Synth to be music tempo. This file also allows the Jaguar Synth to be tempo. This file also allows the Jaguar Synth to be This file also allows the Jaguar Synth to be file also allows the Jaguar Synth to be also allows the Jaguar Synth to be allows the Jaguar Synth to be the Jaguar Synth to be Jaguar Synth to be Synth to be to be be reconfigured for the optimum performance and memory usage requirements for individual performance and memory usage requirements for individual and memory usage requirements for individual memory usage requirements for individual usage requirements for individual requirements for individual for individual individual projects (this requires that the Jaguar Synth source code be reassembled -- see below). Jaguar Synth source code be reassembled -- see below). Synth source code be reassembled -- see below). source code be reassembled -- see below). code be reassembled -- see below). be reassembled -- see below). reassembled -- see below). -- see below). see below). below). + +° fulsyn.inc This file contains parameter settings and instructions file contains parameter settings and instructions contains parameter settings and instructions parameter settings and instructions settings and instructions and instructions instructions for the Jaguar the Jaguar Jaguar synthesizer. (This file is located in the JAGUAR\MUSIC\FULSYN the JAGUAR\MUSIC\FULSYN JAGUAR\MUSIC\FULSYN directory.) + +| ' | | | + +© 1995 Atari Corp. + +Page 39 + +Libraries ° This file is the Jaguar DSP source code for the Jaguar synthesizer. You should not have to 7 change it, but you may recompile it to add or delete different synthesizer modules according to j the needs of individual projects (controlled by the SYNTH.CNF file). (This file is located in , the JAGUAR\MUSIC\FULSYN directory, but depending on the version, the filename may : change.) fF 6 © £802_50.03 This file is the linkable object module for the Jaguar synthesizer (This file is located in the : JAGUAR\MUSIC\FULSYN directory. Depending on the version, the filename may change.) CALLE EES : 1 a. Design and save your synthesized and sample patches. | Create the sound patches to be played by your MIDI file. You may want to perform this step before you : ; compose your music, or perhaps at the same time. This way, you will have a better idea of what sounds : q the Jaguar is capable of producing. i S. You can use the Sound Tool to create synthesized patches or use sampling software to create 16-bit i we samples. : If you use samples, we suggest you use 4 sampling rate of approximately 20 KHz to match the default : , 4 playback frequency of the Jaguar. You must use mono samples. If you have stereo samples, you can use i 4 the MONO utility to convert them to mono. | j We suggest you use the Sound Tool to set parameters of your samples, including pitch, loop parameters, ' : and envelopes. For more on voicing samples on the Jaguar, see the More on Voicing Samples section. H 7 Load the Sound Tool into the Jaguar using rdbjag by typing the following: : | rdbjag ' load sndtool.db : For more information about creating sound patches, see the Jaguar Sound Tool Users Guide and the 1 Jaguar Synth document. q The Sound Tool creates two kinds of patch files. One is an ASCII file designed to be assembled as q Madmac source code as part of your project. The other is a binary file used to load and save patches 4 that are being edited. Although it creates both types of files, the Sound Tool only knows how to load q the binary files. Therefore, after creating a patch, we suggest you always save it in a non-ASCII file so 1o you can reload it into the Sound Tool at a later time and make changes as needed. When saving these > files, we suggest you save the files with an extension of .ptc in a directory called sounds. 1 Important: Synthesizer patches use a lot less memory than samples. And, samples use outside . . 4 resources that are shared by graphics, causing slower game play and possible sample distortion. Because ; © 1995 Atari Corp. Confidential Information JPR Property of Atari Corporation 26 April, 1995: + +**i** - emPage 40 Asp Libraries i of these problems, you should avoid using samples as much as possible and instead use synthesized i sounds for your music. This is particularly important for games in which the available space for music is i very limited. If you must use samples, restrict them to important sounds that you cannot synthesize. i y y Pp I y \ b. Save ASCII versions of your patches. q For each patch you create, use the Sound Tool to save it as an ASCII file. If you created any patch data | information for samples, you should save this patch data as ASCII as well. i To save a patch in ASCII format, go to the main page of the Sound Tool and select the Save Patch i command. We suggest you name these files with an extension of . asc, and place these files in a | directory called ascii. + +7% + +j + +1 : 4 + +b/ 7 + +G ; 1 ' : : ] ' ' ‘ | : : + +1 + +c. Convert your samples to raw format, compress them, and write down sample information. + +The Jaguar DSP plays raw samples only. Raw samples contain the sample sound information, but do not contain other information such as looping data. If you created your sample in another format, such as the Audio Interchange File (AIF) format, you need to convert your samples to raw format for them to play correctly on the Jaguar. To do this, use the stripaif tool on your samples, and create other sample parameters (looping and pitch) in the patch data using the Sound Tool. + +Next, compress your samples using the sndcmp tool. This tool compresses samples from 16 bit to 8 bit. Also, write down the file name and file sizes of each sample. You may need the file size information when adding patch data to synth.s. + +## a. Clean up your MIDI sequences. + +After composing your music, you may want to clean up or modify your MIDI sequences before processing them for the Jaguar. Use your sequencing software to inspect each of your MIDI tracks. When examining your tracks, look for the following and make changes as needed: + +1. Verify that the number of voices being played by all of your tracks at one time (the polyphony) does not exceed the polyphony you are allowed for your game music. + +The Jaguar's polyphony is determined by the amount of time the synthesizer has to create each sound. The amount of time the Jaguar takes to create a sound depends on which synth module is for the sound. The total time available for the Jaguar to create sounds is 168 time units. Therefore, when determining the polyphony for your music, you must add the time values for each module you use to make sure the total time is at or below 167. Also keep in mind that some @ of the Jaguar synth's time available may be used to synthesize sound effects instead of music. For more information about calculating polyphony, see the Jaguar Synth document. + +**==> picture [2 x 17] intentionally omitted <==** + +**----- Start of picture text -----**

**----- End of picture text -----**
+ + +26 April, 1995 + +Confidential Information “7% Property ofAtari Corporation + +© 1995 Atari Corp. + +Page 41 + +: q Libraries ae 2. Check the quantization of your tracks to be sure that the timing of your notes (when notes start , and end) is what you want. You may choose to leave your music as you recorded it to give it a a | | more natural feel. Or, you may need to quantize some or all of your notes to correct for timing 1 problems. : | 3. Check that the note durations are what you want them to be. For example, if a note is used to : trigger a sample that does not use an envelope, you may want to shorten the note duration to q prevent undesired looping. You can also adjust the loop parameters of a sample and apply an : envelope to it using the Sound Tool. 4 : Be aware that any notes that trigger patches with long decays may affect your polyphony 4 _ galculations since decay of the patch sound may overlap new notes being triggered. Too avoid 3 this problem, be sure that your patch envelopes decay before the next note is triggered for that 4 patch. For example, suppose there are two sequential half notes, with the first note ending before ’ the second is triggered. Also suppose that the tempo of your music causes each note to last for ; one second. If the patch you use for these notes has an envelope that decays in one second or less, there is no problem. However, it the envelope decays in longer than a second, another voice will be needed to play the second note. If you are at the limit of your polyphony, the second note | may not play at all. 4 4. Verify that the note on velocities are set to the desired level. For example, you may want to 0 make the attack of a track consistent. On the other hand, you may want to leave them exactly as r you performed them. q | 5. Adjust the volume the instruments used for each track (MIDI controller 7) as needed. You will likely be using different sounds on the Jaguar than the ones you used to compose your music. Because of this, it is hard to predict the what the relative volumes wiil be for your Jaguar sounds. For example, you might set the volume of your kick drum to be just right when you play it back on your sequencer. But, when you play it on the Jaguar, the kick may not be loud enough. Because it is hard to know ahead of time what the relative volumes will be for your patches, you may want to set some Or all of your instruments volumes to a constant level (such as MIDI value 100). You can then mix the volumes on the Jaguar as needed from within the patch data file (synth.s) until they sound right. 6. If you want to have your MIDI file loop in the game, you need to set loop points in your MIDI file. For more information about how to set MIDI file loop points, see the Looping MIDI Files section of this document. b. Write down information about your MIDI sequences. Write down your MIDI file information for later use. | v0 1. Write down the MIDI channel numbers for each track in your MIDI sequences. You will need these numbers when you parse your MIDI file in step 11. + +start ‘ it a a ; : to to : . an : avoid = that i before i for : or a voice : note |: to : i i will : music. | : you play play " 4 your | (such : the MIDI . Files : will need need 26 April, 1995 ; + +© 1995 Atari Corp. + +Confidential Information FER. Property ofAtari Corporation + +He “Page 42 Libraries q 2. Write down the MIDI note ranges (as MIDI note numbers) for each track. This information is Hi required if you intend to play different sounds on the same MIDI channei. For example, if you you i recorded a track using a split keyboard, or drum machine, you need to write down which which notes 4 are for which sounds. You will use this information when you parse your MIDI file. : c. Save your MIDI file in sections as type 0 MIDI files. | The Jaguar music driver software plays type 0 MIDI files. This is a standard MIDI file format that 4 merges multiple-channel tracks into single tracks. Type 0 MIDI files still retain the MIDI channel 4 information of your tracks. 4 Therefore, to play your MIDI music, you must first convert it to one or more type 0 MIDI files. To test To test test | your music on the Jaguar, we suggest you save individual tracks (or groups of musically related tracks) tracks) q as separate type 0 MIDI files. This way, you can test and refine separate parts of your music, making it 7 easier to identify and fix problems you may find. | After testing and refining your tracks, you can use the merge tool to merge these files into one file for : use on the Jaguar. . : When saving your MIDI sequences, we suggest you name them with an extension of .mid. | ss St4.” Copy your MIDI Type 0 files; patchASCITfIes)andamples: | If they are not already there, copy your MIDI type 0 files, each of the ASCII patch files you created, and your samples, to your music project directory. a «xxrrti‘i‘ééSSCONOOCOOOCNONONONCOi#CUiésCNiéCaiCiaiCC#Sg?m ; a. Extract patch data to separate ASCII files. q Edit each ASCII patch file you created and locate the patch data. This data is a column of .dc.1 values ; used by the Jaguar synthesizer and music driver. The patch data is located after the label | _sounddata: ' Each ASCII patch file contains data for all pieces needed for your synthesis module. All envelopes, user waves etc. associated with your sound will be save in one file. j | Once you have located the patch data, copy it from your ASCII patch file to a separate file. { ' We suggest you name these files with an extension of .dat, and place them in a directory called ; : patches. = i 26 April, 1995 Confidential Information FOR Property ofAtari Corporation ©1995 Atari Corp. Corp. | + +information is a example, if you you " down which which notes file. format that channel files. To test To test test | related tracks) tracks) making it into one one file for you created, created, | of .dc.1 values .dc.1 values values : envelopes, user | j file. { called ; = ©1995 Atari Corp. Corp. | + +Page 43 + +: Libraries Dy. Replace the label names in your patch data : Replace the temporary labe] names (_env0, _envl, and so on) in your patch data to match the label : names you will put in synth.s. For synthesized patches, you may need to replace envelope, user | waveform, and wavetable labels within your patch data. For sample patches, you will need to replace | sample and envelope labels. ' We suggest you prefix label names for envelopes with e_ , user waveforms with w_, wave tables with : | t_, and samples with s_. For consistency across platforms, we also recommend you use labels of eight | or fewer characters. c. Adjust other patch values in your patch data. | : There are other voice parameters you may want to modify in the voice data of your patches. These — = parameters include the volume and pan value, among others. The location of the volume parameter | varies with the type of patch you are editing. The pan parameter is always the four rightmost digits in the last parameter in a patch. You can adjust mm =[the][ pan][ value][ between][ 00000000][(pan][ full][ right)][ and][OOOO7FFF][ (pan][ full][left).][ Setting][ this][ parameter] |, 10 00003FFF centers the balance. } Refer to the Jaguar Synth document for descriptions of these and other parameters for the type of patch fF you are adjusting. | d. Extract envelope data to separate ASCH files. Edit each ASCII patch file you created that uses envelopes (such as EM envelope and sample patches). ' Within each file, locate the envelope data that your patch actually uses. Envelope data is located in the | fille after the patch and user waveform data. j Each ASCII patch file contains data for the envelope used in your sound (_env0 - _env7). ' Once you have located the envelope data for your patch, create a separate file and copy the data into the ; file. Do this for each patch that uses an envelope. We suggest you name each file as patch. env, where patch is an abbreviation of the patch name { associated with the envelope. Write down the file names for future reference. You will need to include : these file names in synth.-s. ig When saving an envelope data file, we suggest you place it in one of two directories, env OF 7 slopeenv. Place envelopes you extracted from sample envelope patches in slopeenv directory. 7 Place all other envelopes in the env directory. + +; . : : | : : : | i i : : : + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +j { + +© 1995Atari Corp. + +Confidential Information JPR Property ofAtari Corporation + +26 April, 1995 + +: Page 44 1 OT | e. Extract user waveform data to separate ASCII files. + +Libraries : ~ c . in | = 4 into F = | | i the : @ data ‘ 1 data q 9 mz" the = | 3 4 ' ] | : j i | = for : a 7 | = © . J Corp. F . : + +| | ; q ' : ' + +} j + +Edit each ASCII patch file you created that uses a user waveform. Within each file, locate the user waveform data that your patch actually uses. User waveform data is located after the envelope data in the file. Once you have located the wavetable data for your patch, create a separate file and copy the data into the file. Do this for each patch that uses a user waveform. + +We suggest you name each file as patch.wav, where patch is an abbreviation of the patch name associated with the user waveform. Place these files in a directory called waveform. Write down the file names for future reference. + +f. Extract wavetable data to separate ASCII files. + +Edit each ASCII patch file you created that uses a wavetable. Within each file, locate the wavetable data that your patch actually uses. Wavetable data is located after the patch data in the file. + +Once you have located the user waveform data for your patch, create a separate file and copy the data into the file. Do this for each patch that uses a wavetable. + +We suggest you name each file as patch .tbl, where patch is an abbreviation of the patch name associated with the user waveform. Place these files in a directory called wavetabl. Write down the file name for future reference. + +_ a. Set the number of patches. ) Set the dc.w value under patches: : to be the number of patches you are using. For example: patches:: de.w 7 ; NUMBER OF PATCHES b. Include patch data files. Once you have created separate ASCII patch files include the file names in synth. s. The location for including these patch files is labeled in synth.s as patches: : + +It is important to realize the order in which you put your patches in synth.s defines the patch number used by the Jaguar. For example, the first patch in synth.s will be patch 0. + +| + +26 April, 1995 + +Confidential Information FER Property ofAtari Corporation + +© 1995 Atari Corp. + +Page 45 + +; + +[ + +] + +## Libraries + +1 ; Patch 0 | a .include ‘patches\\strlow.ptc' ; strlow patch ( \\ is needed because \ is a j 3 ; special character )}. uses ‘sstrlow' sample , 4 ; and 'estrlow' envelove + +@ = For acomplete example of this file, see the Example Files section. + +## | a Write down patch numbers. + +. + +@ = Write down the numbers for the patches you add. You will need to know these numbers when you @ modify parse.cnf to map your MIDI channel numbers to the actual patches you use. + +## d. Add sample labels and include sample files. + +M@ + +Add labels for your samples and include your sample files. The labels you choose must match those you | — specified in your ASCII sample patch files. For example: + +Me s_strlow: oa eincbin “"samples\\synstrgs.cmp" ; sample used in patch 0 + +## e. Initialize the voice table to the correct number of voices. + +Add a zero to the voice table field that is the last voice to be used. For example, the following table places a zero at voice 7, indicating eight voice polyphony: + +. + +- ORG tablestart + +j TABSSTART: : ; DO NOT EDIT THIS LABEL de.l -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0 ; voice 0 de.1 -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + voice 1 dc.l ~4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice 2 de.l -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice 3 dc. ~4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3 voice 4 de. -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3 voice 5 de.l -4,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice 6 ] de.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3 voice 7-LAST j dc.1 -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 : voice 8 i de.1 -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3; voice 9 a dc. ~4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice 10 : de.1 -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice 11 dc.1 -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice 12 dc.1 -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice 13 dc.1 0 + +**==> picture [1 x 12] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +} + +© 1995 Atari Corp. + +Confidential Information “JPR Property ofAtari Corporation + +26 April, 1995 + +] + +Page 46 + +Libraries + +j a + +| 4 | a gg + +| | + +Add labels for your envelopes and include your envelope files. The labels you choose must match those 1 | you specified in your ASCII patch files that use the envelopes. ra h. Add wavetable labels and include wavetable files. i Add labels for your wavetable and include your wavetable files. The labels you choose must match 1 7 those you specified in your ASCII patch files that use the wavetable. } | Step?. Add MIDI information to parsevent. es Edit the file parse.cnf to set the polyphony of your music, map your MIDI channels to the voice ve numbers you set in synth.s, define the note ranges for your voices, and transpose your tracks if { 4 3 necessary. The format for entering this information is: _ n = note polyphony _ j MIDI_channel - 1: note_range patch number transpose value value : 1 : MIDI_channel - 1 1 sets the MIDI channel number. You must subtract one from the MIDI channel number. You must subtract one from MIDI channel number. You must subtract one from channel number. You must subtract one from number. You must subtract one from You must subtract one from must subtract one from subtract one from one from from it since the Jaguar since the Jaguar the Jaguar Jaguar i a 2 voice numbers are zero-based. numbers are zero-based. are zero-based. zero-based. = note_range sets the range of notes played bya particular sound. This allows you to achieve the same a ; effect as a split keyboard or a drum machine in which one MIDI channel is used but different sounds are 4 triggered depending on the notes played. For example, for MIDI channel 1, MIDI note 36 may trigger a = kick drum sound, while MIDI note 38 will trigger a snare. _ patch_number is the number of the patch the number of the patch number of the patch of the patch the patch patch to use based on the sounds you defined in synth.s. use based on the sounds you defined in synth.s. based on the sounds you defined in synth.s. on the sounds you defined in synth.s. the sounds you defined in synth.s. sounds you defined in synth.s. you defined in synth.s. defined in synth.s. in synth.s. synth.s. | = j transpose_value is the amount in which to transpose the defined note range The transposition isinone 3 7. 4 note increments and can be either positive or negative A value of 12 will transpose up an octave, avalue { a4 of -12 will transpose down an octave, and a value of 0 will leave the notes untransposed For example: re | n= 8 ; 8 note polyphony | 4 O: 36-36 0 0 ; kick _ | 0: 42-42 1 0 ; clsdhat ] E 26 April, 1995 1995 Confidential Information Information “7O® Property ofAtari Corporation ofAtari CorporationAtari Corporation Corporation ©1995 AtariCorp. | eS4 + +| + +| ' | i ‘ j + +| + +| + +## f. Add waveform labels and include user waveform files. + +Add labels for your user waveform and include your waveform files. The labels you choose must match those you specified in your ASCII patch files that use the waveform. + +## g. Add envelope labels and include envelope files. + +n = note polyphony _ _ MIDI_channel - 1: note_range patch number transpose value value MIDI_channel - 1 1 sets the MIDI channel number. You must subtract one from the MIDI channel number. You must subtract one from MIDI channel number. You must subtract one from channel number. You must subtract one from number. You must subtract one from You must subtract one from must subtract one from subtract one from one from from it since the Jaguar since the Jaguar the Jaguar Jaguar voice numbers are zero-based. numbers are zero-based. are zero-based. zero-based. + +patch_number is the number of the patch the number of the patch number of the patch of the patch the patch patch to use based on the sounds you defined in synth.s. use based on the sounds you defined in synth.s. based on the sounds you defined in synth.s. on the sounds you defined in synth.s. the sounds you defined in synth.s. sounds you defined in synth.s. you defined in synth.s. defined in synth.s. in synth.s. synth.s. + +n= 8 ; 8 note polyphony O: 36-36 0 0 ; kick 0: 42-42 1 0 ; clsdhat 26 April, 1995 1995 Confidential Information Information “7O® Property ofAtari Corporation ofAtari CorporationAtari Corporation Corporation + +| ] For a complete example of this file, see the Example Files section. f Sigp8 Run'the parse 'programite parse your MIDI Mies, ] | Normally you would edit the makefile file for your project to include the names of your MIDI files so ; q that the PARSE tool is called automatically when required. See the makefile for the sample programs 4 j for examples of this. However, you can also run the PARSE utility directly from the commandline if f necessary. Type the following command to parse your MIDI files: + +: + +**==> picture [110 x 38] intentionally omitted <==** + +**----- Start of picture text -----**
+[46-46] [2] [0]
| 4 [WM).] Libraries
**----- End of picture text -----**
+ + +**==> picture [52 x 15] intentionally omitted <==** + +**----- Start of picture text -----**
+; openhat
**----- End of picture text -----**
+ + +## Page47 + +## parse -q yourMIDIfile + +The -q is an optional flag to suppress the output of the parse command. If you want to examine the parsing process as it occurs, do not use this flag. The parse output will be displayed to the screen. You can also redirect this output to a file so you can inspect it later. The parsing information may be useful for finding a problem if your MIDI file does not play correctly. ; q __Acommon error you may see is that note on or note off has failed. This occurs when the polyphony of y q t your MIDI file exceeds the polyphony you defined in parse.cnf. If this happens, increase the polyphony _ "value (if possible) or reduce the polyphony in your MIDI file. + +, + +## i See also the PARSE utility release notes (in the JAGUAR\DOCS directory). | Sige: AHS Y testing your musie one Section at atime, wun the merge toolto == combine yoursections, + +Merge your separate MIDI sections into one file. Use the merge tool to do this as follows: + +| + +, + +merge merged file input_filel.out input_file2.out ... + +| + +where merged[_file][is][the][resulting][ merged][ MIDI][file,][and][ input][files][are][the][parsed][output][files][of][ your] individual sections generated by the parse program. + +Normally, you would edit your project’s makefile so that the MERGE tool would be called by the MAKE utility when appropriate. + +Edit the makefile and change the file name of the MIDI file you are processing. For example: + +Page 48 + +Libraries + +| = ij 4 + +| ) + +MIDIFILE = cscale + +; + +] Zs + +| ! ! + +| ] ' + +j : i 4 + +| + +; + +“_ i] + +: ’ - : . q 4 3 , : | | = 1 .- . 4 —_ + +| | + +For a complete example of this file, see the Example Files section. + +Note: Do not change anything else in the makefile unless you are familiar with how it works. Changing other text , spaces, or tabs in this file may cause it to not work correctly. + +Step 11, Mun the mske tooleed Run the make program as follows to create the file test .cof. This file is the executable version of | your music for the Jaguar. Type: ] + +make + +Run the debugger rdbjag and load the file test .cof. This command will play your music on the Jaguar as it will sound in the actual game. Type the following commands: + +rdbjag + +aread test.cof g + +7 Repeat the steps above as needed to refine your MIDI files, patches, and voice settings. It is often \ necessary to adjust the volume of your instruments and mix between them using the pan parameters. You may also need to adjust the pitch and loop parameters for your samples. + +If necessary, adjust the global or MIDI volume settings in synth.cnf. Also, adjust the tempo. If your music plays too slowly adjust the SCLKVALUE parameter down. If it plays too quickly, adjust the parameter up. For example: + +GLOBALVOLUME equ $7fff MIDIVOLUME equ S7fff SCLKVALUE equ 19 + +**==> picture [43 x 22] intentionally omitted <==** + +**----- Start of picture text -----**
+| -
**----- End of picture text -----**
+ + +| + +26 April, 1995 + +Confidential Information “FAR Property of Atari Corporation + +© 1995 Atari Corp. + +Page 49 + +Libraries ' Step 15. Repeat Steps S through 14 until your music plays correctly. j Rerun parse, merge, and make to generate a new test .cof file. Then, run rdbjag, load | test.cof, and type ‘g‘ to play your music. Repeat this process until your music plays correctly. + +; voice type (a The first parameter in the voice data of a sample. The voice type must be $0000002C for 16a bit compressed samples. + +j + +f if The fifth parameter in the voice data of a sample. The end of loop point for the sample. The ~ value for this parameter is: ] ((file_size/2) <<8) - 1 where the file size is the size of the sample you noted in step 9. © 1995 Atari Corp. Confidential Information “JPR Property ofAtari Corporation 26 April, 1995 + +## weeanotvocngsanpes 0 + +We suggest you minimize your use of samples in your music because they use a lot of memory. | However, if you use samples, you can either use the Sound Tool to create sample patch data for you, or copy the patch data of any sample that already exists in synth.s and modify it as needed. In general, / we suggest you use the Sound Tool to set sample parameters, particularly if you need to adjust loop | parameters, such as beginning, ending, and length of the loop, or if you want to apply a volume envelope to your sample. | If you have not used the Sound Tool to create the voice data for your samples, and instead have copied : data for an existing sample, you must change the following .dc.1 parameters of the sample voice: + +° volume , The second parameter in the voice data of a sample. The volume can be any hexadecimal number that occupies the four rightmost digits. The maximum volume is OOOO7FFF. + +° sample label + +The third parameter in the voice data of a sample. The sample label is a label you define to identify the sample in the makefile. This parameter is also known as the start of the sample. + +° sample pitch + +The fourth parameter in the voice data of a sample. The sample pitch is typically $00001000, which indicates no change from the original sample pitch. A value of $00002000 doubles the pitch (raises it an octave) and a value of $00000800 halves the pitch (lowers it an octave). + +**==> picture [2 x 24] intentionally omitted <==** + +**----- Start of picture text -----**
+)
**----- End of picture text -----**
+ + +° end of loop point + +26 April, 1995 + +Page 50 + +Libraries + +: , bi é | ; j : ] + +| | | ; + +{ + +s + +: + +j . + +: 4 = f 4 q 4 | a | a _ | } : | = 2 3 | oa | a + +| : ' + +q + +| + +| | + +## ° loop length + +The sixth parameter in the voice data of a sample. The loop length for the sample. The value for this parameter is also: + +((file_size/2) <<8) - 1 + +. end of sample + +The ninth parameter in the voice data of a sample. The end of sample point for the sample. The value for this parameter is also: + +((file size/2) <<8) - 1 + +- . sample envelope label + +The tenth parameter in the voice data of a sample. The label of the sample envelope as defined in tables.das: + +- During game play, you may want one or more of your MIDI files to repeat until the player completes a task of moves to another level. To do so, you need to add loop parameters to your MIDI file before processing it. The following procedure describes how to add this information. 1. Identify the point in your MIDI file where you want to start looping. This is called the loop target. At that point in your MIDI file, insert a MIDI controller 12 event with a value of the target number (for example, a 0 for the first target, a 1 for a second target (if any). + +- 2. Locate the position in your MIDI file where you want to stop looping. At this point in the file, insert a MIDI controller 13 with a value of the loop target you defined in Step 1. + +3. Insert a MIDI controller 14 event with a value of the number of times to loop (up to 127 times). If you set the value to a negative number, the MIDI file will loop forever. Insert controller 14 right after the controller 13 event. + +4. You can loop for longer than the value you assigned for controller 14 by setting the loop count value in synth.s. For example, setting this value to 128 will cause the MIDI file to loop infinitely. + +**==> picture [40 x 18] intentionally omitted <==** + +**----- Start of picture text -----**
+| a
**----- End of picture text -----**
+ + +26 April, 1995 + +Confidential Information 7% Property of Atari Corporation + +© 1995 Atari Corp. + +Page 51 + +| Libraries + +: SYNTHPATH = /jaguar/music/fulsyn q gocceeceseseses ses Se ssa SSe ss ee seem sasansa } # Use ‘erase’ and ‘rename’ on MS-DOS / # Use ‘rm' and ‘'mv' on Atari w/ csh | ERASE = erase | RENAME = rename + +}. # MIDI FILE WITHOUT EXTENTION (!!) 3 eresesence se Se SSS SSeS SSS SSS SS SSS SS SST SERS MIDIFILE = cscale ’ # MIDI Parser flags 4 #eeceeeenaeseSs SSeS SSS SSS SSS SSS SSS SSS TS SRSS | PARSERFLAGS = -¢ j # Assembler & Linker flags MACFLAGS = -fb -i$(SYNTHPATH) ;$(MACPATH) : ALNFLAGS = -g -e -1 -a 802000 x 4000 q # Default Rules ' #neewee ass eseneewee ass ese ass ese se RSS ESSE SSS TSS SST SSS SSRI SSRE RSS ESSE SSS TSS SST SSS SSRI SSRE ESSE SSS TSS SST SSS SSRI SSRE SSS TSS SST SSS SSRI SSRE SST SSS SSRI SSRE SSS SSRI SSRE SSRE : . SUFFIXES: .scer .mid smid.scr: : parse $(PARSERFLAGS) -o S*.out $*.mid iG mac $(MACFLAGS) -o$*.scr $*.out S(ERASE) $*.out 7 F-3eee re sieeee re sie re sie sie Se SSS SSS SSS SSS SS TSS SSIS SS TSS SSIS TSS SSIS SSIS SS ‘ .SUFFIXES: -out .mid + +F The following code listings are examples of the four files (makefile, parse.cnf, synth.cnf, ; andsynth.s) you need to modify when preparing music for the Jaguar. + +**==> picture [1 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+;
**----- End of picture text -----**
+ + +# Makefile MUSIC DRIVER Josonsecesesssseessssese ssa ssss ss asamaasass + +- # Default Rules #neewee ass eseneewee ass ese ass ese se RSS ESSE SSS TSS SST SSS SSRI SSRE RSS ESSE SSS TSS SST SSS SSRI SSRE ESSE SSS TSS SST SSS SSRI SSRE SSS TSS SST SSS SSRI SSRE SST SSS SSRI SSRE SSS SSRI SSRE SSRE + +F-3eee re sieeee re sie re sie sie Se SSS SSS SSS SSS SS TSS SSIS SS TSS SSIS TSS SSIS SSIS SS .SUFFIXES: -out .mid + +© 1995 Atari Corp. + +Confidential Information “FO Property of Atari Corporation + +26 April, 1995 + +| + +Page 52 + +Libraries + +| @ - q P ‘ij 4 + +} | ‘ 4 + +- + +: \ ; + +| 4 , 3 j q . 4 = _ jf 4 ‘ << + +4 + +‘ = :- @ | a : a ] q A q 3 4 4 = ] a i ; Bo | Bo 4 od + +| . a 7 + +1 + +| 4 + +| + +q a |} = + +-mid.out: parse $(PARSERFLAGS) -o $*.out $*.mid + +. SUFFIXES : -ser .out + +.out.scr: mac $(MACFLAGS) ~-oS$*.scr $*.out + +. SUFFIXES: .0 .S + +mac $(MACFLAGS) $* + +-SUFFIXES: + +-o} .das + +-das.oj: mac $({MACFLAGS) -o$*.oj $*.das + +FULSYN = $(SYNTHPATH)/fs5 **0** .0j2_ OBJS = driver.o synth.o $(MIDIFILE).scr SCORE = S$(MIDIFILE).scr EXEC = test.cof + +# EXECUTABLES + +$(EXEC): $(OBJS) $(FULSYN) aln $(ALNFLAGS) -o $(EXEC) $(OBJS) $(FULSYN) + +$aseaecsssSSSSSSSe SaaS SSS SSS SSS SSS SSS # Dependencies + +driver.o: driver.s synth.cnf $(SYNTHPATH)/fulsyn.inc + +synth.o: synth.s synth.cnt $(SYNTHPATH)/fulsyn.inc + +$(MIDIFILE).scr: $(MIDIFILE) .mid + +$(FULSYN) : $(SYNTHPATH)/£s02_50.das synth.cnf $(SYNTHPATH)/fulsyn.inc mac $(MACFLAGS) -o$*.oj $*.das $=saaSeeresssSSSSsSeesees Ss SSeS # EOF Ge ee + +* File: parse.cnf 26 April, 1995 Confidential Information “7®® Property of Atari Corporation + +© 1995 Atari Corp. + +Page 53 + +\@uemme * Description: MIDI information file for the parse utility. f + +pw * Project: + +* Composer: ; * Date: FO | | * Format: Change the data in this file according to the @. following format. @ =, | | * n = max notepolyphony (default is 8 note polyhony} - * midi channel - 1: lowest_note - highest_note patch_number transpose value a * + +i... + +q a + +4 ; ALL RIGHTS RESERVED. :J : q; - ; Configuration for Fulsyn. 7 ; To save DSP memory, turn only those module on that are needed. 3 + +**==> picture [66 x 14] intentionally omitted <==** + +**----- Start of picture text -----**
+Libraries
**----- End of picture text -----**
+ + +- PF on=8 ; 8 note polyphony + +- @ = 0: : 36-36 0 0 ; kick | 0: 42-42 1 0 ; clsdhat 3 0: 38-38 3 0 ; snare q 3: 43-55 6 0 :; bass + +## LULrrrt‘“SO.._—=sprCsCiCsCsC(wNCC(iONO”COONNiCCNCCCCNCNCCCNCNCOCCCCiCsCwCOCCitCC + +pn ; This is a simple sample program to play a tune on the synth code. + +- 4 f + +- r ; ; MODULE: SYNTH CONFIGURATION FILE _ : DESCR: THIS FILE CONTAINS THE FULSYN CONIFGURATION + +- , 3 ; (WHICH MODULES TO INCLUDE), GLOBAL VOLUME, SCLK, etc. Fg , WW ~—s;;, COPYRIGHT 1992,1993,1994 Atari U.S. Corporation | 4 ; UNAUTHORIZED REPRODUCTION, ADAPTATION, DISTRIBUTION, = 3 PERFORMANCE OR DISPLAY OF THIS COMPUTER PROGRAM OR 4 ; THE ASSOCIATED AUDIOVISUAL WORK IS STRICTLY PROHIBITED. 4 ; ALL RIGHTS RESERVED. + +] ON equ 1 | OFF equ 0 q FMSIMPLE_MOD equ ON q FMCMPLX_MOD equ OFF ; FMENV_MOD equ ON WAVEFM_MOD equ ON WAVEFM2_MOD equ ON WAVETAB MOD equ ON q SMPL8_MOD equ OFF Mr SMPL16_MOD equ OFF CSMPL16 MOD equ ON : SMPLENV_ MOD equ OFF a CSMPLENV_MOD equ ON + +Mr + +:; a ©1995 Atari Corp. Confidential Information ‘FER Property ofAtari Corporation 26 April, 1995 + +Page 54 + +Libraries + +f- , : + +| + +44 | : = | |j = - 4 + +4 P + +q ae ee : @ | 4 | a | a _ | = Pe | @ | _ _ | | } = j Eo 4 oo | 3 mz | 8 . é _ q e : a 4 cS | a + +i : | : j | | . | : | 1i : 1 + +- ; The following is for the note on/off modules. + +- ; This section does not need to be edited. + +**==> picture [557 x 657] intentionally omitted <==** + +**----- Start of picture text -----**
+1 WAVEFM_NOTEFMCMPLX NOTE equequ FMCMPLXWAVEFM MODMOD+ WAVEFM2 MOD :
FM_NOTE equ FMSIMPLE_MOD + FMENV_MCD
. SMPL NOTE equ SMPL8_MOD+SMPL16_MOD+CSMPLi6_MOD+SMPLENV_MOD+CSMPLENV_MOD
WAVETAB NOTE equ WAVETAB MOD
; SET GLOBAL & MIDI VOLUME
‘ MIDIVOLUMEGLOBALVOLUME equequ S7fff S$7fff
: ; SET SCLK
re
SCLKVALUE equ 19
pe
; EOF
) synths
q Fn nn mn nn nn ee nn nH ee
; ; This is a simple sample program to play a tune on the synth code.
;
; MODULE: SYNTH DATA FILE
; DESCR: THIS FILE CONTAINS THE PATCHES, SAMPLES, ENVELOPES,
; USER WAVEFORMS AND AN INITIALIZED VOICE TABLE.
| ; COPYRIGHT 1992,1993,1994 Atari U.S. Corporation
i ; UNAUTHORIZED REPRODUCTION, ADAPTATION, DISTRIBUTION,
: ; PERFORMANCE OR DISPLAY OF THIS COMPUTER PROGRAM OR
| ; THE ASSOCIATED AUDIOVISUAL WORK IS STRICTLY PROHIBITED.
: ; ALL RIGHTS RESERVED.
Jomo mote monn aa nn mn en
j oon nanan +a-- === =~ === == += +- ++ +--+ - 2 == === === ===
; INCLUDE FILES
aaaaaiateiata aaa eee teeteeteeeeateterieteetataiaaietaataaeemmmaamaemen
-include ‘jaguar.inc'
. include ‘fulsyn.inc’
. - include *synth.cnf'
Boro enn rcrn R te a
; DATA SECTION
joann a a
-data
.even
FRR RK IH I KIRK RIK RK EK KKK KEK EEE KEKE KEE EKEEKHKE KE KEK KKK
pe EDIT AFTER THIS POINT ‘ +e
FREER RE EKER KKK EEE KER EE KKK EEE KEE KEE IK RE EKER KEKE KEKKK KKK KEE
26 April, 1995 Confidential Information FER Property ofAtari Corporation © 1995 Atari Corp.
**----- End of picture text -----**
+ + +**==> picture [20 x 19] intentionally omitted <==** + +**----- Start of picture text -----**
+rs
**----- End of picture text -----**
+ + +Page 55 + +## Libraries + +YP nmnn f ; PATCHES i ge I I ; patches:: 7 de.w 1 ; NUMBER OF PATCHES P+ Patch 0 .include 'patches\\strlow.ptc’ ; strlow patch ’ ; uses ‘'sstrlow' sample 4 ; and 'estrlow' envelope 3 gee en a } + SAMPLES ; pe I | strlow_s: .incbin "samples\\synstrgs.cmp” j; sampie used in patch 0 | pen nn nn PF +++ START OF DSP SECTION +++ a ga q -DSP | TABS_COPY:: i de.l TABSSTART ; DO NOT EDIT THIS LABEL de.l TABSEND - TABSSTART ; DO NOT EDIT THIS LABEL + +**==> picture [1 x 16] intentionally omitted <==** + +**----- Start of picture text -----**
+;
**----- End of picture text -----**
+ + +eR q ; INITALIZED VOICETABLE + A zero in the first field tells FULSYN that this is the last voice : 3; to be used! -ORG tablestart + +- TABSSTART: : ; DO NOT EDIT THIS LABEL de.l -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3; voice 0 + +- : de. -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice i + +- | dc.1 -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3 voice 2 j de.1 -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3 voice 3 | de.l -4,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice 4 dc. -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3 voice 5 + +- j dc.1l ~4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice 6 de.l 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0 5 voice 7-LAST + +- : de.1 ~4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3; voice 8 : de.l -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice 9 dc.l -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice 10 + +- q dc.1 -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; voice ll 4 de.l -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0 ; voice 12 j dc.l 0 + +**==> picture [327 x 36] intentionally omitted <==** + +**----- Start of picture text -----**
+* ga a
; ; USER WAVEFORMS
; pa
**----- End of picture text -----**
+ + +pa I ©1995 Atari Corp. Confidential Information FER. Property of Atari Corporation 26 April, 1995 + +j | + +Libraries + +; 3 . ) ¥ : 4 q 4 | 3 , 4 ’ 2 1 : | 4 4 | : + +| + +; 4 + +j + +| + +## Page 56 + +~ Oo ~ + +igen, 7 ENVELOPES ateaiasiaeiaibaiataieiaialatatatatetatatetatatetataetaaiaaatataetaaaamaamamataiaaamemeeeteeee + +strlow_e:: -include "slopeenv\\string5.env"” ; envelope used in patch 0 + +9 RK KK He HH RK KI II TK TK KKK IK KEKE KEK KKK ERE K RK ERK K RRR EK iehel EDIT UP TO THIS POINT * RR He HR KK IKK HTK KIKI KEKE KEKE KEE KK ERE EEEKEARKAKKEK KKK KKK + +; have slop for sloppy loader ~de.l 0,0 TABSEND: : ; DO NOT EDIT THIS LABEL -de.l 0 end + +**==> picture [10 x 18] intentionally omitted <==** + +**----- Start of picture text -----**
+a
**----- End of picture text -----**
+ + +26 April, 1995 + +Confidential Information TER Property ofAtari Corporation + +© 1995 Atari Corp. + +**==> picture [552 x 736] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||| +|---|---|---|---|---|---|---|---| +|:|’ Libraries|Page|57| +|- EEPROMAccessLibrary| +|:|The Jaguar provides several options for game developers to store non-volatile game information such as| +|a|high scores, options, saved games, music/sound effect levels,|etc...|while the unit is powered down.| +|||Standard (Cartridge E°PROM|(128 byes)|ee| +|1|Standard Jaguar Cartridge PCB’s are currently equipped with a 128 byte E?PROM for non-volatile| +|4|storage. Developer Alpine boards also contain a compatible part for use in game testing. These parts are| +|@|tated for approximately|100,000 write cycles before failure though we have achieved a much higher| +|number of successful|writes in our|testing.| +|||i|In order to provide compatibilty with the parts we use in manufacturing, we supply tested code which| +|must be used to access the E2PROM. This code should not be modified in any manner unless prior| +|q|approval is|granted by|Atari Corp.|The JAGUAR\SOURCE\EEPROM directory contains EEPROM.S,| +|=|which has six functions used for reading, writing, and performing checksums on this data. Use of these| +|F|functions requires that a valid stack pointer has been set in A7. These functions are as follows:| +|: —||.|an| +|a (t=|ew|EPROM|acdatress to read from.| +|Register Usage|Preserves|all other registers.| +|}_§|PurposeReturns|dO.wThis function = Value reads read|one 16-bit word (address #0-62) from the E°-PROM. This function| +|=|pays no attention to the checksum and therefore has no|way to be sure the data is| +|S|valid. A call to eeValidateChecksum|will ensure that successive calls to| +|7|eeReadWord will|return valid data.| +|Se|an| +|3|di.w|E-PROM|address to write to.| +|dO.w__|Data to write.| +||| +|3|Register Usage|Preserves|all other registers.| +|4|Returns|do.w|0» Successful.| +|j|1|-> Write failed.| +|4|Purpose|This function attempts to write one 76-bit word (address #0--62) to the E*PROM. This| +|g|function does not update the checksum and will thus cause any subsequent calls to| +|4|eeReadBank or eeValidateChecksum to fail. The function eeUpdateChecksum| +|must be used after any series of eeWriteWord calls to make the checksum valid| +|4| +|]|again.| +|fr|a0.)|Address of a buffer 63 16-bit words in length to receive data from the| +|ge|E°PROM.| +|:|Register Usage|Preserves|all other registers.| +|7|do.w|04 ->— Successful.Checksum|invalid.| +|'| +|q|© 1995|Atari Corp.|Confidential|Information|PPR|Property ofAtari Corporation|26 April, 1995| + +**----- End of picture text -----**
+ + +Libraries 5 q OO CU = - , a ; | the g only 4 4 4 |g j q , a 4 the ] | + +2 : 4 q 1 : j + +7 : ‘ + +] + +**==> picture [592 x 462] intentionally omitted <==** + +**----- Start of picture text -----**
+j Page 58 Libraries
| Purpose This function reads 63 16-bit words from the EPROM into a supplied buffer and
| validates the data against the stored checksum to ensure the data read is good.
eTCia NNCTi‘(‘i(C}RNVY’NRNRNRNAONNORONCNCriCiCCNCzCi(iyRO OO CU
2 a0.|__Address of a buffer containing 63 16-bit words to write to the E7PROM. =
Register Usage Preserves all other registers. -
Returns d0.w 0 -» Successful. , a
1 — Write failed. ; |
Purpose This functions stores 63 16-bit words supplied to it in the E-PROM, checksums the g
data, and stores the checksum at address #63. We recommend that this function only 4
be used when a large amount of data needs to be stored since this counts as 64 4
writes against the 100,000 rated limit. If you only change a couple of words, use 4
eeWriteWord(s) followed by eeUpdateChecksum. |g
j ecUpdateChecksumOU
Register Usage Preserves all other registers. j q
Returns d0.w 0 Successful. , a
Purpose 1 -» Checksum write failed. 4
This functions checksums the first 63 16-bit words from the E*PROM and stores the ]
checksum at address #63. |
7 Register Usage Preserves all other registers. : 4
Returns d0.w 0O- Successful.
Purpose 1 — Checksum invalid. | a
This function checksums the first 63 16-bit words from the E-PROM and compares :
: the checksum to the value stored at address #63. This function does not change any |
stored data. |
**----- End of picture text -----**
+ + +**==> picture [41 x 342] intentionally omitted <==** + +**----- Start of picture text -----**
+: 4
x
| a
: P ;
|
|
| g
7
: a
[=
: a
] Pa-
. 7
§ a
**----- End of picture text -----**
+ + +We are currently in the design phase of a new cartridge PCB which will contain a 16k E7PROM. Thirdparties will be able to request this PCB to provide access to the greater amount of storage. Because this project is still under development, no further details are available yet. Atari will notify developers when this part becomes available. | CD-ROM NV-RAM Storage Cartridge =§g#=#§ |. Because CD-ROM titles do not normally have access to non-volatile storage, Atari will be making j scoresavailableand a Flash game ROMinformation. cartridgeThe asprot a c **o** colsnsumerfor productaccessing thatthis give end-userscartridge are thegiven optionin the to NV-RAM save high Cartridge Access Library section. + +**==> picture [77 x 16] intentionally omitted <==** + +**----- Start of picture text -----**
+© 1995 Atari Corp.
**----- End of picture text -----**
+ + +26 April, 1995 + +Confidential Information “7O® Property ofAtari Corporation + +| + +| + +, Libraries Page 59 Ceea a Cartridge Access Library Because CD-ROM titles do not normally have access to non-volatile storage, Atari will make available a } special NV-RAM cartridge as a consumer product. This will give end-users the option to save high scores, setup options, and saved game information for their CD-ROM games. This cartridge is accessed by your program through the NV-RAM cartridge library. + +| These calls are provided to allow developers writing CD-ROM based games to save game information | into a special cartridge containing non-volatile Flash ROM memory in an efficient and easy to use } manner. There will be 128K bytes available in NV memory in the first version of the hardware (later ! cartridges may include more or less memory, so developers should use the Inquire function to } determine the actual space available). This memory will be used and allocated in a file system-like } manner, so that multiple games may use the same non-volatile memory cartridge without conflict, and } so that different cartridge sizes may easily be supported. The NVM_Bios calls are thus much like the } GEMDOS or MS-DOS file system calls. | The length of each block of memory is some multiple of 512 bytes. Memory blocks must be given a | _ size when they are created, and cannot exceed that size later. The total number of memory blocks M depends on the size of the cartridge being used, but as long as you use the NVM_Bios calls you will be z able to deal with whatever is available. + +A memory block is uniquely identified by two strings: the application which created it, and a block| specific name (its "filename"). The application name is available so that users may quickly identify which applications are associated with which blocks of memory. Application names may be up to 15 characters in length, and file names may be up to 9 characters in length. Both application and file | names must use only characters chosen from the following 40 character set: + +. + +## ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:'. + +space + +There are eleven calls provided to access NV memory. When the calls are available, a magic cookie with the value ' NVM' (OxSF4E564D) will exist at address $2400, and a dispatcher will exist at $2404. To invoke a function, do a 68000 JSR to location $2404 with the opcode and parameters described on the following pages. + +**==> picture [536 x 140] intentionally omitted <==** + +**----- Start of picture text -----**
+| All of the functions return a 32 bit value in dO, although in many cases only the lower 16 bits will be of
interest. If bit 31 of dO is set (i.e. if dO.1 is negative) then an error has occured. The following error
} codes are defined:
Error Name Code Description
ENOINIT | [-1_|] [the] [Initialize][ function] [has] [not yet][ been] [called]
ENOSPC [—-2__| there is not enough free space for the operation
EFILNE P__-3__| the file was notfound
aa
© 1995 Atari Corp. Confidential Information JER. Property ofAtari Corporation 26 April, 1995
**----- End of picture text -----**
+ + +**==> picture [2 x 16] intentionally omitted <==** + +**----- Start of picture text -----**
+:
**----- End of picture text -----**
+ + +: Page 60 The following following functions are following functions are functions are are ) | Cc i 68000 Assembly q : Purpose . a t ‘ , q q { 1 q ' | q ‘ | [: a | 26 April, 1995 April, 1995 1995 + +Libraries | 4 Error Name Code Description q - The following following functions are following functions are functions are are available: 4 Function Opcode P_intiaize | | [Open | Close 3 , | Cc ,”,,h”r””CC‘(Ci picture [465 x 112] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||| +|---|---|---|---|---|---|---|---|---| +|68000 Assembly|move.w|__ #handle,-(sp)| +|Example|move.w|__-#8,-(sp)| +|jsr|NVM_Bios| +|adda.||#4,sp| +|EIHNDL|if passed passed|an|invalid|handle| +|Purpose|Used by an by an an|application to to|indicate that|it|is finished working with a finished working with a working with a with a a|file|previously| +|opened|by Open Open|or Create. Create.|After the the|call to Close, the handle to Close, the handle Close, the handle the handle handle|passed|to close close| +|becomes|invalid,|and no further no further further|Read|or Write Write|calls on that on that that|handle|will|succeed.| + +**----- End of picture text -----**
+ + +**==> picture [492 x 258] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||| +|---|---|---|---|---|---|---|---|---|---| +|68000 Assembly Assembly|pea|file_name| +|Example|pea|app_name| +|move.w|#4,-(sp)| +|isr|NVM_Bios| +|adda.||#10,sp| +|EFILNF|if no file no file file|matching the given the given|application name and file name name and file name and file name file name name|is found found| +|Purpose|Deletes|a|file, freeing the memory freeing the memory the memory memory|associated with with|it.|Any|application may may delete any| +|determinedotherother|application's by Searchfile, by Searchfile, Searchfile,file,|Firstbyby|passing and Searchin the and Searchin the Searchin thein the the|Next)applicationin app_namename and andfile file_namenameapplicationin app_namename and andfile file_namenamein app_namename and andfile file_namename app_namename and andfile file_namenamename and andfile file_namename and andfile file_namename andfile file_namenamefile file_namename file_namenamename|(as| +|respectively.| +|Note that applications that applications applications|should|never delete files delete files files|belonging to other applications to other applications other applications applications|unless| +|specifically|requested|to do so by the do so by the so by the by the the|user|.|If an an|application needs more needs more more space than| +|is|available on the on the the|cartridge,|then|it should should|tell the the|user and and|offer him him|or her her the|choice| +|of either aborting the current either aborting the current aborting the current the current current|operation|or of selecting of selecting selecting|one or more files or more files more files files|to delete from| +|the cartridge. cartridge.| +|WARNING:|do|not make this make this this|call|if there there|is an existing file handle an existing file handle existing file handle file handle handle|(returned by a| +|previous Create Create|or Open Open|call)|referring to the file being deleted. to the file being deleted. the file being deleted. file being deleted. being deleted. deleted.|Use the the Close|call| +|to close close|all such file handles such file handles file handles handles|before|deleting the file. the file. file.| + +**----- End of picture text -----**
+ + +**==> picture [505 x 196] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||| +|---|---|---|---|---|---|---| +|Readpect| +|68000 Assembly|move.|count,-(sp)| +|Example|pea|bufptr| +|move.w|__ handie,-(sp)| +|move.w|__ #5,-(sp)| +|jst|NVM_Bios| +|adda.||#12,sp| +|number|of|bytes|read|in|dO,|if successful| +|EIHNDL|if passed|an|invalid|handle| +|7|___-__| +|26 April, 1995|Confidential Information|“7O®|Property|of|Atari Corporation|© 1995 Atari Corp.| + +**----- End of picture text -----**
+ + +| | + +|q + +|:|Libraries|Page63|| +|---|---|---|---| +|4
4
7
4
j|Purpose|TheRead callmay beused to fill a buffer pointedtobybufptrwithcountnumber of
bytesfromthe file specified byhandie (returnedfrom apreviousOpen orClose call).
Theread will begin atthe current position inthe file. This position is initialized to 0 by
Open orCreate, is incremented byReadand Write (bythenumber of bytes read or
written, respectively), andmay bechanged bySeek. Thegamecode must provide a
buffer largeenough to hold countnumberofbytes.
Ifsuccessful, the cail will return
thenumber ofbytes read. Attheend ofthe file (i.e.whenthe file's current position|| +||||exceeds its size) 0 bytes will be returned byRead.|| +||||ritCCCCCCwtC:«iSistStst—;ists«wtésSC.CXCidszaisCéiCi‘“CN:COtitOisC:CiCiCizsCi
.
4
4|68000Assembly
Example|move.|
count,-(sp)
pea
bufptr
move.w
handle,-(sp)
move.w __#6,-(sp)|| +|,
4
_
.
|
_—||jsr
NVM_Bios
adda.|
#12,sp
number ofbytes written in dO, ifsuccessful
EIHNDL if passed an invalid handle|| +|q
q

*|Purpose|The Write callmaybe usedto writecountnumber ofbytesfrom thefilespecified by
handle (returnedfrom a previous Open orClose call). Thewrite will begin atthe
current position inthe file. This position is initialized to
0byOpen orCreate, is
| incremented byReadand Write (by the number of bytes read orwritten,
respectively), and may bechanged bySeek. The number ofbytes actually written to
the file is returned. This may be lessthancount if, forexample, an attempt is made||| +|j||towritemore bytestothefilethanthespace allocated for it inCreate.|| +|||Searchfirst|== = =
Opeede?|| +||
4
4
j
;|68000Assembly
Example|move.|
search_flag,-(sp)
pea
search_buf
move.w __#7,-(Sp)
jsr
NVM_Bios
adda.|
#10,sp|| +|||||| +|‘||EFILNF if no files match the search|| + + + +a ©1995 Atari Corp. Confidential Information “7U® Property of Atari Corporation 26 April, 1995 + +| Page 64 Libraries | Purpose The Search First call can be used in conjunction with the Seareh Next call to browse B i through the backup memory table of contents. This can be useful for displaying to | the user all of the games whose information is backed up on a given cart. It can also . » be used by a game to obtain application and file names to be used in the Delete call ] | tofinalmakeauthorityroom onon thisa cartridgetype of foraction.its own information. The game player must be given d4 The search_buf parameter should point to a word-aligned 30 byte buffer used as a : : structure as shown below: ; typedef struct 4 { _ long size; | 4 char app_name[16]; . | char _ file_name[10]; 4 | } NV_FILEINFO 3 : If the search is successful, the size field will be filled in with a long word giving the : ' total size of the file. The app _name field will be filled with a null terminated character & string giving the name of the application that created this file. The file_name field will 3 be filled with a null terminated string consisting of the name the application gave to F 4 F the file. These two strings constitute the app_name and file_name parameters for the i 4 Delete call. 4 The search_flag parameter must be either 0 or 1. if it is zero, then the search will 4 ; ‘ include all files on the cartridge, regardiess of which application created them. If it is Pd ‘ one, only files created by the current application (as specified by the last cali to - : Initialize) will be included in the search. The value of search_flag will be used in , ‘ subsequent Search Next calls as well. | - i Ssrrrtri‘CC—COCNCSCdistsés.:«CisCdsCiésYS=UisrisCrisiCisiiéiCtitia ' C Prototype int NVM_Bios( short opcode = 8, NV_FILEINFO *search_buf) ] q q 68000 Assembly pea search_buf ; i Example move.w __-#8,-(sp) | | bi jsr NVM_Bios _ adda.l _#6,sp ] . identical to Search First | Purpose To be used in conjunction with Search First to provide the caller with table of f 4 | contents information. This call can be made successive times until EFILNF is _ f returned in dO. This will mean that no other entries exist in backup memory. : 2 | See the entry for Search First for the definition of the NV_FILEINFO structure. ; a Serrrtr—“‘SCOCCC.UCCC.COCitsa;st«t;C«C«Ci«Ciés.:SUCiéaiCN‘(CO#w;WSCOiléCOCiiwsCtiwzésC'Ctidissicrrrtr—“‘SCOCCC.UCCC.COCitsa;st«t;C«C«Ci«Ciés.:SUCiéaiCN‘(CO#w;WSCOiléCOCiiwsCtiwzésC'Ctidissic TCU Prototype long NVM NVM _Bios( short opcode = 9, short short opcode = 9, short opcode = 9, short = 9, short 9, short short handle, long offset, short flag flag ) q 2 + +Serrrtr—“‘SCOCCC.UCCC.COCitsa;st«t;C«C«Ci«Ciés.:SUCiéaiCN‘(CO#w;WSCOiléCOCiiwsCtiwzésC'Ctidissicrrrtr—“‘SCOCCC.UCCC.COCitsa;st«t;C«C«Ci«Ciés.:SUCiéaiCN‘(CO#w;WSCOiléCOCiiwsCtiwzésC'Ctidissic TCU Prototype long NVM NVM _Bios( short opcode = 9, short short opcode = 9, short opcode = 9, short = 9, short 9, short short handle, long offset, short flag flag ) q 2 + +26 April, 1995 + +Confidential Information APR Property of Atari Corporation + +© 1995 Atari Corp. Jn + +| + +|4
’|4
’|Libraries|Page65| +|---|---|---|---| +|||68000Assembly|move.w
flag,-(sp)| +|.
p
4
f
4
:|y||Example|move.|
offset,-(sp)
move.w __ handie,-(sp)
move.w
_— #9,-(sp)
jsr
NVM_Bios| +||
4
Pf
;
3|||adda!
#10,sp
the newfile position, ifsuccessful
EIHNDL if passed an invalid handie
:| +|Fd|||ERANGE ifthe offsetwould be past theend of file| +|j||Purpose|Resetsthe file position (used byReadand Write) forthe filewhose file handle (as| +|——|||returned byOpen orCreate) is handle to be at offset bytes from the beginning ofthe| +|,
|
,
4|||file (ifflag is 0) orfrom the current position inthe file (ifflag is 1}. SubsequentRead
or Write calls will begin their operations at this point (and will updatethe file position| +|;
||||as usual).| +||i||rlrt~—CO.UCOtCSCSCSsS;sSr«sS:«s—Srsi—SrsiaOiaéS$sSCiésiCiC:i:itsCiiSCiC;isiaC_CiézaK=(C|| +|4||Prototype|int NVM_Bios( shortopcode= 10, long*totspc, long“freespc )| +|_||68000Assembly|pea
freespc
; Ptrto ‘freespc’ variablesomewhere in RAM| +|=
4
:||Example|pea
totspc
; Ptrto ‘totspc’ variable somewhere in RAM
move.w _#10,-(sp)
bsr
NVM_Bios| +|Pg|||adda.|
#10,sp| +|||Purpose|Inquires aboutthe amount ofspace available on the cartridge. The fotspce parameter| +|a|||points to a long word which is filled in withthe total amount of cartridge memory which| +|.
4|||may be used for applications (i.e. the size ofthe largest possible memory block,| +|=|||assuming it is the only memory block onthe cartridge). Thefreespe parameter points| +|rp
4|||to a longwordwhich is filled in with the amount of cartridge memory currently free| +|,
4|||(i.e. the size ofthe largest memory blockwhich could be created atthe presenttime).| +|;
4|||; (Note thattheamount offree memory is notthe only constraint on the Create call;| +|4
||||even ifthere is sufficient spacefor
amemory block, Create may return ENOSPC if
there is noroom left inthe cartridge's table ofcontents.)| +|m||UsingtheNV-RAMSimulatoer
=|| + + + +The NV-RAM Simulator allows you to use an Alpine board plugged into your Jaguar CD-ROM | development station to simulate a NV-RAM cartridge during the development process. It provides the _ same functions for accessing NV memory as described in the previous section. - The NV-RAM Simulator is normally located in the JAGUAR\NVRAMSIM directory. To use it, load @ @=—_the debugger and then type: { load nvmsim.db : The NVRAM BIOS will be installed into your system and then control will return to the debugger. At | this point you may load and execute your main program. © 1995 Atari Corp. Confidential Information FER Property ofAtari Corporation 26 April, April, + +26 April, April, 1995 + +’ - Lf: , 4 {| ; | 4 = ' : : j I 4 , 4 | 7 gg | ’ ] ‘ P 4 |—a , 4 | 2 | q a , 4 + +| 1 + +ee errt—é—=étEEEWCCC”C;”*™tCOCOCNCiCNiszstsCdiézi(CO ‘(UNCsCisC If you hold down the "Option" key (and keep it held down) before typing the "load nvmsim.db" or “load nvmtest.db” command in the debugger, you will be presented with the Save Cartridge 1 Manager screen. This is a sample application which users will also be able to access in order to delete i files. (Please note that the existence of the Save Cartridge Manager does not excuse individual j applicationsfrom providing similar functionality themselves!!!). The Save Cartridge Manager uses the ; following keys: j up arrow/down arrow Selects files ‘ A,B,C To delete a file | OPTION To choose how to sort files : **OPTION +** 7+91 **To** save preferencescreate a (dummy) infilea file ; OPTION + *+# To erase all files ' OPTION + *+0+# To do a test of free memory “+ To exit the manager | Once the Save Cartridge Manager has run, the BIOS will be copied to RAM (at $2400). You can then i reset the machine and load and run your own application. The BIOS will remain in RAM until the j - machine is powered off. + +## Page 66 + +## Libraries + +1 The Alpine board’s memory from $900000 to $91FFFF will be used to hold the cartridge data. A sample disk image (full of files containing random data) is included with the simulator. The file is called DISKIMG.IMG. To load this file, type "read diskimg.img 900000" while in the a debsim **u** latorgger. andThethe debuggersample casc **r** ipttridge NVMTEST.DBfiles in one eai **s** alsoy step. included. It will load both the NV-RAM | ' Keep in mind that the Alpine board’s memory switch must be set for “write enable” in order for the simulator to work. Also keep in mind that any program or debugger script that clears DRAM below $4000 will erase the simulator from memory. + +**==> picture [13 x 23] intentionally omitted <==** + +**----- Start of picture text -----**
+ba
**----- End of picture text -----**
+ + +| + +26 April, 1995 + +Confidential Information FR Property ofAtari Corporation + +© 1995 Atari Corp. + diff --git a/docs/atari-jaguar-1999/11 - QSound for Jaguar.md b/docs/atari-jaguar-1999/11 - QSound for Jaguar.md new file mode 100644 index 00000000..fa4b22f8 --- /dev/null +++ b/docs/atari-jaguar-1999/11 - QSound for Jaguar.md @@ -0,0 +1,239 @@ +| QSound For Jaguar Page I ) QSound™ForTheAtariJaguar | QSound is a patented, innovative process for generating a sound field that is not bound to the playback | speakers. It requires only traditional stereo playback equipment for reproduction, and provides enhanced audio imaging capabilities with startling contrasts. + +**==> picture [505 x 201] intentionally omitted <==** + +**----- Start of picture text -----**
+| Using the QSound process, sound sources can be placed in "virtual space": an arc approximately +90
| degrees in front of the listener, well outside the speakers. The QSound pan positions which map this
| space are numbered0 (far left) to 32 (far right).
Left Speaker [*] J wento® Right Speaker
0 Yi JME
**----- End of picture text -----**
+ + +For game developers, QSound provides a rich environment for audio interfacing. For example, enemy fire can be heard in QSpace before the enemy appears on the screen; missiles launched off an F-16 jet fighter can be heard to drop off the wing tip before they race off into the distance; when you drive or fly past an explosion, it can appear to move beyond the player; background music can be given extra ambiance and depth. + +## | UsigeScindFordaguar + +There are two ways of using QSound for Atari Jaguar games: + +1. For sounds which can be preprocessed and require no dynamic control of position, the QSystem H or QCreator program can be used!. The QSystem II is a sophisticated hardware & software post production mixing system which results in stereo output. QCreator is a software-only tool which runs under Microsoft Windows and allows developers to QSound process mono sound samples in AIFF, RIFF, and raw sample formats. The result is a stereo sample which will include the QSound effect when played. + +j + +Sounds processed with QCreator can be played at runtime with no further processing required. However, because the samples are 16-bit stereo they will take up more room than using 16-bit mono + +- 1 The QCreator program is available to Jaguar Developers from either QSound or Atari Jaguar Developer Support upon request. For more information about QCreator or to inquire about the Qsystem II, please contact QSound directly at the address given at the end of this section. + +- © 1995 QSound Labs Confidential PER. Information 25 April, April, 1995 + +: + +25 April, April, 1995 + +| Page 2 2 QSound For For Jaguar | samples processed processed at runtime. runtime. Note also that using lossy sound compression also that using lossy sound compression that using lossy sound compression using lossy sound compression lossy sound compression sound compression compression techniques on QSound on QSound QSound | processed files will probably result in the QSound effect being altered or lost completely. files will probably result in the QSound effect being altered or lost completely. will probably result in the QSound effect being altered or lost completely. probably result in the QSound effect being altered or lost completely. result in the QSound effect being altered or lost completely. in the QSound effect being altered or lost completely. the QSound effect being altered or lost completely. QSound effect being altered or lost completely. effect being altered or lost completely. being altered or lost completely. altered or lost completely. or lost completely. lost completely. completely. { Because they require no additional processing at runtime, pre-processed samples can be used in | conjunction with the Jaguar Synth & & Music driver. + +Page 2 2 QSound For For Jaguar 5 samples processed processed at runtime. runtime. Note also that using lossy sound compression also that using lossy sound compression that using lossy sound compression using lossy sound compression lossy sound compression sound compression compression techniques on QSound on QSound QSound Ig processed files will probably result in the QSound effect being altered or lost completely. files will probably result in the QSound effect being altered or lost completely. will probably result in the QSound effect being altered or lost completely. probably result in the QSound effect being altered or lost completely. result in the QSound effect being altered or lost completely. in the QSound effect being altered or lost completely. the QSound effect being altered or lost completely. QSound effect being altered or lost completely. effect being altered or lost completely. being altered or lost completely. altered or lost completely. or lost completely. lost completely. completely. yy q Because they require no additional processing at runtime, pre-processed samples can be used in 4 conjunction with the Jaguar Synth & & Music driver. 2. For sounds which which are to be panned dynamically at runtime, The QSound Q1 Q1 module has been been implemented on on the Jaguar Jaguar DSP. The Q1 Q1 module takes 16-bit monophonic monophonic sound samples and and 4 creates 16-bit stereo output with the sounds positioned in 3D 3D space using the QSound effect. ti Because the QSound module module must be running in the Jaguar DSP Jaguar DSP DSP to process the samples at runtime, ’ your ability to otherwise use the DSP DSP at thesame thesamesame time is limited. For example, the Jaguar Jaguar Synth & & . Music Driver cannot be used at the same time. - One advantage to using the Q1 module instead of pre-processed sounds is that the files will take up half as much room because you have mono samples instead of stereo. And although the sample eS program doesn't do it, lossy compression techniques can be used to further reduce the storage | } requirements. Or you could even use plain 8-bit mono samples as your starting point and expand 4 them to 16-bit before passing them to the Qi module. a It's entirely possible to use both options in the same program. For your title screen and option screens | you might have some preprocessed QSound effects built into samples that are played as part of a music ' score being done by the Jaguar Synth & Music Driver. Then during your game play, you could have the (iim QSound Q1 module loaded so that you could dynamically position your sound effects in 3D space. 4 Regardless of which options you choose, the starting point must be a monoponic sound sample. This : can be created or edited using whatever digital sound sampler & editor you choose. This can be & something like the utilities that come with many PC sound cards, or something more sophisticated. The i main requirement is that you must be able to create files in either the RAW format that you would link = in with your Jaguar program or files loadable by the QCreator program. 4 The implementation implementation of the dynamic Q1 module on the Atari Jaguar system can be viewed as a black box the dynamic Q1 module on the Atari Jaguar system can be viewed as a black box dynamic Q1 module on the Atari Jaguar system can be viewed as a black box Q1 module on the Atari Jaguar system can be viewed as a black box module on the Atari Jaguar system can be viewed as a black box on the Atari Jaguar system can be viewed as a black box the Atari Jaguar system can be viewed as a black box Jaguar system can be viewed as a black box system can be viewed as a black box be viewed as a black box viewed as a black box as a black box a black box black box box 4 with a single entry point: the QSound QSound function running in the DSP. DSP. The QSound module can QSound module can module can can processup @ to eight independently panned mono mono voices. Regardless of the number of inputs, the number of inputs, number of inputs, of inputs, inputs, the output is alwaysa alwaysa q stereo stream, which may may be mixed with mixed with with other stereo data before before it is played back through played back through back through through the I2S : 7 interface. , 4 — Note: There is no internal volume scaling of the input samples within the QSound module. It is the 4 responsibility of the caller to do the required volume scaling of voices to ensure that overflow doesnot my occur. . a. The QSound process QSound process process is dependent on the sampling dependent on the sampling on the sampling the sampling sampling rate. The current implementation current implementation implementation is for the for the default ; sampling rate of the DSP, of the DSP, the DSP, DSP, which is a shade under 22050 Hz a shade under 22050 Hz shade under 22050 Hz 22050 Hz Hz (SCLK set to #19). #19). If you you are running running at
picture [2 x 24] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +**==> picture [422 x 181] intentionally omitted <==** + +**----- Start of picture text -----**
+mono input 0
pan position 0
. | QSound |
mono input 7
pan position 7 right
left ep
Other stereo data Stereo output to DAC
right an
**----- End of picture text -----**
+ + +| + +Descriptions of the routine follows. For further information or technical help, please contact Buzz Burrowes at QSound. The file QSOUND.OT is a linkable object module containing the QSound routines. This file must be linked with your program, and at runtime, the routines must be loaded into Jaguar’s DSP. It has a single entry point which is documented below. See the documentation on the sample program for more information. The QSound module is designed to be completely position-independent. You can load it anywhere in | DSP memory where room is available. Usually, it follows with other DSP code supplied by you which | feeds samples to the QSound module. See the demo program for an example. + +**==> picture [513 x 207] intentionally omitted <==** + +**----- Start of picture text -----**
+Summary: The QSound function is called every sample period in which at least one QSound voice is
active. Typically this means once per sample (typically 22050 times per second).
j ,
Input: 116 = return address
| 117 = number of QSound voices to process (1 to 8)
| r18 = Pointer to an array of structures which define the input sample and pan position for
each voice. The structures look like this:
| struct QSound_Voice /* Values use only low 16 bits of LONG */
; long sample; /* Sample to be processed */
long pan_position; /* values from 0 (left) to 32 (right) */
}120 = left channel of stereo output (32 bits) ready to be fed to Jaguar's I2S interface
122 = right channel of stereo output (32 bits) ready to be fed to Jaguar's 12S interface
© 1995 QSound Labs Confidential “78% Information 25 April, 1995
**----- End of picture text -----**
+ + +25 April, 1995 + +7 QSound For Jaguar ; i wilt q + +| | | | i | ; ' | 1 | ; | : + +Page 4 + +i ; § | 5 ' 3 3 4 a a : P| P| = = py iq . 4 = | § a = j ‘ 4 ' , 4 : : 4 | ; | | a ] q Si + +i : | + +| + +Register Usage: | uses 112 through 127 [Notes: —_—*| Rlequires/uses about (140 + (27 * num_voices)) instructions. + +iCi‘movei
movei
jump
nop
move
shrgq
shrq
wee|QSound ptr,rs
; Get stored address where we put QSound module
#after,rl6é
; return address for QSound
#1,r17
; mumber of voices
T,(r5)
; call QSound module
#toQSound,rl18
; ri8 -> input samples/pan pairs
#16,r20
; outputs in 16 bits for I2S Interface
#16,xr22
; store results for processing at next I2S interrupt||| +|toQSound:
-ds.l||1|;
;|up to 8 consecutive 2*32 bit locations
voice
O0 sample| +||-ds.i|1|;|pan position for voice 0| +||-ds.1
-ds.l
.ds.l|1
1
1|;
;
;|voice
1
sample
pan position for voice 1
voice 2 sample| +||-ds.l|1|;|pan position for voice 2| +||-ds.l|i|:|voice
3 sample| +||.ds.l|1|;|pan position for voice 3| +|-|.ds.l|1|;|voice 4 sample| +||-ds.l|1|;|pan position for voice 4| +||-ds.l
-ds.l|1
1|;
;|voice 5 sample
pan position for vcice 5| +||-ds.l
-ds.1|1
1|;
;|voice 6 sample
pan position for voice 6| +||-ds.l
-ds.1.|1
1|;
;|voice 7 sample
panpositionforvoice7| + + + +## HowToContactQSoundlabs = #=#=#=§= =. .......... | + +QSound Labs Inc. Tel: (403) 291-2492 2748 - 37 Ave NE. Fax: (403) 250-1521 Calgary, AB, Canada + +**==> picture [2 x 16] intentionally omitted <==** + +**----- Start of picture text -----**
+2
**----- End of picture text -----**
+ + +25 April, 1995 + +Confidential FOR Information + +© 1995 QSound Labs + +Page 5 + +| QSound For Jaguar Buzz Burrowes |r QSound2521 Ripley Labs,AvenueInc. F Redondo Beach, CA 90278 + +Tel: (310) 374-8017 Fax: (310) 374-0998 + +CO —De eee ) | QSound technology is protected by patent and copyright laws. Its use on the Atari Jaguar system is restricted to, and subject to, the licensing agreement signed with Atari. | All third parties interested in using QSound in Jaguar applications should check with Atari regarding | this licensing agreement. + +**==> picture [529 x 499] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---| +|QbEMOvasoindDemoProgram| +|}|The QDEMO program demonstrates how to use the QSound module to play back different samples and| +|||position them in 3D-space in real-time.|You use the joypad to control the location of the sounds in 3D-| +|}|space.| +|Below is|a|list of all the files which make up the QSound demo program.|In order to reduce the size of| +|||the archive containing the demo, the executable program|itself is not provided; the project must be built| +|||using the tools in your Jaguar developer’s kit.| +|:|Filename|DescriptionSound file used by the program (the helicopter).|This is a raw 16-bit mono sound sample| +|q|file (sample rate about 20khz).|Included at link stage by using|-ii option of ALN.|;| +|||This|is the code module for the demo program where things happen.|This copies the| +|ee:|reads the joystick and cooks the values for the QSPanner routine.| +||| +|with MAKE|utility to build executable program|file from source code and data files.| +|‘|OTERO S| Ts|th|MARE uty|to bul|executable|program|le rom|source|code|and|eta hos| +|file used by the program|(the explosion).|This|is a aw 16-bit mono sound sample| +|file (sample rate about 20khz).|Included at link stage by using -ii option of ALN.| +|4|sno|| Sunset|af|cag|wrm|on A| +|F.q ERO][TPHASER.SND|neeSound file used by the program|(theeae gunshot).|This isigen a raw 46-bit mono ae sound sample file| +|linker include file specifying names|of files to be linked|into demo program.| +|-ESERTOTNK|[SIN|interrate nt about 20khz). Includedfle specting|names at link offs stage to e|b|y usingInked -t|i|optionno deme of|ALN.rogran. ————| +|j|This file takes contro! after the startup code has initialized the system.|It creates an object||| +|routine|in|DEMO.S.| +|«= _|Tilist for|the ba|c|kgrounde picture,|installssme an ar obie|c|t listtrnmnme refresh routine, evo and then calls the||| +|MADMAC Source code file containing DSP|interrupt routines and demo program's interface| +|7|SOUNDING —t WRONGto QSound function.ince tt|cortaning|dadeaton|of ebels|GSOUND|GT mode —_}| +|5 a BSD-format object module containing @Sound|routines.|Linked with demo| +|program or with your own program to provide the QSound capabilities.|E| +|sonoOT|| Meee etinclud|e|file containing declarationsSe|ee cee of labels Saracens in QSOUND.OT module| +|||This file is actually in the WAGUAR\SOURCE|directory.|This is the screen displayed by the| +|4|startup code that is used by several of the sample programs in the Jaguar Developer's Kit.| +|p|©1995 QSound Labs|Confidential FER|Information|25|April,|1995| + +**----- End of picture text -----**
+ + +25 April, 1995 + +| Filename Description : 1 | STARTUP.S Standard Jaguar Startup Code. This module contains all the code necessary to properly i | «q initialize the Jaguar hardware and display a simple startup picture. Then it passes control to the _ start label in the QDEMO.S module. (See the Sample Programs section for further 1 information on the Standard Jaguar Startup Code.) VALOGO16.PIC | Binary image of picture to be displayed by demo program. This is a raw image file : containing no header. The image itself is 320 pixels wide by 200 pixels tall, 16-bit Jaguar : RGB format. included at link stage by using -ii option of ALN. | VIDSTUFF.INC | MADMAC include file containing miscellaneous equates used by the demo program's object 3 j list setup 1 Below is a more in-depth description of some of the main files from this demo program. . Sahlrrrrtr——~ picture [2 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+)
**----- End of picture text -----**
+ + +Page 7 + +QSound For Jaguar + +| + +$e (©1995 QSound Labs + +This file contains the readpad routine that we use to read the joypad controller. The joypad data is only : read by this routine, not interpreted. The readpad routine outputs one variable which describes the current joypad reading and another that indicates what’s changed on the joypad since the last time we read it (buttons being pressed or released, etc.). + +This file is essentially the same as the one used by the 3DDEMO sample program. + +j LLL LLLLL ; This is the main program-specific part of the source code. The gdemo routine starts off by blitting our | picture from ROM into RAM so that it can be displayed (displaying bitmaps directly from ROM is a big | waste of bus bandwidth). | Next it starts the main helicopter sound, and then jumps into a loop where it reads the joypad values (by calling the readpad function), and calls the interpad function. : The interpad function is responsible for interpreting the joypad values and taking the appropriate action: jt sets the pan positions of the sounds, and starts a gunshot and explosion sound if the *B’ bution is + +& pressed. LAL LLL LAL This file contains source code for the Jaguar DSP. The OSWrapper function enables the Jaguar 12S } interrupt, which is acting as the sample rate timer for our sound samples. Then it calls the QWave ; function. ; j The QWave function reads data from the sound samples being played, figures out the current pan positions, and then feeds this information to the QSound routine in the QSOUND.OT module, which then processes it. When an 12S interrupt occurs (about 22050 times per second), the processed samples } are output to the I2S interface so we can hear the wonderful 3-D sound effects that QSound is capable of producing. 1 Also contained in this file is the source for the DSP interrupt routines. In many other DSP applications, : } —_the 12S interrupt would grab the current set of samples and feed them to the I2S interface (i.e. play the ‘ ] sound). But because QSound has to pre-process each set of samples, we do thingsa little differently. ge OThe 12S interrupt simply sets a semaphore that the main QWave function uses as a flag to indicate that ge Owe are ready to hand one set of samples off to the 12S interface (i.e. play the sound). As soon as this iS ; | done, it sends another set of samples off to the QSound function to be processed. + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +Confidential “7% Information + +25 April, 1995 + +| | | i | | i ] | | | + +Page 8 co + +QSound ForJaguar + +: + +rrts—C—CW;sCOUSCOU.CiC(CNOi®COW”CNCt;CiC.®'SCSCtéCC.CUGMn.S + +f 7 program. It pixel. i ‘ the ALN ALN a | OC the PHASER and and ; this won’t won’t = with QSound QSound i) ( , | a » ; © 1995 QSound Labs | + +This file contains declarations for the QSOUND.OT module (so you can figure out the length of the code before you copy it into the DSP). See DEMO.S for an example + +This is a raw binary file containing the picture which we display on screen during the demo program. It is an RGB picture with dimensions of 320 pixels wide, 200 pixels high, and 16 bits per pixel. It is included and assigned a starting label and an ending label by using the -ii function of the ALN ALN linker. + +## WOGSNDSCOPTERSND-&PHASERSND + +These files contain the three raw mono 16-bit samples that will be played and passed through the QSound module. Note that the order these are specified in the link is important, as the PHASER and and MIX3 sounds are sometimes played together as a single sound. If they aren’t consecutive, this won’t won’t work correctly. You may wish to substitute your own 16-bit mono sample files in crder to see the results with QSound QSound on the Jaguar. These files are included and each assigned labels by using the -ii function of the ALN linker. + +| 25 April, 1995 + +Confidential FOR Information + diff --git a/docs/atari-jaguar-1999/12 - Cinepak for Jaguar.md b/docs/atari-jaguar-1999/12 - Cinepak for Jaguar.md new file mode 100644 index 00000000..1af1f750 --- /dev/null +++ b/docs/atari-jaguar-1999/12 - Cinepak for Jaguar.md @@ -0,0 +1,900 @@ +7 { Cinepak ForJaguar + +Page I + +j &' im - + +## bampCinepakForJaguar + +{ | This documents describes Cinepak forJaguar, a combination of utilities and code that hasbeen. | — developed to enable creation of high-quality video material which can be played back from the Jaguar = CD-ROM. Playback rates of 30 frames per second are possible even with full-screen (320x200), 16-bit @ per pixel images. In fact, even higher resolutions and/or frame rates are possible provided the overall data rate is reasonable. | | The Cinepak For Jaguar package is based upon Radius’ proprietary Cinepak video compression a technology!, which was specifically developed for this type of application; it consists of the following main elements: 1. Interface definition and linkable object code for the Cinepak decompressor. fF 2. Definition of a file format which interleaves audio and video in a manner suitable for playback on Jaguar, together with sample playback code which illustrates how to manage the periodic j access to the CD-ROM and maintain synchronization between audio and video. im 3. A utility to convert Cinepak-encoded QuickTime movies to the Jaguar Cinepak film format and perform necessary manipulations prior to recording on CD-ROM. 4. Three sample Jaguar films on CD-ROM. + +**==> picture [3 x 3] intentionally omitted <==** + +**----- Start of picture text -----**
+1
**----- End of picture text -----**
+ + +The Cinepak decompressor and the interface to it are discussed in the Cinepak Decompressor section. The Jaguar film format is discussed in the Jaguar Film Format section. The details of the sample player code are described in the Sample Playback Code section. The use of the film conversion utility is discussed in the Jaguar Cinepak Utility For Macintosh section. The content of a sample Jaguar CD-ROM containing Cinepak films is briefly described in the Sample Jaguar Films section. The layout of film data on a CD-ROM is discussed in the Using A Jaguar Cinepak Film With CD-ROM section. + +Decoding of the Cinepak bitstream and writing the decompressed pixel data to the frame buffer are handled almost entirely by the GPU in the Jaguar system. The 68000 plays a. minor role in parsing the bitstream and setting up pointers to various data structures. _ The Cinepak decompressor code consists of two object modules, codec.o and gpucode.og, for the & 0 68000 and the GPU, respectively. in addition, several flags must be defined, storage for auxiliary data i. must be reserved and the 68000 interrupt service routine must be used to coordinate bus activity . between 68000 and GPU. | 1 Cinepak was originally developed by SuperMac Technology, which merged with Radius, Inc. in 1994. i © 1995 Radius Inc. & Atari Corp. Confidential FAR Information 16 June, 1995 + +16 June, 1995 + +Page 2 + +Cinepak For Jaguar + +g& . f F 4 = ; 4 | 7 P 4 . 4 | 4 - q 3 _ | @ = ; « | = 4 B E x fF fF OS ] ae 4 s | ae 4 . + +| | + +a j t + +| | | i ] ; | | + +| | | z + +> . 4 ‘ q § + +: | + +| + +In this section, we define the interface to the two code modules and briefly describe the operation of the flags. For an example of how these elements are incorporated in playing a Jaguar film, see the Sample Playback Code section. + +The codec.o module consists of approximately 700 bytes of 68000 code. There are three user callable functions, CheckKeyFrame, PreDecompress, and Decompress. The interfaces to these routines is specified below. + +## All the routines preserve all 68000 registers. + +All parameters used by these routines are passed on the stack. The return value is also returned on the stack. Cleaning up the stack upon return from any of these three routines is the responsibility of the calling program. , + +This routine is called to determine whether or not the current frame is a key frame.” + +**==> picture [359 x 69] intentionally omitted <==** + +**----- Start of picture text -----**
+Stack Offset Size Description
4(a7) Return value. Must be set to 0 prior to entry. Will be
set to 1 upon exit if key frame is detected.
Address of start of frame.
Table 2.1 — 68000 stack setup before call to CheckKeyFrame.
**----- End of picture text -----**
+ + +212 PrebecompressiyOE This routine is called to set up the tables needed to draw pixels on the display. = + +**==> picture [437 x 133] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||| +|---|---|---|---|---|---|---|---| +|Stack|Offset|Size|Description| +|10(a7)|4|Return value.|Value|prior to entry|is|not important.| +|O =|returned|upon|successful|completion| +|non-zero|=|Error|occurred.| +|Y|6(a7)|~—s«| ~3—|4s Address of $3000 byte|auxiliary Cinepak data|buffer|(see section 2.4)| +|||2(a7)|~~|||4|sd|Address of start of frame|in Cinepak bitstream.| +|(a7)|Flag which|indicates video data type:| +|0 = Cinepak compressed-RGB|format| +|1|=|Atari CRY format|or expanded|RGB| +|Table|2.2 — 68000 stack setup|before|call to PreDecompress.| + +**----- End of picture text -----**
+ + +2 Cinepak generally relies upon frame differencing to compress video data; however, the encoder periodically inserts a key frame into the data stream. Such a frame can be decompressed without reference to any frames which precede it. A key frame may either occur naturally as a result of an abrupt change of scene, or can be injected into the data stream at a prescribed rate to aid random access or resynchronization with audio. 16 June, 1995 Property of “7@® of “7@® “7@® Atari Corporation Corporation © 1995 Radius, Inc. & Atari 1995 Radius, Inc. & Atari Radius, Inc. & Atari Inc. & Atari & Atari Atari Corp. + +Property of “7@® of “7@® “7@® Atari Corporation Corporation © 1995 Radius, Inc. & Atari 1995 Radius, Inc. & Atari Radius, Inc. & Atari Inc. & Atari & Atari Atari Corp. + +7 Stack Offset Size Description 16(a7) 4 Value prior to entry is not important. Returns: 0 = successful completion : 3 non-zero = error j |t2(a7)___|4 __ | Address of $3000 byte auxiliary Cinepak data buffer (see section 2.4) Address of start of frame in bitstream. Frame buffer address of top left corner of image. | [ B(a7y) [| 2 __| Bytes per row in frame buffer | Table 2.3 — 68000 stack setup before call to Decompress. { The latest version of Cinepak for Jaguar supports phrase interleaving for faster double or triple _ buffering schemes. If zero is passed as the phrase interleave factor, Cinepak will perform normally, j writing its data contiguously in memory. A phrase interleaving factor of one will cause one phrase to be } — skipped for every one written. A phrase interleaving factor of two will cause two phrases to be skipped | for every one written, and so on. This is done in a way that is compatible with similar features in the | Object Processor and Blitter. By interleaving the buffers which must be blitted back and forth, the . frequency of DRAM page faults drops signifigantly, increasing the available bus bandwidth. | This routine shuts down the Cinepak decompression code running in the GPU at the end of the current | frame. It takes no parameters. To restart Cinepak you must start from the beginning again. | ee ,rr,rrrrtr~—S—~<(i«w*”wsO~w™OCOWCWCSCSCOQUCOC(OCidszOisizC | The gpucode.og module consists of approximately 2200 bytes of relocatable GPU code. The labels DECOMP_S and DECOMP_E defined in the gpucode.og module are used to locate the beginning and ; end of the Cinepak GPU code so that it may be copied to the GPU’s internal RAM for execution. + +> | After the code has been copied over to internal GPU RAM, the GPU is started. The GPU code detects } the address at which it has been loaded by looking at the GPUOffset variable and then patches all | instructions and table values which are position-dependent. It then notifies the 68000 via the | GPU_READY flag (see Section 2.3) that it is ready to perform decompression tasks. + +**==> picture [516 x 41] intentionally omitted <==** + +**----- Start of picture text -----**
+4 Cinepak For Jaguar Page 3
LS r—“(itw”r”rC—mrmCwr—CO~—~C‘CC;éaC.®CtCtCW
**----- End of picture text -----**
+ + +## This is the routine that actually displays the pixels. + +| The Cinepak GPU code may be run from either register bank with some limitations. By default, Cinepak assumes it will run from Bank #0 and will set R31 to point to ten longwords of interrupt stack B. that it provides. As Cinepak requires registers RO-R27 (and R28-R31 are reserved for interrupts), if you run Cinepak in Bank #0, any interrupt code must preserve all Bank #0 registers. To run Cinepak in Bank | #1 you must perform the following steps: + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +ee Load the Cinepak GPU code into GPU RAM. 2. Load a small startup stub somewhere else in GPU RAM. © 1995 Radius Inc. & Atari Corp. Confidential PER Information + +16 June, 1995 + +Page 4 + +Cinepak ForJaguar 4 } 8 + +' ‘ + +> 5. Using the information information in GPU_OFFSET, jump GPU_OFFSET, jump jump to the head of the Cinepak code. head of the Cinepak code. of the Cinepak code. the Cinepak code. Cinepak code. code. || a When these above steps are performed, Cinepak will harmlessly change R31 in Bank #1 and continue to j run from Bank #1. Interrupts (which must run in Bank #0) may then use RO-R27 of Bank #0 without fy saving them. gg | Once the system has been initialized, all GPU functions are invoked from within the routines in the j codec.o module; no attempt should ever be made by your code to directly access the GPU : decompression functions. = While the GPU is executing decompression functions, the 68000 is halted (a stop #$2000 instruction is | | ’ executed within codec.o). When the GPU finishes its task, it interrupts the 68000; the interrupt service [— ‘ routine sets a semaphore which is polled within codec.o to reawaken the 68000. This mechanism q ' provides a 5-10% improvement in performance by minimizing GPU/68000 bus contention, and should | a not be circumvented. = q The sample player program includesa utility subroutine named LoadGPU in the util.s file. This routine | 1 i copies the GPU code from gpucode.og into GPU memory (see section 5.5). The load address is offset | 4 | fromCINEPAK.INC the base ofincludeGPU memoryfile. This by theoffset constantis necessary value GPU_OFFSET,to avoid collisiondefinedwith the in GPU the application-specificinterrupt vectors. | ]= | Sample code for the GPU startup sequence appears in the module player.s (see Section 5), in the | i vicinity of label WaitGPU. = i Storage for two flag variables must be declared within the DRAM address space. These are defined in : 2 ' Table 2.4. The initial values of these flags are not important. | @ : Flag Size Description a £ | semaphore Cleared within codec.o upon invocation of GPU task. Set by interrupt service e GPUOffset 4 routineRelocation uponoffset completionof GPU ofcode.GPU task.Before you execute the GPU code from Fo| « ' gpucode.og, this variable must be set to the offset from the beginning of GPU zz internal RAM (G_RAM) where the GPU code has been loaded. 2 The sample player program sets this to the constant value GPU_OFFSET at 7 time GPU code is loaded. j Table 2.4 — Flags declared in DRAM address space. ° An additional flag is declared (internal to gpucode.og) within GPU internal address space and must be = accessed by the 68000, as defined in Table 2.5. 7 + +| 4 + +3. Have the startup stub provide interrupt stack space and store the location in R31. 4. Switch to the second register bank. 5. Using the information information in GPU_OFFSET, jump GPU_OFFSET, jump jump to the head of the Cinepak code. head of the Cinepak code. of the Cinepak code. the Cinepak code. Cinepak code. code. + +© 1995 Radius, Inc. & Atari Corp. + +16 June, 1995 + +Property of P@® Atari Corporation + +**==> picture [517 x 249] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||| +|---|---|---|---|---| +|;|Cinepak ForJaguar|Page 5| +|Flag|Size|Description| +|GPU_READY|4|Cleared by 68000 prior to GPU startup.|Set by GPU when| +|initialization|procedure|has|been|completed.| +|:| +|1|To account for GPU code relocation, you must add the value of| +|q|GPUOffset to this symbol|in order to get the correct address.|(For an| +|1|example, see the code immediately|before the WaitForGPU label in| +|q|the sample program's player.s|source|file.)| +|||Table 2.5|— Flag declared in GPU|internal address space.| +|ma| +|||The PreCompress and Decompress routines require storage space in DRAM for auxiliary|Gata| +|L|structures, distinct from the Cinepak data bitstream.|This puffer must be $3000 bytes in length and| +|F|reside on a long-word boundary.|Your Cinepak playback application must pass the address of a suitable| +|.|buffer each time these functions are called.|(Note that the same buffer may be used for both functions.)| + +**----- End of picture text -----**
+ + +The Cinepak bitstream is simply a source for a continuous stream of video; the bitstream contains no F information pertaining to time, frame rate, or synchronization of video with other media such as audio. | To provide a time reference and synchronization among different media, the Cinepak bitstream must be | embedded in some higher-level structure that is aware of time and the existence of media other than | yideo. The Jaguar film format has been devised to meet these requirements. + +- j The Jaguar film format exists in two flavors: , J) Smooth. This format is useful for playback of multiple low-resolution (for example, less than 160x100) films or a single film of higher resolution, provided in either case that the duration is + +- | very short (usually 3 or 4 seconds maximum). In this case, ali the film data could be stored and j played from ROM, or could be retrieved from the CD-ROM ina single brief access and loaded ] into DRAM for playing. =) Chunky. This format is designed for playback of longer films that cannot fit in DRAM all at once. Here, periodic access to the CD-ROM is required on a continuing basis, so some + +- : mechanism must be incorporated in the film structure for locating and identifying the film data : that are needed for display at a particular time. | The film formats are described in detail in the sections 3.1 and 3.2. + +- pAtari’s existing sample Cinepak player code only knows how to play Chunky-format Cinepak Films. . Ifyour program needs to play smooth films, the changes would needed would be minor. + +© 1995 Radius Inc. & Atari Corp. + +Confidential FER Information + +16 June, 1995 + +Page 6 ; Cinepak For For Jaguar LoDlDdUDL”D”™L™rrrt~—r—.—CL.CWCUCUSCisCsSCisCistC Table 3.1 defines the structure of a smooth film at the highest level. + +Cinepak For For Jaguar + +ris‘iCCO'iUWW” | & F . |; 4 | fi j | & : q q 7 | 3 4 , 4 | ‘ _ r , 4 = 4 4 || @@ | =a | 7 E j ‘ . * j 7 + +| | | | : / \ i i | | ; : | + +| + +**==> picture [437 x 94] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||| +|---|---|---|---|---|---|---|---|---|---| +|Field|Size|Description| +|Frame Header|16|Global film|header| +|"FrameDescriptionAudio Description||||2020|_|| FrameAudio data size format and compressiondescription|type| +|Sample|Table|16 +|(n*|16) ||Index to film|samples which follow;|_n|is number|of samples| +|Film Samples|Audio blocks and video frames| +|Table 3.1 — Smooth film format.| + +**----- End of picture text -----**
+ + +The frame header identifies the ensuing data as a Jaguar film and gives the offset to the start of the film data: its structure is defined in Table 2.1. The frame description provides information about pixel resolution and the format of the compressed video; Table 3.3 describes this structure. The audio description contains information about the format of any audio data included in the film. This is discussed in Table 3.5. (Note that some older Jaguar Cinepak films may not include this field.) The sample table provides a time-based index to the ensuing audio and video data which form the actual content of the film; Table 3.7 defines the structure of the sample table. + +At the film sample level, the data stream is interleaved blocks of audio and video sample information; the time field of the sample record holds the key to the multiplexing scheme (see discussion following Table 3.8). The audio data itself uses the format defined by the film’s audio description atom. The video data stream is in the proprietary Cinepak format, which is interpreted by the Cinepak decompressor. + +## Loe eC + +lrrrrrtr—~—“itsOOCOCiCzSCdstszsSCsCisCOwiWCCCNCNCOiéCONOCOwsC®CC(CCiCwzé.C_CN = + +**==> picture [434 x 85] intentionally omitted <==** + +**----- Start of picture text -----**
+|||| +|---|---|---| +|Field|Size|Description| +|||[_Header__|]| +|rAtomSize {44|__|__||SizeHuman of film readableheader, tag:plus FILM’ ensuing frame description and sample table| +|_|Table 3.2 — Structure|of frame header.| + +**----- End of picture text -----**
+ + +The frame header is a 16-byte structure comprised of four long-word fields. The Header field is a human-readable tag, ‘FILM’, which identifies the ensuing global data structure as a Jaguar film. The AtomSize field gives the offset in bytes from the start of the header to the beginning of the audio and video data records; this offset includes the size of the frame header itself, plus the sizes of the ensuing frame description and sample table structures. The Version and Reserved fields are not currently used; developers are free to use these as they wish. + +**==> picture [2 x 19] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +16 June, 1995 + +Property of“JER Atari Corporation © 1995 Radius, Inc. & Atari Corp. | + +’ Cinepak For Jaguar + +Page7 + +**==> picture [527 x 549] intentionally omitted <==** + +**----- Start of picture text -----**
+Field Size Description
] |Header| _4 ___|Human readable tag: ‘FDSC'
: |—AtomSize_|4 _ | Size of frame description atom (=20)
j CType 4 Human readable compression type:
: ‘cvid' = Cinepak compressed-RGB format
j '$CRY' = Expanded Atari CRY format
‘$RGB = Expanded RGB format
j -—Wwiath[Height —[_| _ 4 _ _|_ Number of dp xe s i sp l ay per lines line
j Table 3.3 — Structure of frame description atom.
1 The frame description is a 20-byte structure comprised of five long-word fields. The Header field is a
human-readable tag, ‘'FDSC', which identifies the structure as a frame description. The AtomSize field
| contains the size of the frame description atom (i.e. 20 bytes). The CType field contains a human-
} readable code which identifies the format of the compressed video; two modes are recognized:
] Value Meaning :
j | [‘evid']
‘'SCRY' _| CinepakCinepak compressed-RGBExpanded Atari CRY format format
. ‘$RGB Cinepak Expanded RGB format
Table 3.4 — Frame Description Atom CType values
| The Height and Width fields specify the vertical and horizontal resolution of the video in pixels.
ec lt‘ :COC;S]; zi‘i‘i##W’XYCX’ON’NYN’CUC#iét«
] Field Size Description
|Header| 4 __| Human readable tag: ‘ADSC’
Size of audio description atom (=20)
j AudioData Audio Data Description
{ .SCLK [4 __|SCLK timer value for audio playback
‘ Audiobritt | [4][|] [Drift] [rate][ value][ used] [adjust][ audio][ sample] [rate]
: Table 3.5 — Structure of audio description atom.
| The audio description atom is a 20-byte structure that defines the format of the audio data contained in
| the Cinepak film so that it may be played back properly. The Header field is a human-readable tag
| ‘ADSC’ which identifies the structure as an audio description atom. The AzomSize field specifies the
size of the structure (20 bytes). z
**----- End of picture text -----**
+ + +The AudioData field is a bitmapped flag that defines the data format of the audio, i.e. mono or stereo, i — compressed or non-compressed, 8-bit samples or 16-bit samples, and so forth. See Table 3.6 for a definition of the meanings of each bit. Note that the proper utilization of this information is the responsiblity of the Cinepak player application. + +I ©1995 Radius Inc. & Atari Corp. Confidential PER Information 16 June, 1995 + +| Page 8 8 Cinepak For J tt 1 Bits Meaning PO |0=Mono,1=Stereo | 2-7 | Audio Compression Audio Compression Compression Type: 0 = uncompressed 1 = n® compression compression other values are reserved j Two's Complement audio flag Complement audio flag audio flag flag | Table 3.6 3.6 — Audio description flag Audio description flag description flag flag bits ' The SCLK field contains the value which should be used with the Jaguar’s SCLK timer to set the DSP | SCLKinterrupt field frequency will be forset to audio-1 ($FFFFFFFF)?. playback. In Jaguar Cinepak films which have no audio information, the | The AudioDrift field specifies a 32-bit value that can be used by the player program’s audio playback AudioDrift field specifies a 32-bit value that can be used by the player program’s audio playback field specifies a 32-bit value that can be used by the player program’s audio playback specifies a 32-bit value that can be used by the player program’s audio playback a 32-bit value that can be used by the player program’s audio playback value that can be used by the player program’s audio playback that can be used by the player program’s audio playback can be used by the player program’s audio playback be used by the player program’s audio playback used by the player program’s audio playback by the player program’s audio playback the player program’s audio playback player program’s audio playback program’s audio playback audio playback playback i code to account to account account for the difference between the difference between difference between between the audio audio data’s original sample rate and rate and and the actual playback playback : rate on the Jaguar. on the Jaguar. the Jaguar. Jaguar. This value value is added to an accumulator during each DSP sample added to an accumulator during each DSP sample to an accumulator during each DSP sample an accumulator during each DSP sample accumulator during each DSP sample during each DSP sample each DSP sample DSP sample sample rate interrupt. ' Whenaa carry is generated, generated, instead of proceeding to the next sample of proceeding to the next sample proceeding to the next sample to the next sample the next sample next sample sample as usual, usual, the current current sample is { reused instead. The audio drift rate is derived from derived from from the formula: formula: + +Cinepak For Jaguar + +4 ’ j a j - = 1 .i]& ; 3 ff | | fg > + +i _ | Gl | 4 | 4 : , — _ , 4 | 4 _ , 4 : 2 j ® ‘ q : = + +**==> picture [507 x 163] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 8 8 Cinepak For Jaguar
tt
Bits Meaning
PO |0=Mono,1=Stereo
2-7 | Audio Compression Audio Compression Compression Type:
0 = uncompressed
1 = n® compression compression
other values are reserved
Two's Complement audio flag Complement audio flag audio flag flag
Table 3.6 3.6 — Audio description flag Audio description flag description flag flag bits
**----- End of picture text -----**
+ + +The AudioDrift field specifies a 32-bit value that can be used by the player program’s audio playback AudioDrift field specifies a 32-bit value that can be used by the player program’s audio playback field specifies a 32-bit value that can be used by the player program’s audio playback specifies a 32-bit value that can be used by the player program’s audio playback a 32-bit value that can be used by the player program’s audio playback value that can be used by the player program’s audio playback that can be used by the player program’s audio playback can be used by the player program’s audio playback be used by the player program’s audio playback used by the player program’s audio playback by the player program’s audio playback the player program’s audio playback player program’s audio playback program’s audio playback audio playback playback code to account to account account for the difference between the difference between difference between between the audio audio data’s original sample rate and rate and and the actual playback playback rate on the Jaguar. on the Jaguar. the Jaguar. Jaguar. This value value is added to an accumulator during each DSP sample added to an accumulator during each DSP sample to an accumulator during each DSP sample an accumulator during each DSP sample accumulator during each DSP sample during each DSP sample each DSP sample DSP sample sample rate interrupt. Whenaa carry is generated, generated, instead of proceeding to the next sample of proceeding to the next sample proceeding to the next sample to the next sample the next sample next sample sample as usual, usual, the current current sample is reused instead. The audio drift rate is derived from derived from from the formula: formula: DrifRate = A SourceSampleRate + (SourceSampleRate - JaguarSampleRate) The Jaguar sample rate is determined by: _ VideoClockRate = 26590906Hz (NTSC), 26593900Hz (PAL) {VideoClockRateVideoClockRate JaguarSampleRate = {|————. + 32————. + 32 + 32 32 | 2 x (SCLK+ x (SCLK+ (SCLK++ 1) + +4 {VideoClockRateVideoClockRate 4 JaguarSampleRate = {|————. + 32————. + 32 + 32 32 | 2 x (SCLK+ x (SCLK+ (SCLK++ 1) You can work backwards from the DriftRate value and the Jaguar Sample Rate to get the original : sample rate. You might do this, for example, in the event that you wanted to change the DSP code to perform linear interpolation to adjust the playback sample rate, rather than simply repeating samples. The formula for this is: JaguarSampleRate : SourceSampleRate = JaguarSampleRate +eee 2 +DriftRate || Note that older Jaguar Cinepak films may not contain an Audio Description Atom. If none is found, the player code should typically default to expecting 8-bit mono at a 22050 Hz (original) sample rate. + +3 This will only be true for films converted with versions of the Jaguar Cinepak Utilities dated June 1995 and later. 16 June, 1995 Property of “FO® Atari Corporation © 1995 Radius, Inc. & Atari Corp. + +. + +j| |Duration|Duration|| 4 | Duration of playback playback interval for sample for sample sample Table 3.8 — Structure of sample record. j The start field gives the starting address of the sample referenced by the sample record, relative to the f end of the sample table. The end of the sample table coincides with the end of the frame header (see | = Table 3.2). + +| The size field gives the size of the referenced sample in bytes. Adding the start and size fields of the | current sample record yields the value in the start field of the next sample record. + +| + +**==> picture [391 x 147] intentionally omitted <==** + +**----- Start of picture text -----**
+: ; Cinepak For Jaguar
mm 81.4 SampletableAtom
: ] Field Size Description
Po |__Header_
= | 4 «| SizeHumanof sample readable table tag: 'STAB'atom
P| “Seale [4 __| Time scale of [fim]
fq Number of sample records in table
: Sample records 16* Count | Array of sample records
q ; Table 3.7 — Structure of sample table atom.
**----- End of picture text -----**
+ + +**==> picture [29 x 15] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 9
**----- End of picture text -----**
+ + +We sé audio and frames of video. The header is a human-readable tag, ‘STAB', which identifies the @e structure as a sample table. The atom size field contains the size of the sample table atom, which je 20s encompasses the ensuing sample records. 1 | The scale field provides the time scale for the fiim, in fractional units of a second, i.e. the unit of time is @e the reciprocal of the scale. A value of 600 is commonly used in QuickTime movies, as it is the lowest F common multiple of the common rates of 24, 25 and 30 frames per second. The MovieToFilm too] does ‘ q - not alter the time scale embedded in the QuickTime movie when a Jaguar film is created. The count field gives the number of sample records which immediately follow it; the sample record f structure is defined in Table 3.8. + +**==> picture [356 x 67] intentionally omitted <==** + +**----- Start of picture text -----**
+Field ' Size Description _
Start of sample
Number of bytes in sample
Time at which to play sample
|Duration|Duration|| 4 | Duration of playback playback interval for sample for sample sample
**----- End of picture text -----**
+ + +| The 31 least-significant bits in the time field of the sample record give the time at which the referenced sample is scheduled to be played, in the units specified by the scale field of the sample table. If the | — value is $7FFFFFFF that indicates that the referenced sample (block) contains audio, not video, which | should be played immediately following the end of the previous audio sample (block). + +> 4 The “sample” terminology is, unfortunately, somewhat ambiguous. In the context of a Cinepak film, it refers to a set of : data which may be either audio or video. In the context of audio, it conventionally refers to the 8-bit or 16-bit datum which is read or written to a DAC. Where possibility for confusion exists, we use the terminology "block" to indicate j the aggregate. ] © 1995 Radius Inc. & Atari Corp. Confidential “FER Information 16 June, 1995 + +**==> picture [2 x 12] intentionally omitted <==** + +**----- Start of picture text -----**
+i
**----- End of picture text -----**
+ + +**==> picture [3 x 15] intentionally omitted <==** + +**----- Start of picture text -----**
+:
**----- End of picture text -----**
+ + +16 June, 1995 + +Page 10 + +Cinepak For Jaguar : (0) or not (1); or not (1); not (1); (1); this is a carry- is a carry- a carry- carry| 2 referenced sample, in units of the sample, in units of the in units of the units of the of the the j j addition of the time and duration of the time and duration the time and duration time and duration and duration duration : field of the next video sample of the next video sample the next video sample next video sample video sample sample 1 { | | eee | except that additional additional structures 4 for random access on a random access on a access on a on a a | @ Pf ] og -— _n is number of chunks number of chunks of chunks chunks | samples : -_ identical to those already defined those already defined defined : header atom size atom size size 4 4 q for chunky format films; chunky format films; format films; films; they 1 ] f 4 es | 3 ‘CTAB’ _ j } fo 4 in table table . 2 ; | a table (see Table 3.7). (see Table 3.7). Table 3.7). 3.7). The 4 and the chunk record, defined the chunk record, defined chunk record, defined record, defined | 4 | 7 Publishing Company, 1993, pages. Company, 1993, pages. 1993, pages. pages. 3 q j = © 1995 1995 Radius, Inc. Inc. & Atari Corp. Corp. | = + +1 | ) : | | I | q + +) + +jj + +The most significant bit of the time field indicates a shadow Sync sample (0) or not (1); or not (1); not (1); (1); this is a carry- is a carry- a carry- carryover from QuickTime that should be ignored by the sample player code.5 + +The duration field of the sample record gives the play duration of the referenced sample, in units of the sample, in units of the in units of the units of the of the the time scale. For an audio sample (block), the duration is meaningless; addition of the time and duration of the time and duration the time and duration time and duration and duration duration record.fields of the current video sample record yields the value in the time field of the next video sample of the next video sample the next video sample next video sample video sample sample + +32 Chunky Pomel 2 eee The chunky format contains all the ingredients of the smooth format, except that additional additional structures are embedded in the data stream to partition it in time and provide mechanisms for random access on a random access on a access on a on a a CD-ROM disc. The highest-level structure is shown in Table 3.9. + +**==> picture [421 x 95] intentionally omitted <==** + +**----- Start of picture text -----**
+Field Size Description
Frame header 16 Global film header
| Audio Description | 20 __[ Audio data format description
___Chunk table __| 16 + (n* 16) | Index to chunk data which follow; _n is number of chunks number of chunks of chunks chunks
|__ Chunk data___[~_variable__| Time-sequential chunks of film samples
Table 3.9 — Chunky film format.
**----- End of picture text -----**
+ + +The frame header, frame description, and audio description fields are identical to those already defined those already defined defined for the smooth format (see Table 3.2 and Table 3.3), except that the frame header atom size atom size size encompasses the ensuing chunk table. . The chunk table and chunk data fields are new fields especially created for chunky format films; chunky format films; format films; films; they are defined in Table 3.9 and Table 3.11, respectively. S21, Chunk Vekle Ati es | HeaderField [4Size |Human readableDescription tag: ‘CTAB’ [__ Seale | ___4 | Time scale of fim _ [Count[___4 ____ T Number of chunk records in table table Table 3.10 — Structure of chunk table atom. ; The chunk table bears a close resemblance to its counterpart, the sample table (see Table 3.7). (see Table 3.7). Table 3.7). 3.7). The differences are that the atom header ‘CTAB' identifies it as a chunk table, and the chunk record, defined the chunk record, defined chunk record, defined record, defined in Table 3.11, is a minor variation on the previously defined sample record. + +5 2-134For moreto 2-135. information, see the book Inside Macintosh: QuickTime, Addison-Wesley Publishing Company, 1993, pages. Company, 1993, pages. 1993, pages. pages. 16 June, 1995 Property of FOR Atari Corporation © 1995 1995 Radius, Inc. Inc. & Atari Corp. Corp. | + +; ‘Cinepak For Jaguar Page 11 Pe StatField | Size4 |StartofchunkDescription | | 1 Table 3.11 — Structure of chunk record. The chunk record is identical to the sample record (see Table 3.8), except that the duration field of the } latter is replaced by the sync pattern field. This 4-byte field specifies the pattern that is replicated to } form the sync marker for the chunk in the data stream. Field Size Description : rsync | _64.__| Sync Sync marker used to locate locate chunk within data stream data stream stream | | | Table 3.12 — Chunk — Chunk Chunk data format. format. + +Page 11 + +Field Size Description : rsync | _64.__| Sync Sync marker used to locate locate chunk within data stream data stream stream | | | Table 3.12 — Chunk — Chunk Chunk data format. format. The chunk data element begins with 64-byte sync marker. This is followed by the sample table and film sample data for all film samples which fall within the time boundaries of the chunk. The structure of } the sample table is identical to that for the smooth format (see Table 3.7); however, the addressing of | film samples by the start field is local to the chunk. The zero base is the end of the sample table, in | analogy with the addressing for a smooth film. oe lmrrrrrt—<“—iws—s—s—s—s—s—s—O—C—C—OC—C~C~C~COCOCUC OwzSONCiCiCCC:ir«:«CNCUOCié'#UCO#ié#=(C.W ! Once you have created your film and converted it to the chunky Jaguar Cinepak format using the | — SmoothToChunky option of the Jaguar Cinepak Utilities program, you are ready to put the film onto a | CD-ROM disc so that it may be played on the Jaguar. We will presume for now that you are using just | one film per CD-ROM track. | The smooth format Jaguar Cinepak Film created by SmoothToChunky is used to create a track file using | the Jaguar CD Track Creator program (see the Jaguar CD-ROM chapter). This puts the correct | Jaguar CD-ROM track wrapper around your film data and gives youa track file that you can feed | directly to your CD-ROM mastering software in order to make a CD-ROM disc. & Unfortunately, some CD-ROM mastering software packages do not have the ability to take a raw binary file and use it to create a track. They may require that the file must look like an AIFF or WAV audio | file (even if that’s not really what kind of data it contains). The AIFF or WAVE file wrapper is removed prior to the data being written to the disc. The current version of the Jaguar CD Track | Creator has no option to add an AIFF or WAV wrapper to the files it creates; this must be done as an Rtvr | ©1995 Radius Inc. & Atari Corp. Confidential FO® Information 16 June, 1995 + +| + +Page 12 Cinepak ForJaguar 1 : : additional step with a separate program. (The MKAIF tool supplied as part of the Jaguar sound & 7 | music package can be used for this purpose right now, but this feature will be added to future versions of the Jaguar CD Track Creator.) fy | eerrr—s—S—«..—.—.LUrC“C#Y)NYCRRRROSGYC”d”C'§&$$E$’NCNCSNC#aC@RS j An early approach to the AIFF requirements of CD-ROM mastering software was the FilmToAIFF { option of the Jaguar Cinepak Utilities program, which takes a Jaguar Cinepak Film and creates a new | § | file with an AIFF audio file wrapper around the original data. This option should no longer be used.6 -— : First, it only works with Jaguar Cinepak Film files, which isn’t the only thing you’ll need to put onto a i | Jaguar CD disc. Also, it presumes that there will only be one Cinepak film in each CD-ROM track, | 4 f whichit creates maydo notnot befollow the casethe ifstandardyou have Jaguara lot CD-ROM of small moviestrack specification, instead of a fewso bigit can o **n** es.ot be Finally,used to thecreatea files | j ' master CD-ROM disc ready for production. 4 i If your player code was originally set up to expect a film processed by FilmToAIFF, there are a few F : things to watch for when you change it over. First of all, FilmToAIFF has an option to put an extra 4 wrapper around the film data.” This places 56446 bytes of leader data (all “A” characters) before the fg j Jaguar Cinepak film data. Some older versions of Atari’s sample player program expect to find this data ‘ and use an offset value defined by the LEADER equate to skip ahead by this amount on each read from | | the CD. If you stop using FilmToAIFF, you should make sure that your player software no longer does this. Also, FilmToAIFF inserts a 64-byte sync header with all “1” characters immediately before your rp 4 Jaguar Cinepak film data. The player probably uses this to locate the start of the film. If this is the case, you must change it to look for the partition header created when you build a track file using the Jaguar 7 CD Track Creator program.’ _— See the Jaguar CD-ROM chapter for more information on CD mastering considerations. : j : ‘12 Other CD Mastering Considerations «= esa“ | Note that some older CD mastering software automatically inserts two seconds worth of silence at the 1 1 ' start of each audio track. This results in extra data at the start of the track. Some versions of the sample - | Cinepak player code include a SILENCE equate that is used to skip past this datain a similar mannerto | = the LEADER equate mentioned eariler. See the chapter Jaguar CD-ROM for more information. | @ | «- BSample'PlaybackCode eee | This section gives a comprehensive description of the sample code which is provided to demonstrate 2 | playback of Jaguar films from CD-ROM. The example is based on a film in the chunky format. The 2 smooth format, being a subset, would not be as illustrative. = 6 The FilmToAIFF option is still available in the current version of the Jaguar Cinepak Utilities program, but will is 7 probably be removed from future versions. ] x 8 See section 8.5 for more detailed information on the FilmToAIFF conversion. j > See the Jaguar CD-ROM chapter for detailed information on the Jaguar CD Track Creator program. 4 Fa 16 June, 1995 Property of F@® Atari Corporation © 1995 Radius, Inc. & Atari Corp. Ca + +Page 13 + +| + +m j + +## Cinepak ForJaguar + +The sample code consists of the following source modules, in alphabetical order: { player.inc clear.s dspcode.das intserv.s lister.s memory.inc j player.s utils.s vidinit.s + +: A makefile is also provided to build the executable player code. Warning! Please note that the current version of the sample Cinepak player : programs is not intended as a general example ofJaguar programming. It is intended to specifically demonstrate the use of the Cinepak decompression code, and 1 : nothing else. Do not use this example to obtain startup code or as a shellfor creating your own programs. i { The system DRAM and ROM emulator memory map is shown in Table 5.1. Relevant symbol | definitions are contained in the module memory.inc. + +**==> picture [419 x 201] intentionally omitted <==** + +**----- Start of picture text -----**
+Address Range Description
4 $0 - $OFFF Exception vectors, CD-BIOS
7 $4000 - $57BF* Player executable code
Se7C0"-SFFEF|Notused
: $10000
- $31BFF
S31000-S833FFF[Notused
| $34000 -$36FFF | Auxiliary Cinepak data
S57000837FFF[Notused
: $38000 - $137FFF | Film buffer (chunk table and film data)
; $138000 - $13803F Overflow (GPU fills beyond end of buffer)
SSS040-SiFFFFF [Notused
: : $800000 - $8FFFFF
7 $900000 - SOFFFFF | Debug history
* = Approximate address, may change with different versions of
: player program.
**----- End of picture text -----**
+ + +Table 5.1 — DRAM and ROM emulator memory map. + +| + +| + +| + +| + +The memory map may be freely rearranged, or compacted if necessary; however, there are several restrictions: + +1. The base of the frame buffer (currently $10000) must be phrase-aligned. + +2. The base of the auxiliary Cinepak data area (currently $34000) must be long-aligned. 3. The base of the film buffer (currently $38000) must be long-aligned. + +© 1995 Radius Inc. & Atari Corp. + +ConfidentialFER Information + +16 June, 1995 + +Page 14 14 Cinepak ForJaguar | egrrtrt~™.CSO_C(C‘i‘NYRYNRRRRRRAN_.U.«U«UC«wS‘‘NNHS|'rrtrt~™.CSO_C(C‘i‘NYRYNRRRRRRAN_.U.«U«UC«wS‘‘NNHS|' In this section, we we describe several key key parameters, defined in player.inc, player.inc, which either have major & impact on the behavior behavior of the the system or interact with similar parameters in the tools. , 4 The CBUF_SIZE equate controls the size of the the circular butfer which which is used to store the chunk table and film data. It is currently currently set at 1 MByte, although the size may be reduced, particularly for low- low= betweenresolutionreadorresolutionreadorreadoror short-durationandand write pointersfilms. uponThestartup HEAD_STARTmustfilms. uponThestartup HEAD_STARTmust uponThestartup HEAD_STARTmustThestartup HEAD_STARTmuststartup HEAD_STARTmust HEAD_STARTmustmust be adjusted equate, equate, alongwhichwithguaranteesCBUF_SIZE;a minimummaintainingseparationthewhichwithguaranteesCBUF_SIZE;a minimummaintainingseparationthewithguaranteesCBUF_SIZE;a minimummaintainingseparationtheguaranteesCBUF_SIZE;a minimummaintainingseparationtheCBUF_SIZE;a minimummaintainingseparationthea minimummaintainingseparationthe minimummaintainingseparationthemaintainingseparationtheseparationthethe _| 4 current ratio of 75% of 75% 75% should be be adequate. 1 The GPU_OFFSET GPU_OFFSET equate determines the offset from the offset from offset from from the base of GPU base of GPU of GPU GPU internal RAM RAM at which which the : Cinepak decompressor code code is loaded. loaded. During initialization, its value value is copied to copied to to the variable location , 4 GPUOffset, which the GPU code uses GPU code uses code uses uses to relocate portions of of its own own code and data. data. : The FILM_SYNC equate FILM_SYNC equate equate must correspond to the 4-byte correspond to the 4-byte to the 4-byte the 4-byte 4-byte partition sync marker that sync marker that marker that that is repeated repeated 16 times times . ) (for 64 bytes 64 bytes bytes total) immediately before immediately before before the film data begins. begins. The player code uses this to locate the player code uses this to locate the code uses this to locate the uses this to locate the this to locate the to locate the locate the the 4 beginning of the of the the film data after it is ready ready from the CD. CD. This sync marker sync marker marker is inserted inserted in front of the of the the 4 Jaguar Cinepak Cinepak film data by by the Jaguar CD Track Creator program when you create CD Track Creator program when you create Track Creator program when you create Creator program when you create program when you create when you create you create create the track files for files for for : j the CD.° CD.° The FilmToAIFF option of the of the the Jaguar Cinepak Cinepak Utilties program program always creates a sync a sync sync | pattern of of “1111”. 10 fi (MFi]The DRIFT_RATE DRIFT_RATE_RATE equate is used used to account for the difference between the sample sample rate of the of the the — originalsections audio3.1.3 data 5.6in in thefor more moreoriginalinformation.)QuickTime originalinformation.)QuickTime QuickTime movie and the and the the actual playback rate on on the Jaguar. Jaguar. (See i sections 3.1.3 and 5.6data 5.6in for more moreoriginalinformation.)QuickTime information.)QuickTime : ___ PLAYERS... PLAYERS... It seems to me that this information is other misleading or incomplete, incomplete, = etse we wouldn't be able to work with different different sized audio blocks. andwedo>> ae The AUDIO_LAG equate is a critical parameter in the calculation of when to start reading equate is a critical parameter in the calculation of when to start reading is a critical parameter in the calculation of when to start reading a critical parameter in the calculation of when to start reading critical parameter in the calculation of when to start reading parameter in the calculation of when to start reading in the calculation of when to start reading the calculation of when to start reading calculation of when to start reading of when to start reading when to start reading to start reading start reading reading ; ; data from the CD-ROM. CD-ROM. It is tied tied to the parameters parameters AUD_CHUNK and SAMP_RATE, and SAMP_RATE, SAMP_RATE, | @ which represent the the size of the audio of the audio the audio audio blocks in the the film data stream and data stream and and the audio sample audio sample sample _ rate, respectively. The AUD_CHUNK parameter AUD_CHUNK parameter parameter must correspond correspond to the kSoundChunkSize kSoundChunkSize |! Bo parameter in the MovieToFilm MovieToFilm tool. : The MAX DELAY equate limits how far the system can limits how far the system can how far the system can far the system can the system can system can can fall behind real-time display of video before behind real-time display of video before real-time display of video before of video before before it ‘ Starts skipping video skipping video video frames to catch catch up; it is currently currently set at 1/24 second. second. Because only key only key key frames are { . displayed during the catch-up process, catch-up process, process, the video will video will will appear jerky jerky while this is happening. happening. If this istoo istoo | - objectionable,should have problems with have problems withthe delay delay withcan bethe video videorelaxedfalling behind.)to the delay delay withcan bethe video videorelaxedfalling behind.)to can bethe video videorelaxedfalling behind.)to relaxedfalling behind.)to to 1/12 second. behind.) second. (Note that only only fairly high throughput films fe should have problems with have problems withthe delay delay withcan bethe video videorelaxedfalling behind.)to the video videorelaxedfalling behind.)to falling behind.)to 2 + +Page 14 14 Cinepak egrrtrt~™.CSO_C(C‘i‘NYRYNRRRRRRAN_.U.«U«UC«wS‘‘NNHS|'rrtrt~™.CSO_C(C‘i‘NYRYNRRRRRRAN_.U.«U«UC«wS‘‘NNHS|' + +j In this section, we we describe several key key parameters, defined in player.inc, player.inc, which either have major impact on the behavior behavior of the the system or interact with similar parameters in the tools. ; The CBUF_SIZE equate controls the size of the the circular butfer which which is used to store the chunk table and film data. It is currently currently set at 1 MByte, although the size may be reduced, particularly for low- low| betweenresolutionreadorresolutionreadorreadoror short-durationandand write pointersfilms. uponThestartup HEAD_STARTmustfilms. uponThestartup HEAD_STARTmust uponThestartup HEAD_STARTmustThestartup HEAD_STARTmuststartup HEAD_STARTmust HEAD_STARTmustmust be adjusted equate, equate, alongwhichwithguaranteesCBUF_SIZE;a minimummaintainingseparationthewhichwithguaranteesCBUF_SIZE;a minimummaintainingseparationthewithguaranteesCBUF_SIZE;a minimummaintainingseparationtheguaranteesCBUF_SIZE;a minimummaintainingseparationtheCBUF_SIZE;a minimummaintainingseparationthea minimummaintainingseparationthe minimummaintainingseparationthemaintainingseparationtheseparationthethe j current ratio of 75% of 75% 75% should be be adequate. The GPU_OFFSET GPU_OFFSET equate determines the offset from the offset from offset from from the base of GPU base of GPU of GPU GPU internal RAM RAM at which which the i Cinepak decompressor code code is loaded. loaded. During initialization, its value value is copied to copied to to the variable location | GPUOffset, which the GPU code uses GPU code uses code uses uses to relocate portions of of its own own code and data. data. : The FILM_SYNC equate FILM_SYNC equate equate must correspond to the 4-byte correspond to the 4-byte to the 4-byte the 4-byte 4-byte partition sync marker that sync marker that marker that that is repeated repeated 16 times times | (for 64 bytes 64 bytes bytes total) immediately before immediately before before the film data begins. begins. The player code uses this to locate the player code uses this to locate the code uses this to locate the uses this to locate the this to locate the to locate the locate the the { beginning of the of the the film data after it is ready ready from the CD. CD. This sync marker sync marker marker is inserted inserted in front of the of the the i Jaguar Cinepak Cinepak film data by by the Jaguar CD Track Creator program when you create CD Track Creator program when you create Track Creator program when you create Creator program when you create program when you create when you create you create create the track files for files for for ; the CD.° CD.° The FilmToAIFF option of the of the the Jaguar Cinepak Cinepak Utilties program program always creates a sync a sync sync | pattern of of “1111”. 10 i (MFi]The DRIFT_RATE DRIFT_RATE_RATE equate is used used to account for the difference between the sample sample rate of the of the the . originalsections audio3.1.3 and 5.6data 5.6in thefor more moreoriginalinformation.)QuickTime movie and the and the the actual playback rate on on the Jaguar. Jaguar. (See : ___ PLAYERS... PLAYERS... It seems to me that this information is other misleading or incomplete, incomplete, | et etse we wouldn't be able to work with different different sized audio blocks. andwedo>> | The AUDIO_LAG equate is a critical parameter in the calculation of when to start reading equate is a critical parameter in the calculation of when to start reading is a critical parameter in the calculation of when to start reading a critical parameter in the calculation of when to start reading critical parameter in the calculation of when to start reading parameter in the calculation of when to start reading in the calculation of when to start reading the calculation of when to start reading calculation of when to start reading of when to start reading when to start reading to start reading start reading reading ; data from the CD-ROM. CD-ROM. It is tied tied to the parameters parameters AUD_CHUNK and SAMP_RATE, and SAMP_RATE, SAMP_RATE, : which represent the the size of the audio of the audio the audio audio blocks in the the film data stream and data stream and and the audio sample audio sample sample rate, respectively. The AUD_CHUNK parameter AUD_CHUNK parameter parameter must correspond correspond to the kSoundChunkSize kSoundChunkSize parameter in the MovieToFilm MovieToFilm tool. The MAX DELAY equate limits how far the system can limits how far the system can how far the system can far the system can the system can system can can fall behind real-time display of video before behind real-time display of video before real-time display of video before of video before before it Starts skipping video skipping video video frames to catch catch up; it is currently currently set at 1/24 second. second. Because only key only key key frames are j displayed during the catch-up process, catch-up process, process, the video will video will will appear jerky jerky while this is happening. happening. If this istoo istoo | objectionable,should have problems with have problems withthe delay delay withcan bethe video videorelaxedfalling behind.)to 1/12 second. behind.) second. (Note that only only fairly high throughput films | 9 See the Jaguar CD Mastering section of the Jaguar CD-ROM chapter for more information on the Jaguar CD Track | Creator tool. | 10 Atari recommends that you no longer use FilmToAIFF. See the Using A Jaguar Cinepak Film With CD-ROM section for more information. + +**==> picture [4 x 40] intentionally omitted <==** + +**----- Start of picture text -----**
+7
]
:
**----- End of picture text -----**
+ + +| | | | + +| + +Page 15 ] Cinepak For Jaguar The SILENCE and LEADER equates are used in computation of the time code for the beginning of each track, and must be consistent with how the CD is actually recorded. The SILENCE equate is used to | keep track of any extra blank space which may be placed at the beginning of a CD track by your CD | | mastering software.!! The ideal amount is zero, but some CD-ROM mastering software packages may } not give you any choice. The LEADER equate should be set to 0 unless you are using FilmToAIFF, in F which case you should set it to 24. (These values are based on a number of CD data blocks, which are | 2352 bytes each.) | The MARGIN equate causes the seek to occur ahead of the target, in order to guarantee that the data stream is valid at the actual point of interest. In the sample code, MARGIN is set to 16 blocks; this | value should not be tampered with. | The SYNC_SIZE parameter represents the number of bytes in the sync marker that is found before the | film header or a chunk of data within the film. This should always be 64.(MF2} | The SRCH_WIN parameter controls how many blocks into the input buffer the FindSync routine will look for the sync marker pattern before giving up and returning an error. Its value is closely linked to that of MARGIN and should not be changed. + +**==> picture [566 x 349] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||| +|---|---|---|---|---|---|---|---|---|---|---| +|weir|ee| +|he| +||| +|Table 5.2 lists several key variables in the system (declared near the end of|player.s), and describes their| +|function.| +|P||| +|1|Variable|Size|Description”|a| +|subroutine.| +|Set|if time slip exceeds maxDelay.|Cleared when next key frame|is encountered.| +|:| +|\—saapeies|||aT|Size ofstarts immedicircul r|a|telybuffer following (CBUF_END- chunk table. oBufBase),| +|GetCDWritePtr|subroutine.| +|||—spavmonis|||Flag indicates Cinepak compressed|AGB|color format|(0)|or Ata|CRY|format)| +|time,|below which the next CD-ROM|read|activity|is|initiated.| +|4|[serine|| —*|[Bio|sos|et|Snaracnny eames| +|5|SetNextGroup|subroutine.|;| +|||Value must be computed because time scale of film|is not known|until run time.| +|||| -Segaarser|[Tost|in bytes|from star|of fim|on|CD-ROM|to frst|audio|or video dete| +|buffer contents.|Computed|in SetNextGroup|subroutine.| +|4||[Tae|in Scnenampaumauee.| + +**----- End of picture text -----**
+ + +**==> picture [421 x 43] intentionally omitted <==** + +**----- Start of picture text -----**
+OO 11 See the Jaguar CD Mastering section of the Jaguar CD-ROM chapter for more information.
| © 1995 Radius Inc. & Atari Corp. Confidential FOR Information
**----- End of picture text -----**
+ + +16 June, 1995 + +7 + +‘ i + +' | 1 j | + +**==> picture [606 x 724] intentionally omitted <==** + +**----- Start of picture text -----**
+j Page 16 Cinepak For Jaguar =
q Variable Size Description , YF
( playPhase 2 Flag keeps track of activity while CD-ROM is playing:
1 0: no activity; 1 2
1 1: playing initiated; F
| 2: sync for next group of chunks detected Py
4 3: inhibit further play (end of film) 4
| PNextGroup 4 | Pointer to chunk record of first chunk in group that will be played after expiration of 4
semaphore Semaphore used to awaken the 68000 after GPU has finished decompression task. ; 4
Cleared by the 68000 when GPU task is initiated. Set upon receipt of GPU =
time interrupt by the 68000. | 4
||timeiner 4 |\ver32-b48-bit i tcalonal time time inincrem Qi6 m format. e ntngin Q16seniceraaine,Set format. to zeroIt whenis the filmratio playingonesof the timeis started.scale ofUpdated thm e saainafilm duringto the f|7
vertical interval tick rate. This increment is added to time during vertical interval
interrupt service routine. gg
Table 5.2 —- Key variables in system. _
Several utility routines are provided with the system to hide non-essential details and streamline the 4
main code. These routines are all contained in the module utils.s. {
Parameter passing to and from these routines is done via registers; the stack is not used. Table 5.3 4
summarizes the interfaces to the utility routines, along with their functions.
Routine Input Output Function 4
FindSyne dO: sync pattern a0: address following end | Searches data stream beginning at q
a0: starting address of sync, or 0 if sync not | (a0), until sync pattern, input in dO, is rr 4
found within located. | a
SRCH_WIN bytes F
- | GetCDWritePtr Updates CDWritePtr location with fog
current position of CD-ROM ; 4
GetTimeCode | d0: data offset from dO: time code in mmiss:bb | Converts byte offset to time code. + 3
LoadDSP Copies DSP program from DRAM to | #m
LoadGPU None Copies GPU Cinepak decompressor | 2.
code from DRAM to GPU internal _
: memory and calls CD-BIOS to load =
support code. Initializes GPUOfiset,| Tn
needed for later access to GPU _—
LongDivide [d0: unsigned 16-bit | di: unsigned 32-bit Performsmemory. {ong division, taking correct| j Se
d1: divisor quotient account of overflow (quotient q =
unsigned 32-bit exceeds 16 bits). q P
dividend ] a
ReadCDData | dO: data offset from Performs housekeeping on CD-ROM | jf ‘.
start of media hardware, sets up write pointers, | .
a0: starting computes time code for seek and ; ,
destination initiates CD-ROM playback. 4 Po
address 4 =
16 June, 1995 Property of FO® Atari Corporation © 1995 Radius, Inc. & Atari Corp. P
**----- End of picture text -----**
+ + +Page 17 | Cinepak For Jaguar ' Routine Input Output Function - in circular buffer. Adjusts value of 1 filmChunks. : ne pNextGroup for next group of chunks Snapshot None Dumps 64-byte record of key emulator address space. | Table 5.3 — interfaces to utility routines. mea2 | Audio playback is handled entirely by the DSP (see module dspcode.das), although it does use some | information which is set up by the 68000 (in player.s). The player code looks at the film header for an | audio description atom (see section 3.1.3). If one is found, then the information for the audio format is | extracted and saved into variables for the DSP code to use. If no audio description is found, the player ‘ assumes that any audio data in the film will be mono, 8-bit samples in two's-complement format, with a | playback sample rate of 21.867 kHz and original sample rate of 22250 kHz. | Two locations in DSP internal memory are used to pass parameters between the 68000 and the DSP, as } shown in Table 5.4. , 4 Location Size Description : MTSE ARGS | 4 [Byte countin audio block : Table 5.4 — Locations used to control audio playback. | When the 68000 encounters an audio block in the circular buffer, it loads the starting address of the | block into location DSP_ARGS+4, then the the byte count into location DSP_ARGS. The code which | does this is located just following the SampleLoop label in module player:s. : The DSP polls the byte count location. When it sees a nonzero value, it reads the value, writes back a | zero and reads the starting address of the audio data. On a sample rate interrupt, the DSP reads a byte | from the audio buffer, writes it to the DACs and decrements its copy of the byte count. Because of the - forward bias of audio in the film data stream (see Section 5.8), the DSP receives a continuous supply of f audio data even if the video begins to lag behind schedule. However, should the byte count reach zero, a onull (silence) samples are written to the DACs until the 68000 next updates the parameters at me 20CODSP_ARGS.. @ =e A third DSP internal memory location, AUDIO _DRIFT, is loaded with either the DriftRate parameter @ from the audio description atom (see Section 3.1.3) if one is found, or otherwise from the DRIFT_RATE Me = equate defined in the player.inc file (see Section 5.3). This must happen before audio playback is M initiated. This value is used to adjust for the differences, or “drift”, between the original sample rate of F the audio data and the interrupt frequency at which it will be played back. After every sample is written to the DACs, the AUDIO_DRIFT value is added to an accumulator. Whena carry is generated, it } — means that the error between the two sample rates has accumulated to a full sample, and an input sample 4 © 1995 Radius Inc. & Atari Corp. Confidential “FER Information 16 June, 1995 1995 + +| + +16 June, 1995 1995 + +'q | { + +Page 18 + +lnCinepak For Jaguar + +4 } 4 . + +’ | | Ff i 4 =_ 4 : + +q + +i| + +in the circular butfer the circular butfer circular butfer butfer is the most difficult the most difficult most difficult difficult technical aspect of aspect of of { ’ . 4 | the process. The read read pointer for the video video data being being used by by the the circular buffer, buffer, consuming data as as it goes. goes. Meanwhile, the — CD follows along behind follows along behind behind it. Whenever the read pointer reaches the read pointer reaches read pointer reaches pointer reaches | a beginning and the consumption of data continues without and the consumption of data continues without the consumption of data continues without consumption of data continues without of data continues without data continues without continues without without ‘ reaches the end of the buffer, end of the buffer, of the buffer, the buffer, buffer, the write process write process process is suspended. suspended. q the ratio of the combined video/audio ratio of the combined video/audio of the combined video/audio the combined video/audio combined video/audio video/audio data rate to the playback rate to the playback the playback playback | q high-quality film, the combined rate might be 250 kBytes/sec; combined rate might be 250 kBytes/sec; rate might be 250 kBytes/sec; might be 250 kBytes/sec; be 250 kBytes/sec; 250 kBytes/sec; kBytes/sec; with a a | @ this translates to a duty cycle of roughly 70%. a duty cycle of roughly 70%. duty cycle of roughly 70%. cycle of roughly 70%. of roughly 70%. 70%. ; 4 much lower than the compressed than the compressed the compressed compressed video data rate, the audio the DSP, DSP, advances at a much slower rate than the video read a much slower rate than the video read much slower rate than the video read slower rate than the video read rate than the video read than the video read the video read video read read = be dramatic dramatic differences in audio throughput in audio throughput audio throughput throughput rates depending on depending on | 2 16-bit stereo audio at 22 kHz requires 4 times as much 22 kHz requires 4 times as much kHz requires 4 times as much requires 4 times as much 4 times as much times as much as much much | = . | = in the data stream, the data stream, the audio pointer will periodically jump ahead audio pointer will periodically jump ahead pointer will periodically jump ahead will periodically jump ahead periodically jump ahead jump ahead ahead : q . For this reason, this reason, reason, the audio audio pointer has a rather jagged trajectory has a rather jagged trajectory a rather jagged trajectory rather jagged trajectory jagged trajectory trajectory 4 7 lies within within an envelope having the same slope as the trajectory having the same slope as the trajectory the same slope as the trajectory same slope as the trajectory slope as the trajectory as the trajectory the trajectory trajectory j 7 it by by a constant amount, constant amount, amount, as shown. shown. ] bs original sample rate of 22250 Hz and a playback sample sample rate of 22250 Hz and a playback sample rate of 22250 Hz and a playback sample of 22250 Hz and a playback sample 22250 Hz and a playback sample Hz and a playback sample and a playback sample a playback sample playback sample rate of 21867 of 21867 21867 is only only q . 4 a Property of“FER of“FER“FER Atari Corporation © 1995 Radius, Inc. 1995 Radius, Inc. Radius, Inc. Inc. & Atari Corp. 3 o + +| + +is dropped to compensate for the error. However, because the difference between the sample rates is fairly small}? there is no discernible impairment in audio quality. + +## ae CCTCt—s—~s—OC—C=COCNSSCNONOWSCONCCONCCOCCSC‘ié‘éCOUMg,. _ The code for setting up and servicing interrupts to the 68000 is all contained in the module intserv.s. + +On the vertical interval interrupt, the 68000 must refresh the object list for the object processor and increment the time variable. The object list refresh is very compact: only those data in the list which have been destroyed by the object processor need to be reconstructed; the remaining values survive from initialization. The time update is straightforward, except that a carry to the upper 16 bits must periodically be handled. + +On a GPU interrupt, the 68000 must set the semaphore flag to awaken the main decompression task. + +Management of the read and write pointers in the circular butfer the circular butfer circular butfer butfer is the most difficult the most difficult most difficult difficult technical aspect of aspect of of film playback. + +Figure 5-A illustrates the essentials of the process. The read read pointer for the video video data being being used by by the decompression code advances through the circular buffer, buffer, consuming data as as it goes. goes. Meanwhile, the write pointer for data coming from the CD follows along behind follows along behind behind it. Whenever the read pointer reaches the read pointer reaches read pointer reaches pointer reaches the end of the buffer, it is reset to the beginning and the consumption of data continues without and the consumption of data continues without the consumption of data continues without consumption of data continues without of data continues without data continues without continues without without interruption. When the write pointer reaches the end of the buffer, end of the buffer, of the buffer, the buffer, buffer, the write process write process process is suspended. suspended. + +The duty cycle for CD-ROM access is the ratio of the combined video/audio ratio of the combined video/audio of the combined video/audio the combined video/audio combined video/audio video/audio data rate to the playback rate to the playback the playback playback rate from CD-ROM. For a typical high-quality film, the combined rate might be 250 kBytes/sec; combined rate might be 250 kBytes/sec; rate might be 250 kBytes/sec; might be 250 kBytes/sec; be 250 kBytes/sec; 250 kBytes/sec; kBytes/sec; with a a double-speed CD-ROM (~350 kBytes/sec), this translates to a duty cycle of roughly 70%. a duty cycle of roughly 70%. duty cycle of roughly 70%. cycle of roughly 70%. of roughly 70%. 70%. + +Because the audio sample rate is typically much lower than the compressed than the compressed the compressed compressed video data rate, the audio read pointer, which is controlled by the DSP, DSP, advances at a much slower rate than the video read a much slower rate than the video read much slower rate than the video read slower rate than the video read rate than the video read than the video read the video read video read read pointer. Note, however, that there can be dramatic dramatic differences in audio throughput in audio throughput audio throughput throughput rates depending on depending on the audio format. For example, uncompressed 16-bit stereo audio at 22 kHz requires 4 times as much 22 kHz requires 4 times as much kHz requires 4 times as much requires 4 times as much 4 times as much times as much as much much data throughput as 8-bit mono. . | Since audio and video are multiplexed in the data stream, the data stream, the audio pointer will periodically jump ahead audio pointer will periodically jump ahead pointer will periodically jump ahead will periodically jump ahead periodically jump ahead jump ahead ahead to the next block of audio in the buffer. For this reason, this reason, reason, the audio audio pointer has a rather jagged trajectory has a rather jagged trajectory a rather jagged trajectory rather jagged trajectory jagged trajectory trajectory in buffer-time space; however, it always lies within within an envelope having the same slope as the trajectory having the same slope as the trajectory the same slope as the trajectory same slope as the trajectory slope as the trajectory as the trajectory the trajectory trajectory | of the video pointer, but offset from it by by a constant amount, constant amount, amount, as shown. shown. + +12 For example, the difference between an original sample rate of 22250 Hz and a playback sample sample rate of 22250 Hz and a playback sample rate of 22250 Hz and a playback sample of 22250 Hz and a playback sample 22250 Hz and a playback sample Hz and a playback sample and a playback sample a playback sample playback sample rate of 21867 of 21867 21867 is only only about 1.7%. 16 June, 1995 Property of“FER of“FER“FER Atari Corporation © 1995 Radius, Inc. 1995 Radius, Inc. Radius, Inc. Inc. + +**==> picture [1 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+:
**----- End of picture text -----**
+ + +Page 19 + +2 + +| + +**==> picture [534 x 574] intentionally omitted <==** + +**----- Start of picture text -----**
+Cinepak For Jaguar
| 12 | 13 |
i © 8) &
Y// wvia
A Ke Of
©
:
' Qal : Rya) / ~ Ce ©) &/
Ey nN 4 RS Qe
3 ee 7 a et
|
ae” SAS » e/
; «\* Q 7 ~\ » Qf
j Figure 5-A — Pointer trajectories vs. time in circular buffer.
| Referring to Figure 5-A, we define four times of interest:
| t = zero-based time at which writing of CD-ROM data is initiated;
; t] = time interval required to fill circular buffer;
12 = zero-based expiration time for current video data in circular buffer;
13 = lag between audio read envelope and trajectory of video read.
, The heuristics of the buffer management process are as follows:
® Writing must be initiated Jate enough that the write pointer does not cross the tail end of the
; audio read envelope;
: ® Writing must be initiated soon enough that there is sufficient backlog of fresh data in the circular
_ buffer at the time the video read pointer is reset.
F In terms of the above-defined time values, these constraints translate to:
| t+tl]>2+68t< 12
4
| | Solving both inequalities for 12 - t and rearranging, we obtain the concise result:
0<12-t1 |
: | The most conservative design strategy is to split the difference, conservative design strategy is to split the difference, design strategy is to split the difference, strategy is to split the difference, is to split the difference, to split the difference, split the difference, the difference, difference, i.e.
**----- End of picture text -----**
+ + +The most conservative design strategy is to split the difference, conservative design strategy is to split the difference, design strategy is to split the difference, strategy is to split the difference, is to split the difference, to split the difference, split the difference, the difference, difference, i.e. 12-t = (t1 - 3)/2 + +r Be Csithis is the approach which has been taken in the sample player code. . Cae combination (t1 - t3)/2 is referred to as deltaTime in the sample code (see also Table 5.2). The | ae is computed halfway between labels CalcDest and ClearWindow in player.s. The comparison ae —Cetweeen 12. - tand deltaTime is made just after label CheckCDPlay, once it is determined that playPhase Bi ©1995 Radius Inc. & Atari Corp. Confidential FOR Information 16June, 1995June, 1995 1995 + +16June, 1995June, 1995 1995 + +Page 20 20 Cinepak For[Jaguar] 1 | | The mechanics of transferring CD-ROM data to the circular buffer are all managed by the GPU | interrupt service routine, which is loaded by an initial call to the CD-BIOS routine CD_init; this call is x | made as part of the LoadGPU subroutine in module utils.s (see Table 5.3). Subroutine ReadCDData 4 q takes care of all the overhead associated with setting up the BIOS calls to access the CD-ROM, : including specification of an "end-of-buffer" address. When the write pointer has advanced to this address, the transfer of data is automatically suspended until the next call to ReadCDData, no further gs intervention by the playback code is required. = | SOFrameRateControl———— isi‘iéiéiS The mechanism for frame rate control is fairly simple. The sample record (see Table 3.8) contains a fd | field which indicates the scheduled time for the sample. The clock time, maintained by the vertical P| interval interrupt, is compared with the scheduled time and the system waits until the two times are the 4 ] same. The code for doing this appears in player.s at label KillTime. Ss If the display of video falls behind schedule by an amount greater than maxDelay, then the catchUp flag ‘ : is set and frames are skipped until the next key frame is encountered. When this occurs, the catchUp 4 flag is cleared, the key frame is displayed and normal operation resumes. This code appears sixtocight #m : instructions on either side of label LookForKey in player.s. j : Under most circumstances, most circumstances, circumstances, there is ample ample processing power power in the system to play full-screen video at 24 24 or even even 30 frames frames per second, so the catch-up mode mode will seldom be activated. However, there may be may be be _ situations in which which developers will will also want want to use some some portion of the GPU of the GPU the GPU GPU processing bandwidth bandwidth for | 3 purposes other than video decompression; other than video decompression; video decompression; decompression; in these these cases, the catch-up mechanism catch-up mechanism mechanism is essential. essential. f 4 + +| Page 20 20 + +| | q + +i + +: Under most circumstances, most circumstances, circumstances, there is ample ample processing power power in the system to play full-screen video at 24 24 or even even 30 frames frames per second, so the catch-up mode mode will seldom be activated. However, there may be may be be situations in which which developers will will also want want to use some some portion of the GPU of the GPU the GPU GPU processing bandwidth bandwidth for purposes other than video decompression; other than video decompression; video decompression; decompression; in these these cases, the catch-up mechanism catch-up mechanism mechanism is essential. essential. | eeTT ertCti—C(CN.LCtiCOCO ‘(‘(‘RASCOCUCOQR In this section, we give a complete walkthrough of the sample code in player.s, highlighting major | points of interest along the way. Before beginning, we define in Table 5.5 the use of several dedicated 68000 registers; this will clarify some of the explanations as we progress. All other registers are available for scratchpad computation. Register Use |d4| Pointer to compressed frame data [dS [Counter for samples remaining in chunk Counter for chunks remaining in circular buffer |a3__| Pointer to current sample record in circular buffer q |a5___| **Pointer to** startcurrent of **c** urrenthunk record chunk inin chunk circular ta **b** ufferle **q** Table 5.5 — Dedicated 68000 registers in film player code. j Between the start of the code and the label WaitGPU, the system is initialized. Much of the code used j here -- especially in subroutines -- is either identical to, or a close derivative of early versions of generic 16 June, 1995 Property of “7% Atari Corporation © 1995 Radius, Inc. & Atari Corp. | + +{ 7 | 3 4 4 7 am 4 7 4 | @ | 4 = q = **q** == j a j < e eS + +| + +| | | + +Page 21 + +| Cinepak ForJaguar aguar sample code distributed by Atari. Note, however, that some aspects of this code are no longer + +considered to be good examples of general Jaguar programming. The Lister subroutine has been modified to store certain entries in the object list in memory for | subsequent use by the vertical interrupt interrupt service routine. The USE_CDROM switch, set at assembly time, allows assembly of code that bypasses ail access to CD-ROM; this is useful during development for testing short (three- or four-second) films by | downloading them into memory from the hard disk.[the][ first][ access][ to][ the][ CD-ROM][ occurs.][Data][ from][ the][ CD-] |[After][ the][ GPU][ has][ finished][ initialization,] | ROM will be read into memory starting at location FILM_BASE. At label _ClearWindow, we allow the | write pointer to advance beyond the end of the sync search window, then call FindSync to locate the | start of the film. At label CheckFilm, we verify that the frame header tag (see Table 3.2) follows the | film sync. | At labels RelocTable and CopyCT, the entire chunk table is moved from wherever it happened to land in | the buffer to location FILM_BASE. Next, the mediaOffset variable is computed, since the byte offset for all subsequent accesses to CD-ROM data will be relative to the end of the chunk table. Following this, cBufBase and cBufSize are determined: the size of the chunk table is subtracted from the total | available memory and whatever is left is allocated to the circular buffer. The cType field in the frame description atom is tested and the video is switched to CRY if the CRY tag is found. | The value of dest is computed at label CalcDest. In the sample code, the film is centered on the display; | developers will obviously want to adapt this for their own purposes. After this, the filmChunks variable | js initialized by copying the value from the Count field of the chunk table (see Table 3.10). Next, three key time variables are computed: timelncr, maxDelay and deltaTime. Finally, register a5 is set to point to the first chunk record (see Table 5.5). We are now ready to look for the first chunk in the circular buffer. The search begins at cBufBase, with } async pattern given by $c(a5). At label .ClearWindow, we again wait to ensure that the write pointer has advanced beyond the end of the search window before calling FindSync. Upon returning from FindSync, we verify that the sample table header tag (see Table 3.7) follows the chunk sync. | At label .ChunkOK, register a4 is set to point at the start of the chunk and a3 to point at the sample table for the chunk. A call to SetNextGroup is made to determine which chunk will be the target of the next | access to CD-ROM. | — Two final steps are required before we are ready to play the film. At label WaitToFill, we allow the | write pointer to get far enough ahead that the read pointer will not catch up to it. At label WaitForTick, we restart the vertical interval time clock at zero, since all time references in the film file are zero-based. I Label ChunkLoop is the top of the outer program loop. Register d5 is loaded from the Count field of the sample table (see Table 3.7). The AtomSize field of the sample table is added to the base address of the sample table in a3 to determine the address of the first data sample in the chunk, this is transferred to d4. Next, a3 is adjusted to point to the current sample record. + +| + +© 1995 Radius Inc. & Atari Corp. + +Confidential 7FO® Information + +16 June, 1995 + +| Page 22 22 ’ Label SampleLoop ' ROM emulator address | should be commented ' record | : | currentAtAt labelstimeDoVideovariable. and KillTime,If weAt labelstimeDoVideovariable. and KillTime,If we labelstimeDoVideovariable. and KillTime,If wetimeDoVideovariable. and KillTime,If weDoVideovariable. and KillTime,If wevariable. and KillTime,If we and KillTime,If we KillTime,If weIf we we + +Page 22 22 Cinepak For Jaguar | Label SampleLoop is the top of the inner program loop. The call to Snapshot generates atime history in { ROM emulator address space which is very useful for doing post-mortems during development; it a should be commented out or deleted in production versions of the code. The Time field of the sample ,- record is tested to determine whether the sample is audio or video. If it is audio, the arguments 4 specified in Section 5.6 are passed to the DSP and a branch is taken to the end of the sample loop; = otherwise, the program falls through to process video. Pd currentAtAt labelstimeDoVideovariable. and KillTime,If weAt labelstimeDoVideovariable. and KillTime,If we labelstimeDoVideovariable. and KillTime,If wetimeDoVideovariable. and KillTime,If weDoVideovariable. and KillTime,If wevariable. and KillTime,If we and KillTime,If we KillTime,If weIf we we are ahead the Time of schedule, field of thewe samplewait the Time of schedule, field of thewe samplewait Time of schedule, field of thewe samplewait of schedule, field of thewe samplewait schedule, field of thewe samplewait field of thewe samplewait of thewe samplewait thewe samplewaitwe samplewait samplewaitwait until recordtime is has read advanced and comparedto recordtime is has read advanced and comparedtotime is has read advanced and comparedto is has read advanced and comparedto has read advanced and comparedto read advanced and comparedto advanced and comparedto and comparedto comparedtoto the scheduled with the scheduled with the with the the : 'j value; otherwise, we check check to see how how far behind behind schedule we we have fallen. If the the slip exceeds exceeds the time _ specified by maxDelay, by maxDelay, maxDelay, we begin begin the catch-up process described in Section 5.9; otherwise, we we proceed i to display display the frame. The stack setup for the call to CheckKeyFrame CheckKeyFrame is specified specified in Table Table 2.1. - The call to ForceDelay ForceDelay at label DisplayFrame DisplayFrame can be be conditionally assembled to simulate the catch-up process during development; during development; development; there is no other no other other use for ForceDelay. Next the the stack is set up up for the call _ to PreDecompress PreDecompress (see Table 2.2). Following the the return, an error check is performed on the check is performed on the is performed on the performed on the on the the return { 3 value. At label StartDecomp, StartDecomp, the stack is prepared for the prepared for the for the the call to Decompress Decompress (see Table 2.3); error Ss checking is likewise likewise performed upon upon return. ; | All of the code which manages of the code which manages the code which manages code which manages which manages manages the dynamics of writing dynamics of writing of writing writing to the the circular buffer buffer (excluding the the initial 1 ' write) appears between between labels CheckCDPlay CheckCDPlay and NextSample. NextSample. The playPhase playPhase variable, described in 4 Table 5.2, is the key to controlling this mechanism: : @ When playPhase is 0, the CD_ROM is not playing and the only task is to check the difference —— between the expiration time and the clock time and compare this difference with deltaTime. Note rr | that the expiration time is recovered trom the Time field of the chunk record which is addressed by 7 PNextChunk. If it is time to start filling the buffer, the CD-ROM is given a seek address determined | 7 by the Start field of the chunk record pointed to by pNextChunk, playing is initiated with a write 4 destination of cBufBase, and playPhase is set to 1; otherwise, a branch is taken to NextSample. 4 i. @ When playPhase playPhase is 1, the CD-ROM CD-ROM is playing, playing, and the only the only only task is to to locate the start of the next of the next the next next ‘ | group of chunks of chunks chunks in the circular buffer. Before calling FindSync, FindSync, a test is performed performed to see see if the the | @ write pointer has has progressed beyond beyond the end of the sync search window. end of the sync search window. of the sync search window. the sync search window. sync search window. search window. window. If the the test fails, the | 4 program does does not wait, but branches to NextSample; branches to NextSample; to NextSample; NextSample; this is to avoid needless needless delay in the the middle of of | 7 a loop that must execute loop that must execute that must execute must execute execute in real time. If the the test passes, passes, the following following actions are taken: ‘ . . - The sync search is begun at cBufBase, with a sync pattern specified by the SyncPattern field a : of the chunk record addressed by pNextChunk, . | - Error checking is performed; . ’ : - The nextBufAddr variable is set at the sync location in the circular buffer and SetNextGroup { be is called to determine which chunk will be the target of the subsequent access to CD-ROM; a - playPhase is set to 2. q Z June, 1995 1995 Property ofPER ofPERPER Atari Corporation © 1995 Radius, Inc. & Atari Corp. ¢ + +: + +| | j i : . + +currentAtAt labelstimeDoVideovariable. and KillTime,If weAt labelstimeDoVideovariable. and KillTime,If we labelstimeDoVideovariable. and KillTime,If wetimeDoVideovariable. and KillTime,If weDoVideovariable. and KillTime,If wevariable. and KillTime,If we and KillTime,If we KillTime,If weIf we we are ahead the Time of schedule, field of thewe samplewait the Time of schedule, field of thewe samplewait Time of schedule, field of thewe samplewait of schedule, field of thewe samplewait schedule, field of thewe samplewait field of thewe samplewait of thewe samplewait thewe samplewaitwe samplewait samplewaitwait until recordtime is has read advanced and comparedto recordtime is has read advanced and comparedtotime is has read advanced and comparedto is has read advanced and comparedto has read advanced and comparedto read advanced and comparedto advanced and comparedto and comparedto comparedtoto the scheduled with the scheduled with the with the the value; otherwise, we check check to see how how far behind behind schedule we we have fallen. If the the slip exceeds exceeds the time specified by maxDelay, by maxDelay, maxDelay, we begin begin the catch-up process described in Section 5.9; otherwise, we we proceed to display display the frame. The stack setup for the call to CheckKeyFrame CheckKeyFrame is specified specified in Table Table 2.1. + +The call to ForceDelay ForceDelay at label DisplayFrame DisplayFrame can be be conditionally assembled to simulate the catch-up process during development; during development; development; there is no other no other other use for ForceDelay. Next the the stack is set up up for the call to PreDecompress PreDecompress (see Table 2.2). Following the the return, an error check is performed on the check is performed on the is performed on the performed on the on the the return value. At label StartDecomp, StartDecomp, the stack is prepared for the prepared for the for the the call to Decompress Decompress (see Table 2.3); error checking is likewise likewise performed upon upon return. + +All of the code which manages of the code which manages the code which manages code which manages which manages manages the dynamics of writing dynamics of writing of writing writing to the the circular buffer buffer (excluding the the initial write) appears between between labels CheckCDPlay CheckCDPlay and NextSample. NextSample. The playPhase playPhase variable, described in Table 5.2, is the key to controlling this mechanism: + +- @ When playPhase playPhase is 1, the CD-ROM CD-ROM is playing, playing, and the only the only only task is to to locate the start of the next of the next the next next group of chunks of chunks chunks in the circular buffer. Before calling FindSync, FindSync, a test is performed performed to see see if the the write pointer has has progressed beyond beyond the end of the sync search window. end of the sync search window. of the sync search window. the sync search window. sync search window. search window. window. If the the test fails, the program does does not wait, but branches to NextSample; branches to NextSample; to NextSample; NextSample; this is to avoid needless needless delay in the the middle of of a loop that must execute loop that must execute that must execute must execute execute in real time. If the the test passes, passes, the following following actions are taken: + +**==> picture [1 x 19] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +16June, 1995 1995 Property ofPER ofPERPER Atari Corporation + +| _ Cinepak ForJaguar Page 23 b Once playPhase has reached 2, there is nothing further to be done until the count (a7) of chunks |y below).currently in the circular buffer is exhausted. This situation is handled following label ResetBuffer (see | Atlabel NextSample, the Size field of the current sample record is added to the address (d#) of the | current sample to obtain the address of the next sample, and the pointer (a3) to the sample record is ; advanced to the next record. The counter (d5) for the number of samples in the current chunk is | decremented, and if not exhausted, a backward branch is taken to SampleLoop. If the sample count (d5) is exhausted, the counter (d7) for the number of chunks remaining in the buffer { is decremented. If there are no chunks left, a branch is taken to ResetBuffer, otherwise, the Size field j of the current chunk record is added to the address (a4) of the current chunk to obtain the address of the | next chunk in the buffer, and register a3 is set to point at the sample table for the next chunk. At this | point, a test is made for an empty chunk (no video or audio scheduled) and a backward branch is taken | to either ChunkLoop (not empty) or NextChunk (empty). | At label ResetBuffer, d7 is reloaded from the buffChunks variable, which is set either in SetNextGroup f or a few instructions below. If the value loaded is zero, the film is finished and we branch to Done. For a nonzero value, a5 is advanced to the next chunk record, a4 is loaded from nextBufAddr, a3 is set ‘ up to point to the sample table for the first sample in the new chunk, and playPhase is reset to zero. L Next, the filmChunks variable (maintained by SetNextGroup) is tested to see if there are any chunks W beyond those about to be processed that must be loaded from the CD-ROM. If so, a backward branch is } taken to ChunkLoop. | If not, playPhase is set to 3 and buffChunks is set to zero. The first action inhibits any further access to ; the CD-ROM; the second causes the program to terminate when the current group of chunks has been + exhausted. A backward branch is then taken to ChunkLoop to finish playing the film. There are several error conditions related to CD-ROM data integrity which are checked by the 68000 } and trapped via an illegal instruction. When the trap is taken, register dO will contain an error code, j according to the condition which caused the trap. Table 5.6 summarizes the traps and condition codes. Code Condition 1 No error; playback completed normally 1 Sync pattern pattern not found within search window found within search window within search window search window window 4 ‘FILM' tag tag not found found at start of film header start of film header of film header film header header |$33333333_|$33333333_|_| ‘STAB' tag not found tag not found not found found at start of sample table start of sample table of sample table sample table table 4 Data error detected by PreDecompress error detected by PreDecompress detected by PreDecompress by PreDecompress PreDecompress + +f These traps are useful for development and experimentation. They should never occur during playback | of a finished Jaguar film. | © 1995 Radius Inc. & Atari Corp. Confidential FER Information 16 June, 1995 + +**==> picture [337 x 107] intentionally omitted <==** + +**----- Start of picture text -----**
+Code Condition
No error; playback completed normally
Sync pattern pattern not found within search window found within search window within search window search window window
‘FILM' tag tag not found found at start of film header start of film header of film header film header header
|$33333333_|$33333333_|_| ‘STAB' tag not found tag not found not found found at start of sample table start of sample table of sample table sample table table
Data error detected by PreDecompress error detected by PreDecompress detected by PreDecompress by PreDecompress PreDecompress
|$55555555_| Data error detected by Decompress ;
Table 5.6 — Error codes and conditions.
**----- End of picture text -----**
+ + +**==> picture [2 x 81] intentionally omitted <==** + +**----- Start of picture text -----**
+|
|
|
**----- End of picture text -----**
+ + +16 June, 1995 + +Page 24 Cinepak For Jaguar . &SampledaguarFilms§ .=§ =... wt t—i(i‘éi@ Three sample Jaguar films are provided on CD-ROM for demonstration purposes; any of the three | a films can be played using the sample code without modification. The film material has been approved - for distribution and can be freely used for demonstration or evaluation. . Table 6.1 summarizes the characteristics of the three sample films: | 1 Excerpt from "Jaws" “Escape" sequence Excerpt from "Back 7 [Resolution from Star Wars To the Future 3" Pd | 288 x 136 288 x 216 288 x 216 Pixel depth Hebits |e bits febits Sid | Color format Cinepak RGB Cinepak RGB Cinepak RGB f 4 24 fps 24 fps 24 fps | Compressed video rate {220 kB/sec 260 kB/sec 280 kB/sec 4 Audio sampie rate 22251.5 Hz 22251.6 Hz }22249H2 | a Film duration [2:33 min «dO min _————~«*d¢TOB min ——SCS~* I | + +| : | + +: | + +: + +| + +Table 6.1 — sample Jaguar films. + +Allby CD-ROMsthe sample player are single-sessioncode. with the film data recorded on track zero. This is the format expected + +**==> picture [12 x 16] intentionally omitted <==** + +**----- Start of picture text -----**
+a
**----- End of picture text -----**
+ + +j + +16 June, 1995 + +Property ofFER Atari Corporation + +© 1995 Radius, Inc. & Atari Corp. + +Page 25 + +Cinepak For Jaguar + +| Cinepak is a registered trademark of Radius, Inc. Jaguar is a registered trademark of Atari Corporation. QuickTime, Macintosh and MPW are registered trademarks of Apple Computer, Inc. Think C isa | registered trademark of Symantec Corporation. CoSA and After Effects are registered trademarks of The Company of Science and Art. + +© 1995 Radius Inc. & Atari Corp. + +Confidential AUR Information + +16 June, 1995 | + +1 | : 4 + +Page 26 + +Cinepak For Jaguar + +: |g 4 1 | _ o ; : rg | 4 j F 4 SC ] : a } 4 a [a + +| | | j : 1 + +“ os + +The Jaguar Cinepak Utility program runs on the Apple Macintosh under System 6.1 or later (older versions of System/Finder may work, but have not been tested). The QuickTime extensions must also be loaded. When you run the program, you’ll see a screen that looks like this: + +**==> picture [485 x 300] intentionally omitted <==** + +**----- Start of picture text -----**
+" € File Edit Convert Utilities
Figure 8-A — Jaguar Cinepak Utilities Screen
We’ll assume that you know how to run programs and generally use the Macintosh computer. If this
isn’t true, please look through your Macintosh user’s manual before attempting to run the Jaguar
Cinepak Utility.
**----- End of picture text -----**
+ + +The program displays a console window where messages from the various conversion functions will appear, as well as a menu bar at the top. The menus and the items they contain are described below. + +rrrrrrrtrtr—~—“O™C—CisOCCCCCs«CstSSstSstCéit‘(Cié‘ia‘NRCNCNCCOCC=CNwiCC™CDSS + +The File menu has just a single choice that allows you to quit the program. + +## ee + +lrrr—r—S~S picture [338 x 225] intentionally omitted <==** + +**----- Start of picture text -----**
+r ¢ File Edit Convert Utilities
Convert Quicktime Movie to Cinepak Film File Quicktime Movie to Cinepak Film File Movie to Cinepak Film File to Cinepak Film File Cinepak Film File Film File File
input: [sash:Cinepak Movies:DL2S16Sc.movie Movies:DL2S16Sc.movie | (Browse) (Browse)
Assume RAW RAW sudio data is two's complement complement format
{i.e. movies created by CoSa After Effects} by CoSa After Effects} CoSa After Effects} After Effects} Effects}
Enter desired audio chunk size, in 1/100ths
|
of a second (from second (from (from 10 to to 100)
16-bit Sound Compression: Sound Compression: Compression: ® No Compression No Compression Compression
© Scale Scale 16-bit to 8-bit (lossy)
O Square Square Root (lossy)
Figure 8-B — Movie To Film — Movie To Film Movie To Film To Film Film dialog
**----- End of picture text -----**
+ + +: Convert Quicktime Movie to Cinepak Film File Quicktime Movie to Cinepak Film File Movie to Cinepak Film File to Cinepak Film File Cinepak Film File Film File File input: [sash:Cinepak Movies:DL2S16Sc.movie Movies:DL2S16Sc.movie | (Browse) (Browse) Assume RAW RAW sudio data is two's complement complement format {i.e. movies created by CoSa After Effects} by CoSa After Effects} CoSa After Effects} After Effects} Effects} Enter desired audio chunk size, in 1/100ths | { of a second (from second (from (from 10 to to 100) : 16-bit Sound Compression: Sound Compression: Compression: ® No Compression No Compression Compression © Scale Scale 16-bit to 8-bit (lossy) ] O Square Square Root (lossy) : ! Figure 8-B — Movie To Film — Movie To Film Movie To Film To Film Film dialog j The input file must be an existing QuickTime Cinepak movie. You can type in the name of the file ] yourself, or you can click on the Browse button at the end of the Input field and the standard Macintosh | file selector will appear and allow you to select the desired filename. In the event that the Output field is blank when you Browse for the input field, the input filename you select will be used to guess at the ee = sdesired output filename. You may either use the guess directly or edit it as required. eS CThe output file name may be specified by typing in a name or by selecting the Browse button and using the standard Macintosh file selector that appears. Any existing file with the same name as the output ; ae ile will be overwritten. If you use the file selector to enter the output filename, you will be given a F warning, but not if you simply type it in. Note: Using a filename extension of “.SRG” is recommended. + +| + +‘ + +© 1995 Radius Inc. & Atari Corp. + +Confidential FOR Information + +16 June, 1995 + +Page 28 Cinepak For Jaguar The Assume RAW Audio Data... checkbox allows you to inhibit the conversion of “Raw” audio tracks in = : the source QuickTime movie to the “Two’s Complement” format needed for proper playback on the ; Jaguar.}3 | = Audio data from the source movie is placed into the destination file in chunks interleaved with the video data. The length of each audio chunk is specified by the Enter Audio Chunk Size... edit box. This value 4 is specified as n/100ths of a second, and should ordinarily be about 3/4 the size of the chunk size you = will later specify in the Smooth To Chunky conversion process. The default size is 75/100ths of a g second. Note that the actual amount of data placed into the audio chunk depends on the format of the & audio data. If you use 16-bit stereo audio it will take 4 bytes per sample, versus 1 byte per sample for8bit mono. t | : Assuming an audio chunk size of 75/100ths of second, and video running at 24 frames per second, the ' audio will be placed into the destination file in the following way: the first audio chunk will be placed | | in the destination file immediately after the first frame of video. The second audio chunk will be : inserted after video frame #10. The remaining audio chunks will be inserted every 18 video frames. = This forward temporal bias in the audio stream means that the audio will play interrupted, as we will Pg always have a little more audio remaining in the buffer than we have video, even in cases where the ; ; video playback starts to lag behind real time. = You may specify audio chunk sizes from 10/100ths to 1 second. If you later specify chunk sizes less |P| than 1.0 seconds long in Smooth To Chunky, you should reduce the audio chunk size accordingly. . However, please note that changing the audio chunk size to less than 3/4 of the chunk size later | specified in Smooth To Chunky may affect the audio playback of the movie. If you have problems, try , | increasing the audio chunk size. | @ If the source QuickTime movie has a 16-bit audio track, then you have the option of compressing the 4 audio data. There are two ways to do this. The first method is to simply scale the 16-bit samples to 8- ye bit. The second method uses a special square root compression algorithm. Each 16-bit audio sample is 4 I converted to an 8-bit encoded value as follows: : q 8-bit encoded value = sqr(original sample value / 2) 4 The 8-bit encoded values are then placed into the destination film file. During playback, these encoded j 4 : sample values are expanded back to 16-bit. This compression method is still lossy (i.e. the output is not | 4 | quite the same as the input), but the results are usually more pleasing to the ear than simply scaling 16<7. bit values to 8-bit. a 13 QuickTime movies typically specify either a “RAW” audio track or a “Two’s Complement” audio track. The “Raw” ] q : ' type is normally the binary-offset format that is the default audio format used by the Macintosh. However, “Raw” also 4 EB 1 means the actual data format is not precisely defined, and some “Raw” audio tracks may not require conversion. This is 1 Do the case with movies created by Adobe (CoSA) After Effects, for example. Selecting the Assume RAW Audio Data... q - checkbox will inhibit the conversion of “Raw” audio tracks. : = QuickTime movies that specify a “Two’s Complement” audio track will normally not be converted regardless of the . se! checkbox setting. However, if you hold down the Shift+Command keys on the keyboard when selecting the menu a - choices Movie To Film, ConvertA QuickTime Movie, or Convert QuickTime Batch, these tracks will be converted if the j * checkbox is not selected. (Remember, the checkbox says “the audio is already Two’s Complement, leave it alone.”) F o | 16 June, 1995 Property of“FPR Atari Corporation © 1995 Radius, Inc. & Atari Corp. | = + +Page 29 ]} Cinepak For Jaguar A QuickTime Movie : The actual Movie To Film conversion process is also accessed through the Convert and Convert QuickTime Batch options. |mn ! The RGB To CRY function expands Cinepak-compressed RGB video data in a smooth format Jaguar } Cinepak film to either CRY or RGB uncompressed. The movie’s smooth film structure is not changed. ’ © Ente Edit Convert Utilities . ’ Convert a Cinepak film from compressed RGB format into _ Jaguar-specific CRY format. Please enter the input filename (an , AGB-format Cinepak film) and the output filename (a CRY-format : : Cinepak film). , | rDisableleave data AB->cAYin expandedConversion,RGB format. = : Butput: [sash:Cinepak Movies:012$16Sc.scq | | eee 3 ; oS Figure 8-C — RGB to CRY dialog 4 | thea smooth-format Jaguar film from the Cinepak compressed-RGB color format to either the Atari @ ~—CJaguar CRY format, without altering the smooth film structure. Selecting this menu item will lead to a B® dialog box where you can select the input file, output file, and conversion options. q : The input file must be an existing Jaguar Cinepak film in compressed-RGB format previously converted with Movie To Film. You can type in the name of the file yourself, or you can click on the Browse a button at the end of the Input field and the standard Macintosh file selector will appear and allow you ‘Be sito elect the desired filename. In the event that the Output field is blank when you Browse for the input field, the input filename you select will be used to guess at the desired output filename. You may } — either use the guess directly or edit it as required. ; : The output file name may be specified by typing in a name or by selecting the Browse button and using . we Oitthe standard Macintosh file selector that appears. Any existing file with the same name as the output file will be overwritten. If you use the file selector to enter the output filename, you will be given a | warning, but not if you simply type it in. Note: Using a filename extension of “.SRG” is recommended for movies with RGB video, or “.SCR” for movies with CRY video. Ss The RGB To CRY function first decompresses the proprietary Cinepak RGB color data to a non| P| compressed RGB format. Checking the Disable RGB->CRY Conversion... checkbox disables the final vO conversion of this data to CRY mode. increases the amount of data needed | Note that the decompression operation performed by RGB To CRY , | to represent each frame of video, so various entries in the header and sample table are also adjusted to ’ ( © 1995 Radius Inc. & Atari Corp. Confidential JER Information 16 June, 1995 + +q + +Page 30 Cinepak For Jaguar reflect the change. The increase in size of the resulting film is typically about 10%, so there is minimal s penalty in either storage or CD-ROM access requirements. cok iq Cinepak films using non-compressed RGB or CRY video will consume about 10-15% less GPU ' processing bandwidth on playback than the same film using compressed-RGB video. The reason is that gs the processing step which converts from compressed to expanded RGB is bypassed (having already a been done off-line). For certain highly complex movies where the frame rate may fall slightly short of | 24 fps, developers may wish to take advantage of this time savings in order to squeeze maximum 4 performance out of the system. : The actual RGB To CRY conversion process is also accessed through the Convert[A][ QuickTime][ Movie] . and Convert QuickTime Movie Batch QuickTime Movie Batch Movie Batch Batch options. Ce eee . . FF The Smooth To Chunky menu item converts a Jaguar film from the smooth file format to the chunky Smooth To Chunky menu item converts a Jaguar film from the smooth file format to the chunky To Chunky menu item converts a Jaguar film from the smooth file format to the chunky Chunky menu item converts a Jaguar film from the smooth file format to the chunky menu item converts a Jaguar film from the smooth file format to the chunky item converts a Jaguar film from the smooth file format to the chunky converts a Jaguar film from the smooth file format to the chunky a Jaguar film from the smooth file format to the chunky Jaguar film from the smooth file format to the chunky film from the smooth file format to the chunky from the smooth file format to the chunky the smooth file format to the chunky smooth file format to the chunky file format to the chunky format to the chunky to the chunky the chunky chunky ‘ f format. Selecting this menu item will lead to a dialog box where you can select the input menu item will lead to a dialog box where you can select the input item will lead to a dialog box where you can select the input will lead to a dialog box where you can select the input lead to a dialog box where you can select the input to a dialog box where you can select the input a dialog box where you can select the input dialog box where you can select the input box where you can select the input where you can select the input you can select the input can select the input select the input the input input file, output output g i file, and conversion options. conversion options. options. - " ¢€ file Edit Convert Utilities 1 | Convert a Cinepak fitm from the smooth temporal format (output by | q 4 : or picture [247 x 121] intentionally omitted <==** + +**----- Start of picture text -----**
+"_€ file Edit tonuert Utilities
Convert Film to AIFF File.
Please enter the input filename and the output filename.
J Add Wrapper around film data?
Output: [sash:Cinepak Movies:DL2$16Sc.aiff
**----- End of picture text -----**
+ + +Figure 8-E — Film To AIFF dialog + +The input file must be an existing Jaguar Cinepak film in either smooth or chunky format created by Movie To Film, RGB To CRY, or Smooth To Chunky. You can type in the name of the file yourself, or you can click on the Browse button at the end of the Input field and the standard Macintosh file selector will appear and allow you to select the desired filename. In the event that the Output field is blank when you Browse for the input field, the input filename you select will be used to guess at the desired output filename. You may either use the guess directly or edit it as required. + +The output file name may be specified by typing in a name or by selecting the Browse button and using the standard Macintosh file selector that appears. Any existing file with the same name as the output file will be overwritten. If you use the file selector to enter the output filename, you will be given a warning, but not if you simply type it in. Note: Using a filename extension of “AIFF” is recommended. + +There is also a checkbox for an option that is used to cause the film data to be "wrapped" by the header/sync and tailer data structures defined in Table 4.1 before the AIFF file header is added. + +, + +This tool is included primarily as a convenience to those developers using CD-ROM mastering software which cannot do this conversion or which do not accept raw data files as input. [MF3} Developers who choose to use or adapt Film To AIFF should be aware of three work-arounds in the code which have been introduced to compensate for bugs in the driver software that was used in creating the sample CD-ROM: + +e The header and tailer sizes are increased by two bytes each to preserve long alignment of the film data on the recorded medium: (see referenceso to HACK_SIZE in: the definitionsous of HEAD_SIZE and TAIL_SIZE); + +- \ SYNC_SIZE is omitted from the computation offileSize; e The numSampleFrames field of commonChunk does not correctly account for the number of channels (=2) and the number of bytes per sample (=2). + +16June, 1995 + +Property of FOR Atari Corporation + +**==> picture [40 x 19] intentionally omitted <==** + +**----- Start of picture text -----**
+| a
**----- End of picture text -----**
+ + +© 1995 Radius, Inc. & Atari Corp. + +Page 33 + +| + +Cinepak For Jaguar The latter two work-arounds are needed to prevent spurious failure of the recording process and the F attendant destruction of a CD-ROM. + +The actual Film To AIFF conversion process is also accessed through the Convert[A][ QuickTime][ Movie] | and Convert QuickTime Movie Batch options. mann me es | The ConvertA QuickTime Movie menu item brings up a dialog that combines the functionality of the | separate Movie To Film, RGB To CRY, Smooth To Chunky, and Film To AIFF functions into one place. | Please see the documentation for those functions before using Convert[A][ QuickTime][ Movie.] The options in the ConvertA QuickTime Movie dialog correspond to the options in the separate Movie | To Film, RGB To CRY, Smooth To Chunky, and Film To AIFF dialogs with just a few exceptions, as detailed below. + +**==> picture [510 x 302] intentionally omitted <==** + +**----- Start of picture text -----**
+First, the options currently selected affect the output filename that is automatically created when you
Browse the input filename. For example, if you have RGB Compressed and Smooth Film selected, the
| output name will have an extension of “.SRG”. But if you have CRY Non-Compressed and Chunky
Film selected, the output name will have an extension of “.CCR” instead.
’ ¢ File Edit Convert Utilities
P ;
Convert Quicktime Movie to Jaguar Cinepak Film Fite
! i| Output:RAL audio date [is] [2's] complement: [(0] 16-bit Sound Compression: :
@ No Compression f|
Audio chunk size, in 1/100ths O Scale 16-bit to 8-bit Qossy)
of a second (from 10 to 180): [75 | O Square foot (tossy) ;
j Cinepak Film Format: Chunk Video Data Format:
j © Smooth Film Ouration: @ RGB Compressed
@Chunky Film (seconds) OCRY Non-Compressed
© AGB Non-Compressec a
4
; File Format:
@ Raw Cinepak Film Data pe
i
: O AIFF File w/o wrapper { Cancet- j
j O AIFF File w/wrapper
: Figure 8-F — ConvertA QuickTime Movie dialog
**----- End of picture text -----**
+ + +{ : | + +| In the event you want to change the options after having selected the input filename, you can force the | dialog to recreate the output filename to match the new options by clicking on the “?” button next to the | output filename field’s Browse button. J Just because the choices are all in one dialog does not change the fact that there are still up to four : | | separate conversion steps involved. When you exit the dialog, Convert[A][ QuickTime][ Movie][ will][ call][ the] | Movie To Film conversion as well as whichever of the three other conversion steps are appropriate for | the options you have selected. 4 I ©1995 Radius Inc. & Atari Corp. Confidential FO® Information 16 June, 1995 ; + +Page 34 + +Cinepak For Jaguar + +: + +ui abt : | ’ 5 Ss + +; beginning of the the conversion process. | Holding down down the SHIFT+COMMAND SHIFT+COMMAND keys when selecting when selecting selecting the ConvertA QuickTime Movie menu ConvertA QuickTime Movie menuA QuickTime Movie menu QuickTime Movie menu Movie menu menu item will cause the Raw Audio Data Raw Audio Data Audio Data Data is Two’s Complement checkbox Two’s Complement checkbox Complement checkbox checkbox setting to affect QuickTime QuickTime movies | with the “twos” audio format as well well as movies movies with the “raw” audio format. | 87 Convert QuickTime MovieBatch = = The Convert QuickTime Movie Batch menu item brings upa Convert QuickTime Movie Batch menu item brings upa QuickTime Movie Batch menu item brings upa Movie Batch menu item brings upa Batch menu item brings upa menu item brings upa item brings upa brings upa upaa file selector which selector which which allows you you to select the filename of a text of a text a text text file containing a a list of QuickTime of QuickTime QuickTime movie files to be converted. be converted. converted. This file may may be arbitrarily long and can and can can therefore allow you you to process dozens dozens or even hundreds even hundreds hundreds of QuickTime QuickTime movies at once. + +Convert QuickTime MovieBatch = Cd The Convert QuickTime Movie Batch menu item brings upa Convert QuickTime Movie Batch menu item brings upa QuickTime Movie Batch menu item brings upa Movie Batch menu item brings upa Batch menu item brings upa menu item brings upa item brings upa brings upa upaa file selector which selector which which allows you you to select the filename of a text of a text a text text file containing a a list of QuickTime of QuickTime QuickTime movie files to be converted. be converted. converted. This file may may be & arbitrarily long and can and can can therefore allow you you to process dozens dozens or even hundreds even hundreds hundreds of QuickTime QuickTime movies g once. a line in the batch the batch batch file must specify must specify specify a list of desired of desired desired options and the source filename. You may also j specify the destination filename, but if none none is specified, one will be created based on on the conversion = options selected. The available command command line options are: { - Option Description -afn} Specify audio chunk size. {n} is the chunk size in n/100ths of a second. The default a 2 value is 75. Must be in range of 10 to 100. f | -c{n} Chunk duration in seconds for chunky movies. The {n} value should bea floating point 4 number. The default is 1.0. Note that this number affects your CD-ROM buffer size 4 requirements: longer chunk durations require a larger buffer. . 4 -emp{n} Compress 16-bit audio (if that's what is in the source movie) {n} must be one of: ; ; 0 = Nocompression (default) | 4 1 = Simple 16-bit to 8-bit scaling = -f{n} 2File= Square-Rootformat. {n} represents16-bit to 8-bit the desiredcompressionfile format. In most cases [; @ oan | 01 == Raw AIFF Cinepak w/o wrapper film (defautt) =j 2 = AIFF w/wrapper -_ -film{n} . Specify Cinepak film format. {n} must be one of: , 3 0 = Smooth (suitable for small RAM-based movies, not.really for CD-ROM) 4 -twos Specify1 = Chunky that “RAW”(default, audio designed tracks forin CD-ROM source QuickTime playback)movie are Two's complement ,_ 4 format and do not need conversion. Note that if the QuickTime source movie has the . 4 “twos" flag set on the audio tracks, this conversion is deselected unless you hold down | the SHIFT+COMMAND keys when selecting the Convert QuickTime Batch menu item —— (in which case it uses the -twos flag). The default for this option is off. p -_ + +1 + +| + +Any intermediate files required between the source and final destination will be created and deleted as needed. You will typically need to have approximately 2.2 times as much free disk space available as the size of your source movie. Please note that the amount of free disk space is not checked prior to the beginning of the the conversion process. + +Holding down down the SHIFT+COMMAND SHIFT+COMMAND keys when selecting when selecting selecting the ConvertA QuickTime Movie menu ConvertA QuickTime Movie menuA QuickTime Movie menu QuickTime Movie menu Movie menu menu item will cause the Raw Audio Data Raw Audio Data Audio Data Data is Two’s Complement checkbox Two’s Complement checkbox Complement checkbox checkbox setting to affect QuickTime QuickTime movies with the “twos” audio format as well well as movies movies with the “raw” audio format. + +Each line in the batch the batch batch file must specify must specify specify a list of desired of desired desired options and the source filename. You may also specify the destination filename, but if none none is specified, one will be created based on on the conversion options selected. The available command command line options are: + +**==> picture [3 x 15] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +**==> picture [6 x 15] intentionally omitted <==** + +**----- Start of picture text -----**
+Zin
**----- End of picture text -----**
+ + +16 June, 1995 + +Property of 7O® Atari Corporation + +© 1995 Radius, Inc. & Atari Corp. + +| + +Page 35 ] Cinepak For Jaguar p | vin}Option VideoDescription mode. {n} represents the desired video mode and must be one of: 0 = RGB compressed (default) { 4 = CRY Expanded 2 = RGB Expanded |[These][ options][ allow][ you][ to][ select][ the][ same][ items][ as][ the][ various][ conversion][ dialog][ boxes.][A][typical] } batch file might look like this: 1 of This is a comment in my batch file... . P § This is another comment. tf This is the last (third, actually, in a series of three) comment. | ea37 -filml -c0.5 -v0 -f0 "sash:Cinepak Movies :DL2S16Sc .Movie" p add -filme -c0.6 -vl -cmp2 -f0 "sash:Cinepak Movies :DL3S16Sc .Movie”" a60 -filml -c0.75 -v2 -f1 “sash:Cinepak Movies:DL4S16Sc .Movie" + +| Note that any line in a batch file that starts with "#" or "//" is ignored and may be used as 2 comment. | Blank lines are also ignored. + +| The first line in the example that would be processed specifies an audio chunk size of 37/100ths of a S second (-a37), a chunky format film (-film1), a chunk size of 0.5 seconds (-c0.5), RGB-compressed video (-v0), and a Raw Cinepak data file (-f0). This command would cause the file"sash:Cinepak Movies: DL2$16Sc.crg" to be created - from the source file "sash: Cinepak Movies:DL25 16Sc.Movie". (Remember, if not otherwise | specified, the name of the destination file is always generated automatically based on the conversion options selected.) In a batch file, all command line options are persistent from one line to the next unless changed. If one ; command line in the batch file sets up certain options, they remain in effect until changed by another command line. For example, the second example shown above specifes 16-bit audio compression using | the square root method (-cmp2). The third command line example does not specify any ".cmp" option, | s0 the "-cmp2" from the previous command will carry over. | — This option is essentially a batch file version of the Convert A QuickTime Movie option, and therefore | similar rules apply. In particular, please note that that the individual functions Movie To Film, RGB To | CRY, Smooth To Chunky, and Film To AIFF are called by the batch file processor to perform whatever fF conversions are required. | — When doing batch file processing, the disk-space availability check done by the individual menu choices | and dialogs is NOT PERFORMED. So make sure you have sufficient disk space before attempting a } batch conversion. Try to ensure that you have about as much free disk space as the total disk space of your source files, plus the size of your largest file. (i.e. if you have 5 files totaling 10mb, and the largest | file is 2mb, then you need about 12mb free disk space total. However, keep in mind these are rough estimates and give yourself as much room as possible. + +© 1995 Radius Inc. & Atari Corp. Confidential ‘JPR Information + +16 June, 1995 + +| Page 36 . + +Cinepak For Jaguar + +. | AN | § |Z s a + +od + +| + +The ShowFilm Info menu item brings up a dialog where you can select a Jaguar film file and select one i of three different degrees of verbosity. = r @ file Edit Coavert Utilities ] | Display information about a Cinepak Fiim © Fite Details - ‘ O File Details, Chunk Details — © File Details, Chunk Details, Sample Details F Input: [|sash:Cinepak Movies:DL2S16Sc.srg | E : j Figure 8-G — Show Jaguar Cinepak Film Info dialog j : To get just the basic information about a Jaguar Cinepak Film, select the File Details radio button. To 1 4 also get the the details for each chunk of the Jaguar Cinepak Film, select the File Details, Chunk Details | 4 radio button. To get the maximum amount of information, including the details of each block of sample § 4 data in the Jaguar Cinepak Film, select the radio button File Details, Chunk Details, Sample Datails. fg The specified film file will be analyzed and the requested information about the contents will be 3 q dumped to the screen. To pause the screen output, hold down the mouse button, and release it when you b want to continue. (The information printed is identical to the FILMINFO tool available for MSDOS.) ; 4 8.9 Show QuickTime Movieinfo = ' toThe ShowQuickTimeselect a QuickTime Moviemovie. InfoThis menu will itemcause bringsinformation up a standardabout Macintoshthe movie, Filesuch selectoras the movie and allowslength, you ]| 77 . 16 June, 1995 Property of FER Atari Corporation © 1995 Radius, Inc. & Atari Corp. } 7 + +I WARNING: Please keep in mind that each movie can take up to several minutes at a time to convert. Large movies can easily take an hour or more. So before you start processing a batchfile with ahundred commands, remember that it could easily take several days to finish. Make sure that that you have a good understanding of the process and always run a reality check using just one or two movies first. + +Also, the batch file processing feature removes the necessity of you, the user, having to sit at the computer and guide each file through the conversion process, but it does not reduce the time required to convert each file. Because there is currently no facility for breaking out of the middle of a batch job, it is suggested that you try converting just a few movies at a time until you get a feel for how long the process is going to take. The time required for each of the conversion steps is directly related to the size of the file you are converting, with the exception of CRY-expanded or RGB-expanded video output, which will also depend on the compression ratio of the original video data. + +**==> picture [2 x 25] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +**==> picture [3 x 60] intentionally omitted <==** + +**----- Start of picture text -----**
+.
|
**----- End of picture text -----**
+ + +Cinepak For Jaguar + +Page 37 + +& + +P + +frame size, number of video frames per second, type of audio tracks, audio data format, and so forth, will be printed into the console window. + +pee © 1995 Radius Inc. & Atari Corp. Confidential 7O% Information 16 June, 1995 + diff --git a/docs/atari-jaguar-1999/13 - Tools.md b/docs/atari-jaguar-1999/13 - Tools.md new file mode 100644 index 00000000..b19c2ae5 --- /dev/null +++ b/docs/atari-jaguar-1999/13 - Tools.md @@ -0,0 +1,760 @@ +Page 1 + +| . + +Tools + +## ) 7SaguarDeveloperKitTools + +Documentation for the main tools in the Jaguar Developer's Kit is contained in separate chapters. This includes the following: + +| + +## Madmac Macro Assembler ALN Linker DB Debugger - + +The documentation for some utilities may be provided in the same section as the documentation on the libraries or other tools they work with. If you don’t see information on a particular utility here, please look in the appropriate sections of the Libraries chapter. + +Some of the tools in the Jaguar Developer’s Kit are used constantly, such as the Madmac assembler. Others are used much more rarely. For example, the XNOTES program that creates a NOTES.CNF file for the PARSE utility is not something you will need very often. The documentation for some of these tools are provided primarily in ASCII text files included with the program files. These files are found in the JAGUAR\DOC directory of your Jaguar development system, or else in the subdirectory for that item (i.e. MUSIC.TXT inside JAGUAR\MUSIC). + +) Note that the GASM macro assembler is no longer included as part of the distribution of tools in the Jaguar Developer Kit, and the section of documentation regarding GASM has been removed as well. + +1 + +**==> picture [5 x 18] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +© 1995 Atari Corp. + +Confidential Information ‘FPR Property ofAtari Corporation + +5 June, 1995 + +| | | + +Page 2 + +Tools + +/ + +IE + +4 + +| + +a g | 1 | P| | | + +| + +: | | | | + +P = ; | : picture [43 x 14] intentionally omitted <==** + +**----- Start of picture text -----**
+Filename
**----- End of picture text -----**
+ + +**==> picture [112 x 14] intentionally omitted <==** + +**----- Start of picture text -----**
+Platform Description
**----- End of picture text -----**
+ + +**==> picture [327 x 113] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||| +|---|---|---|---|---| +|(This|is loaded automatically by those|tools|that require|it.)| +|code.|(Normally called by GCC.EXE driver program,|not directly by|user.)| +|driver program,|not directly by|user.)| +|program,|not directly by user.)| + +**----- End of picture text -----**
+ + +5 June, 1995 + +Confidential Information FR Property ofAtari Corporation + +©1995 Atari Corp. + +3 + +| + +**==> picture [563 x 733] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---| +|||Tools|Page 3| +|Pidiomeneeecre:s|.||| +|Filename|Platform|Description| +|(This|is loaded automatically by those|tools|that require|it.)| +||| +|;|Alcyon-format|archive|libraries)|.| +|{|SPOS|||(This is loaded automatically by those tools that require it.)| +|||TFGREP.EXE|||MSDOS ||Fast General Regular Expression|Parser utilfy,| +|MSDOS|Filefix|utility.|Breaks|down ABS|or COF executable|file|into raw|binary| +|||| RLERDCEE|[S008 ||crhemancegini| +|7|image files for each program|segment.| +|}|[Fasicow|[soos "rest|owe|wa| +|FLMINFOEXE|||MSDOS—||Browser Jc|a|rtridgesguar|Cinepak|Fim|information| +|}||GCC.EXE|MSDOS|GCC C compiler driver program.|This executes the various programs| +|ecm|[HOS|cm|meccoCemion| +|(This|is loaded automatically by those tools|that require|it.)| +|[DB|Senet ||newer version.)| +|-|[eucance|||ata|Starup|Script|for|GULAM|command|line interpretter| +|||‘GULAMPRG|| Atari|GULAM|commandiine shel| +|||HLOADERCEXE|||MSDOS__| Ulli|to convert old|Jaguar|Sound|Tool files|to new format||| +|FESEXE|||MSDOS|||Unix-style|Directory|Listing Utility| +|TZIAGEXE|||MSDOS|||LZSS For|Jaguar|compression|uflffy| +|M68K\2.6\AS.EXE|MSDOS|Stub program|used by GCC to call MADMAC assembler for Motorola| +|.Dimas healtuser.)| +|:|GCC.EXE driver program,|not directly by user.)| +||:|[HERERCRPEEM68K\2.6\CPP.EXE||[HSCSMSDOS||oemGCCoe|C|Preprocessor for Motorola 680x0.|(Normally called by GCC.EXE| +|||[MAGEXE———[|MSDOS|||MADMAC|Macro| +|FMAGTTP|||Atari|||A|MADMACssemblerssemblerMacro| +|||HMAKECRY.BAT|||MSDOS|||Batch|file to run|TGA2CRY|Utility|(WSDOS|command|processor) __| +|HHAKECRY.G|||Atari|||Batch|file|to run|TGA2CRY Utility|(Guiam|shell|on|Atar)| +|TMERGE.EXE|| MSDOS|||Jaguar|MIDI File Merge Utity| +|;|©1995|Atari Corp.|Confidential Information|JER|Property ofAtari Corporation|5|June, 1995| + +**----- End of picture text -----**
+ + +1 + +i i. We ( + +: 4 Fi + +| + +| ] | ; F oo ;| . | + +| + +a + +a j | a + +| : + +f 3 + +| + +**==> picture [511 x 611] intentionally omitted <==** + +**----- Start of picture text -----**
+||||||||||| +|---|---|---|---|---|---|---|---|---|---| +|Page 4|Tools| +|—_—|eee| +|Filename|Platform|Description| +|Driver.| +|Driver.| +|RANLIB.EXE|MSDOS|Utility far mdexing & time/date-stamping|archive|files|created with| +|[ROMSPLIT.EXE|||MSDOS|_ ||Splits|a ROM|image|file into separate|sections|foreach chip ofacarndge|| +|[MOOoptionally dumps|the symbol|list.| +|[caer|ansteymoaist|eee| +|optionally dumps|the symbol|list.| +|MSDOS|Compresses|16-bit raw sound sample|files|to|8-bit|using|square|root| +|method|(which|are expanded|back to|16-bit|upon|playback).| +|STRIPAIF.EXE|MSDOS|Strips the AIFF header information from|a sound sample|file|to|result|ina| +|Strips the AIFF header|information from|a sound|sample|file|to|result|in|a| +|raw sample|file.| +|data,|in choice|of RGB|or CRY formats.|Also|has|filtering,|resizing,|and| +|,|other image|manipulation|options.|}| +|data,|in choice|of RGB|or CRY formats.|Also|has|filtering,|resizing,|and| +|[UNCMP.EXE|||MSDOS__||otherDecompresses image manipulationsound|filesoptions.compressed by|SNDCMP backto1ebt]| +|tools.|(Thts|is loaded automatically by those tools|that require|it.)| + +**----- End of picture text -----**
+ + +**==> picture [21 x 16] intentionally omitted <==** + +**----- Start of picture text -----**
+‘ir
**----- End of picture text -----**
+ + +5 June, 1995 + +Confidential Information “FO® Property ofAtari Corporation + +©1995 AtariCorp. + +‘ Tools + +: + +: + +Page 5 + +|‘|Tools|Page 55|Page 55|| +|---|---|---|---|---| +|||Filename
MINE|Platform
Description
Replacedby
TMSDOS|GASMMacroAssembler
SL MADMAC||| +|:||MSDOS |ComponentofJAGPEGCompression Utilitiesnormally||| +||
:
]||JCJPEG.TTP
Atari
ComponentofJAGPEGCompression Utilities normally
BPEG
FoEa
eScuansome rvarecyret[oo
[SWAREGEXE |MSOOS
calledbyTGAJAGdriverprogram,notdirectlybyuser.
JMAKEQ.TTP
Atari
ComponentofJAGPEGCompression Utilitiesnormally
BPEG|||| +|:|‘JMERGE.EXE|MSDOS|ComponentofJAGPEGCompression Utilities normally
BPEG|| +||||||| +|q
q|SMERGEHEXE|||calledbyT@AJAGGulamscriptfiles, notdirectlyby user.
calledbyTGAJAGdriverprogram, notdirectlybyuser.|| +|a
calledbyTGAJAGGulamscriptfiles, notdirectly byuser.
4
MSDOS
ComponentofJAGPEGCompression Utilities normaily
BPEG
| FRERGEDEE SOO|Screamstress
[en
2
Aer
| calledbyTGAJAGGulamscriptfiles,notdirectlybyuser.
.
MSDOS
ComponentofJAGPEGCompression Utilities normally
BPEG
[ES
cere insanepom**e**na**n**aecy p**r**ise
4
JQUAD.TTP
Atari
ComponentofJAGPEGCompr ssio Utilitiesno mally
BPEG
RR
ea
eScuensomites teres oy
|
:
JSPLIT.EXE
MSDOS
ComponentofJAGPEGCompression Utilities normally
BPEG
RE
arr
incepogan, dec puree en
;
JSPLIT.TTP
Atari
ComponentofJAGPEGCompressionUtilitiesnormally
BPEG
a nscale
madres |
1
JSPLITH.EXE
MSDOS
ComponentofJAGPEGCompression Utilities normally
BPEG
| RRO
SS corre
ecawespogam, ec bruce [en
JSPLITH.TTP
Atari
ComponentofJAGPEGCompressionUtilitiesnormally
BPEG
RPT
ear
eSouansomtfesmares mye|
'
JSPLITG.EXE
MSDOS
Component ofJAGPEGCompression Utilities normally
BPEG||||| +|||||calledbyTG@AJAG Gulam scriptfiles, notdirectlybyuser.|| +|1
j|JSTRIP.TTP
STATE|Atari
[RT|called byTGAJAGdriverprogram, notdirectlyby user.
ComponentofJAGPEGCompression Utilitiesnormally
BPEG
|r
nso tenure
net[on|| +|j|LTXCONV.EXE||UtilitytoconvertGASM MacroAssembleroutputto|| +|:
FE||TGAJAG.EXE|MSDOS|linkable format
DriverprogramtoconvertTarga-formatpicturefiles into
BPEG|| +||||utilities
i|| + + + +**==> picture [3 x 10] intentionally omitted <==** + +**----- Start of picture text -----**
+‘
**----- End of picture text -----**
+ + +**==> picture [1 x 2] intentionally omitted <==** + +**----- Start of picture text -----**
+1
**----- End of picture text -----**
+ + +© 1995 Atari Corp. + +Confidential Information “7O®. Property of Atari Corporation + +5 June, 1995 + +: + +Tools + +4 + +MiRAae im ; ; 4 E ’ i a : ‘ + +; + +Page 6 + +**==> picture [488 x 124] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||| +|---|---|---|---|---|---|---|---|---| +|Filename|Platform|Description|Replaced|by| +|TGAJAG.G|Atari|Batch file that drives the JAGPEG|utilities to convert|BPEG| +|Targa-format|picture files|into JAGPEG compressed| +|image files|(Guiam|shell for Atari)| +|||BPEG| +|TGAJAGH.G|Atari|Batch file that|drives the JAGPEG|utilities to|convert| +|Targa-format|picture|files|into JAGPEG compressed| +|j|image|files|(Gulam|shell|for Atari)|.| +|TGAJAGQ.G|Atari|Batch|file that|drives the JAGPEG|utilities|to|convert|BPEG| +|:|Targa-format|picture files|into JAGPEG|compressed| +|image files|(Gulam|shell|for Atari)| + +**----- End of picture text -----**
+ + +| + +5 June, 1995 + +Confidential Information ‘FPR Property ofAtari Corporation + +©1995 AtariCorp. @- + +| | | + +| Tools Page 7 yp ARArchivelibratiani | Note: The AR archive librarian for BSD-format archive libraries is available only for MSDOS systems. | The AR68 archive librarian for Alcyon-format archive libraries is available only on the Atari/TOS platform. The documentation below is originally for AR68, but the basic functionality and operation of | both programs is the same. The-AR archive librarian creates and maintains archive libraries of linkable object modules. It allows ; you to create these libraries and add, replace, delete, list, or extract object modules. a hCrrti<“Ct*™:SCOCOCOCOCOCUCOCi:C:CiCWCwiCiCitiC(‘(C(NN..OCtiCiC(O‘i‘CO(U(CCO;O;C(;iwé##CZ | AR68 ARCHIVE OBMOD1 [OBMOD2...] [>filespec] All command line options must be specified first, followed by the name of the archive to be created or | updated, followed by the a list of one or more filenames of object modules. Command line options are | not case-sensitive. AR68 sequentially parses the command line once. AR68 acts upon object modules in the library in the order they are specified on the command line. > When AR68 processes a command, it creates a temporary file called AR68.TMP. which it uses as a scratch pad. After the operation is complete AR68 erases AR68.TMP. However, AR68.TMP is not always erased if an error occurs. If this occurs, erase AR68.TMP and refer to the list of error messages output by AR68. + +The ARCHIVE parameter is the filename of the archive library. + +' The OBMOD1 parameter is the filename of the first object module being acted on. Additional object | module filenames may optionally follow the first. You can specify as many object modules as you like, provided the command line does not exceed 127 bytes. The delimiter character between components consists of one or more spaces. The >FILESPEC parameter is the name ofa file used for output with certain commands. Redirects the output to the file specification you specify, rather than sending the output to the standard output device, | which is usually the console device (CONSOLE). You can redirect the output for any of the AR68 / commands described below. + +- 4 \ j | | + +© 1995 Atari Corp. + +Confidential Information FR Property ofAtari Corporation + +5 June, 1995 + +| + +F : + +] | | | + +**==> picture [604 x 625] intentionally omitted <==** + +**----- Start of picture text -----**
+4 Page 8 Tools j
Command tine Options, r
Option Description
I: The D command deletes from the library one or more object modules. Can be used with the V s
option (see description below). For example:
ar68 dv myrah.lib orc.o '
c red.o : 7
c blue.o 4
d orc.o i
‘ c white.o g
The ORC.O object module is being deleted from the archive library MYRAH.LIB, and the :
RED.O, BLUE.O,and WHITE.O modules are left untouched.
: Theor replacesR commandor addscreatesobject a moduleslibrary whento antheexistingone specifiedlibrary. Youin themust commandspecifylineonedoesor morenot exist,object a:
modules. :
You can replace more than one object module in the library by specifying the module names in
the command line. However, when the library contains two or more modules with the same af
name, AR68 replaces only the first module it finds that matches the one specified in the q
command line. AR68 replaces modules already in the library only if you specify their names :
prior to the names of new modules to be added to the library. For example, if you specify the ’
name of a module you want replaced after the name of a module you are adding to the library. . 3
AR68 adds both modules to the end of the library. 4
By default, the R command adds new modules to the end of the library. The R command adds y 3 <
an object module to a library, instead of replacing one, if: 4
« — The object module does not already exist in the library. 1
* You specify the A option in the command line. |
* The name of the module follows the name of a module that does not already exist in the a
library. a
For example: gs
ar68 rv junk.lib nail.o wrench.o 1
c saw.o a
c ham.o po
r nail.o : j
|e screw,o a
a wrench.o =
The R command replaces the object module NAIL.O and adds the module WRENCH.O to the | a
library JUNK.LIB. The V option lists object modules in the library and indicates which modules | @
are being replaced or added. Each object module that is replaced is preceded with the : ]
lowercase letter r and each one that is added is preceded with the lowercase letter a. 4
**----- End of picture text -----**
+ + +5June, 1995 Confidential Information FER Property ofAtari Corporation + +© 1995 Atari Corp. + +{ + +7 + +1 + +**==> picture [518 x 671] intentionally omitted <==** + +**----- Start of picture text -----**
+Page 9
| Tools
T The T command requests that AR68 print a table of contents or a list of specified modules in
’ the library. The T command prints a table of contents of all modules in the library only when
you do not specify names of object modules in the command line. It supports the V option. For
example:
ar68 tv wine.lib
rw-rw-rw- 0/0 6818 rose.o
,
4 rw-rw-rw- 0/0 2348 white.o
rw-rw~rw- 0/0 396 red.o
The T command prints a table of contents in the library WINE.LIB. In addition to listing the
modules in the library. the V option requests the size of each module. The character string “rw-
rw-rw- 0/0" that precedes the module size is meaningless for GEMDOS. However. if the file is
‘ transferred to a UNIX... system. the character string denotes the file protection and file owner.
The size specified by the decimal number that precedes the object module name indicates the
number of bytes in the module.
1 The W command writes a copy of an object module in the library to the standard output, which
will normally be the screen unless the output is redirected by using the >filespec parameter on
the command line. This command allows you to extract a copy of a module from a library and
rename the copy when you write it to another disk. as shown below. For this command to be
useful, you must redirect the output using the >filespec parameter.
ar68 w go.lib now.o > b: \root\newd\file.o
| This writes a copy of the object module NOW.O from the library GO.LIB to the file FILE.O in
D theThe B:\ROOT\NEWD X command extractsdirectory. a copy of one or more object modules from a library and writes them
|
: to the current default directory. If no object modules are specified in the command line, the X
7 command extracts a copy of each module in the library. The X command supports the V
| option. For example:
’ ar68 xv junk.lib saw.o ham.o screw.o‘
F x saw.o
x ham.o
| A[V] opmod j Thex A optionscrew.ois used only as a modifier for the R option. It specifies that one or more object
: modules are to be added to the library. The specified files will be added to the library following
the object module specified by the opmod parameter, which is expected to be the name of an
object module already in the library. The opmod parameter always comes after all the
specified options, before the name of the archive. For example:
AR68 rav sdav.o rnyrah.1lib work.o mail.o
¢ much.o
: c sdav.o
a work.o
a mail.o
c less.o
The RAV options tell AR68 it should add the object modules WORK.O and MAIL.O after the
module SDAV.O in the library MYRAH.LIB. The V option tells AR68 to list all the modules in
" the library after this is done. New modules are preceded by the lowercase letter “a” and
d existing modules are preceded by the lowercase letter “c”.
**----- End of picture text -----**
+ + +**==> picture [2 x 1] intentionally omitted <==** + +**----- Start of picture text -----**
+|
**----- End of picture text -----**
+ + +**==> picture [3 x 179] intentionally omitted <==** + +**----- Start of picture text -----**
+j
|
:
**----- End of picture text -----**
+ + +© 1995 Atari Corp. + +Confidential Information “JER Property ofAtari Corporation + +5 June, 1995 + +Page 10 Tools i: Vv Theon the V optionlibrary.listsThe the V modulesoption canin theonly librarybe used andwith indicatesone of the the other result ofoption. the operationIn the resulting performed i)i, ; q listing, each object module name will have a letter code in front indicating what action was 7 : taken: i Cc No action taken, object module not updated, deleted, or added. a Object module added to archive library. ; d _ Object module deleted from archive library. ; ] r ~ Object module replaced in archive library : F filename Specifies the path to the directory in which the ter:rcorary file created by AR68 resides. If no ; path name is specified. the current default directory is used. AR68 creates a temporary file : called AR68.TMP that is used as a scratch pad area. t. | ARSSENOIS == ist 1 When AR68 incurs an error during an operation, the operation is not completed. The original library is : : not modified if the operation would have modified the library. Thus, no modules in the library are deleted, replaced, added, or extracted. ' When you specify the >filespec parameter in the command line to redirect the output, and one or more g j errors occur, the error messages are sent to the output file. Thus, you cannot detect the errors without i] displaying or printing the file to which the output was sent. If the contents of the output file is an object __ : file (see the W command), you must use the DUMP utility to read any error messages. i) q picture [79 x 18] intentionally omitted <==** + +**----- Start of picture text -----**
+© 1995 1995 Atari Corp.
**----- End of picture text -----**
+ + +’ 7 + +‘ Tools + +Page 11 + +not archive format: filename F The file indicated by the specified filename is not a library. Ensure that you are using the correct q filename before you reenter the command line. : not object file: filename | The file indicated by the specified filename is not an object file, and cannot be added to the library. Any j file added to the library must be an Alcyon-format object file. Assemble or compile the file before you | reenter the AR68 command line. ; one and only one of DRTWX flags required | The AR68 command line requires one of the D, R, T, W, or X commands, but not more than one. } Reenter the command line with the correct command. q filename not in library q The object module indicated by the specified filename is not in the library. Ensure that you are } requesting the filename of an existing object module before you reenter the command line. . F Read error on filename 7 The file indicated by the specified filename cannot be read. This message means one of three things: the : } file specified is corrupted; a hardware error has occurred; or when the file was created. it was not f correctly written by AR68 due to an error in the internal logic of AR68. P Cold start the system and retry the operation. If you receive this error message again. you must erase | and recreate the file. Use your backup file, if you maintained one. 4 temp file write error p ©The temporary file is full. Erase unnecessary files, if any, or insert a new floppy disk before you reenter } the command line. ] usage: AR68 DR[AV]TWXIF D:] [{OPMOD] ARCHIVE OBMOD1 [OBMOD2...] [>filespec] | This message indicates a syntax error in the command line. The correct format for the command line is f given. with the possible options in brackets. : Write error on filename p The disk to which AR68 is writing the file indicated by the specified filename is full. Erase unnecessary | filles, if any. or insert a new floppy disk before you reenter the command line. ‘ nearer tog ewormessages + +‘ + +| The following are messages that indicate fatal errors in the internal logic of AR68: 7 cannot reopen filename . seek error on library { Seek error on tempname 4 Unable to recreate--library is in filename + +| q { :| | \ | + +© 1995 Atari Corp. + +Confidential Information “FER Property ofAtari Corporation + +5June, 1995 + +Page 12 + +Tools + +j adWN = ( j : Zz ' | | : : ‘ | - | 3 ia { 4 q : . |= j 4 ; = | 3 | | 4 | = j Pa : A| 7“ q : + +; + +| ] ' | j | , | ' + +indicatedFor the last by error,the variable Unablefilename. to recreate--libraryAR68 used theis inlibrary filename,to createyou shouldthe temporary renametile, the temporarythen deletedfilethe library in order to replace it with the updated temporary file. This error occurred because AR68 cannot write the temporary file back to the original location. The entire library is in the temporary file. + +The DUMP utility is a very simple hex-dump program that takes a filename and optionally a starting file position as its input parameters: + +dmp [fileposition]} + +The fileposition parameter indicates the offset from the start of the file where the hex dump will begin. + +## Sizevtiliy + +## §§. + +SIZE is a utility that examines an executable program file or linkable object module file and prints out information about the TEXT, DATA, and BSS segments of the file (size, starting address, etc.) + +Please note that some information is not appropriate for some files. For example, segments within a linkable object module do not havea start address until they are linked together into a program file. size [-s] [-sd] [-v] + +Option + +## Description + +Show symbols in file. The symbols will be sorted alphabetically. The information shown is the symbol value, symbol name, and symbol type. Symbols with the same name will be skipped (usually these are local labels which are used in different routines, equates inciuded into several different source code files, or else special source-level information used by the debugger). |-sd_—s| Same as the -s flag, except that duplicate symbol names will not be skipped. }-v____| When showing symbols, sort by value, not name. + +The parameter file is the filename of the file to be analyzed. SIZE will first look for the filename and extension exactly as specified. If no extension is found, it will then try extensions of .COF and .ABS (in that order). SIZE understands the following file formats: . + +## Alcyon/DRI format executables. (These normally use a file extension of *.ABS) + +COFF encapsulated format executables. (These normally use a file extension of *.COF) + +Alcyon/DRI*.OJ, or *.OT. or BSDSIZE formatwill not automatically object module files.look for(Thesethese normallyextensions; useayoufilemust extensionspecify ofthe*.O, extension on the commandline.) + +5 June, 1995 + +Confidential Information + +Property ofAtari Corporation + +© 1995 Atari Corp. + +: ¢ Tools + +Page 13 + +| filefix [options] filename + +» Archive libraries created by AR or AR68 are not recognized by this version of SIZE. + +| The FILEFIX utility converts a Alcyon/DRI-format (*.ABS) or COFF-format (*.COF) absolute | position executable program file output by the ALN linker into separate files containing the raw data for | the TEXT and DATA Sections of the program, and a symbol table containing the symbol information + for the program, and an RDBJAG-script file for loading it all into the ALPINE board of a Jaguar | Development System. Optionally, FILEFIX can instead create ROM image files that contain a raw binary image of what a ROM cartridge of the program would look like. + +filename An Alcyon/DRI or BSD/COFF format absolute-position executable file. A filename ' extension of .COF or .ABS is assumed if none is given. (i.e. "FILEFIX testprog\" will : look for , then , then , before giving up. | Conmnncopicns ee Switch Description mi-¢ —_|{ Quiet mode, don't print information about executable file. =r romfile Create ROM image file named romfile from executable | The DATA segment must not overlap or come before the TEXT segment. If the DATA segment is not contiguous with the TEXT segment, then zero bytes will be written to the : file between the end of the TEXT segment and the start of the DATA segment. 1 Same as -r, except also create DB script to load and run file. or -rs switch. PP Pad ROM file with zero bytes to next 2mb boundary. This must be used along with the -r ’| ee Sameswitch. as -p, except pads to a 4mb boundary. This must be used along with the -ror-rs | Unless you have specified the -r or -rs command line switches, the output files created will be filename.TXT (the program’s TEXT segment), filename.DTA (the program’s DATA segment), filename.SYM (the program’s symbol! table, if the source is not a COFF-format executable), and **_** filename.DB (a DB script file to load everything), where filename is the root portion of the input filename. If you use the -r or -rs command line switches, the output filename must be specified. Note: If the input filename supplied to FILEFIX has a filename extension, then FILEFIX will look | specifically only for that file. However, if you leave off the extension, it will look for filename.COF | and then filename.ABS. + +| Note: The symbol table file is not output for COFF-format executables. The DB script file output by d FILEFIX will not reference it. Instead, it references the original executable file, which has the symbol information inside. Also, for either DRI or COFF-format files, if the program's TEXT and/or DATA segments are empty, then no output file will be created, and the script file will not reference the output files. + +a | 1 + +aE © 1995 Atari Corp. Confidential Information “FPR Property ofAtari Corporation 5 June, 1995 + +Page 14 + +Tools + +, + +| + +| : 4 ' | + +| + +ti‘“*SdS 3 % + +| + +1 _ + +a + +|=% **S** . a | | * - | = a a 2 + +; + +, } : : | + +1 ' + +The FGREP utility is a Fast General Regular Expression Parser. That's UNIX-speak. In English, it's a program that searches text files for a specified string expression. The FGREP utility supplied in the Jaguar Developer's Kit is a pretty standard version of GREP, so if you're familiar with another version, this one probably works mostly the same way. Strictly speaking, FGREP is not limited to searching text files, but it's behaviour can be somewhat unpredictable when searching binary files. + +## fgrep [options...] [pattern] [{filelist] + +## Commandline Options == =§.+=«= + +FGREP understands a number of different switches that alters its mode of operation. None are normally required. + +## Options + +## Description + +**==> picture [494 x 353] intentionally omitted <==** + +**----- Start of picture text -----**
+|||||||||||||| +|---|---|---|---|---|---|---|---|---|---|---|---|---| +|character.)| +|separated|by|newlines.|In|this|instance,|no|pattern|is|specified|on|the|commandline.| +|When|more|than|one source file|is|specified,|output|lines|normally|include|the|filename.|This| +|Print the name|of each|file that|contains|matches|for the|pattern,|rather than|the|lines| +|“y|Lowercase|letters|in the|pattern|match|either lowercase|or uppercase|characters|in the| +|pattern|The pattern pattern|is|a string string|expression with with|optional|wildcards that FGREP searches for in that FGREP searches for in FGREP searches for in searches for in for in in| +|source|files.|Note|that depending on depending on on|the options options|used,|it may may|sometimes be be|necessary| +|enclose|your|patterns|in|double|quotation marks. marks.|Wild|cards can can|include:| +|Wildcard|Description| +|SE|SO| +|using|'-'|(i.e.|[1-9] matches any character|in “123456789").| +|Match|any character that|is|not one|of the|enclosed|characters.|Ranges|of|letters|or|digits| +|.|\e|Disregard|special meaning|of the|character|'c'.|(i.e.|“\** would|mean match the|asterisk| + +**----- End of picture text -----**
+ + +pattern The pattern pattern is a string string expression with with optional wildcards that FGREP searches for in that FGREP searches for in FGREP searches for in searches for in for in in the source files. Note that depending on depending on on the options options used, it may may sometimes be be necessary to enclose your patterns in double quotation marks. marks. Wild cards can can include: + +**==> picture [13 x 11] intentionally omitted <==** + +**----- Start of picture text -----**
+vm
**----- End of picture text -----**
+ + +**==> picture [12 x 15] intentionally omitted <==** + +**----- Start of picture text -----**
+i
**----- End of picture text -----**
+ + +**==> picture [34 x 33] intentionally omitted <==** + +**----- Start of picture text -----**
+d :
**----- End of picture text -----**
+ + +5June, 1995 Confidential Information “7@® Property ofAtari Corporation + +© 1995 Atari Corp. + +| 1 ' 1 | + +**==> picture [545 x 346] intentionally omitted <==** + +**----- Start of picture text -----**
+E Tools Page 15
Wildcard Description
¢ Match the preceding pattern or the following pattern. For example,. red|blue would match
+ either “red” or “blue”. A newline within the pattern has the same meaning as ‘|’.
a + Match one or more occurances of the previous pattern element. Similar to the * wildcard,
a except at least one occurance is required instead of zero or more.
Py? __| Match zero or one occurances of the previous pattern element.
2 (..-) Parenthesis are used to group patterns. For example (abc)+ matches a sequence ofoneor |
: more occurances of any of the three letters ‘a’, 'b’, or ‘c’. .
-
,
: filelist A list of one or more filenames to be searched. If no file is specified, FGREP takes
{ characters from the standard input device.
} Examples:
] fgrep Al_BASE *.s
1 This would search all files in the current directory that have filename extensions of .S, and print
4 the filename of any lines that included "Al BASE" in them.
‘ fgrep -n dc\.[bwl] *-s
1 This would search all files in the current directory that have filename extensions of .S, and print
the filename and line number of any lines that included "dc.b" or “dce.w" or “dc.J" in them.
**----- End of picture text -----**
+ + +: The LS utility is a UNIX-style LiSt files utility. It has several advantages over the standard MS-DOS | 'DIR' command, including the ability to search directories recursively. ; ls [~?alrstxzAR1 ] [pathl...] [path2...] + +**==> picture [518 x 251] intentionally omitted <==** + +**----- Start of picture text -----**
+a Option Description
ff -? | HELP... print USAGE
| [-a____| Listallfiles, including hidden and system files, *.", and *.."
; L__-1_| Long listing form (extra information)
| [7-1 [Reverse order of sorting
| [7-s____| Display size of each file in kilobytes, and total for each directory
| [+t| Sort by time/date (latest first)
} [x ___| Sort by extension
| |-A___|[ Listallfiles except ['."] and “
‘ [_-R___| List subdirectories recursively
F. | -1 | Display 1 entry per line of short form
If you use multiple options together, you can use just one “_” character at the beginning. For example:
| ls -l -t
' © 1995 Atari Corp. Confidential Information JER Property ofAtari Corporation 5 June, 1995
**----- End of picture text -----**
+ + +5 June, 1995 + +: + +Page 16 + +Tools + +* + +dH + += + +4 ’ + +; ' + +| + +4 + +| } + +Aye { : | + +| GULAMShel4 2. { The documentation for the GULAM commandline shell is provided separately from the main Jaguar 5 Developer's System documentation. + +| j ’ } + +F 4 4 ‘ + +## and + +would produce the same results and provide a long listing of files sorted by their time/date stamp. + +The MAKE program is program-building utility that originated in the UNIX world, but which has since spread to just about every kind of computer system there is. In a nutshell, MAKE checks the time/date stamp of your source code files and the cooresponding object code files, and recompile and/or reassembles any source code files that have changed since they were last compiled. Then it also links the new program file as necessary. + +A special script file, known as a MAKEFILE (and usually named MAKEFILE as well), tells the MAKE utility the names of your source code files, your target program name, and what commands are necessary to turn your source code into object code and link everything into a program. The version of MAKE supplied with the developer's kit is a pretty standard version of MAKE.’ There is one thing to watch for, however. When using the "\" character, MAKE always interprets this as a line-continuation character, even when it occurs other than at the end of a line. If you need to include path specifications in your makefile, you may need to work around this. With many of the tools supplied with the developer's kit, you can use a "/" character in place of the "\" character without any problem. + +The utility 3DS2JAG converts an object file created with AutoDesk 3-D Studio v2.0 or v3.0 into a | format that can be used with the Jaguar 3D graphics routines. The output file created has a JAG | extension, and is essentially a MADMAC assembly language source file containing data statements that | represent a Jaguar 3D polygon object. Documentation on these library routines and the file format of the q JAG file created by this utility can be found in the 3D Graphics section of the Libraries chapter. 1 If you aren't familiar with the basics of MAKE, then we highly recommend the book "Managing Projects with MAKE" q published by O'Reilly & Associates. If this book is not available at your local computer or technical bookstore, you can q order it from the Computer Literacy Bookstore in San Jose, Calif. by calling (408) 435-1118. | 5 June, 1995 Confidential Information FR Property ofAtari Corporation © 1995 1995 Atari Corp. Corp. + +© 1995 1995 Atari Corp. Corp. + +: Option Description Combines faces of the model to convert adjacent triangle shaped faces to rectangular faces yet. ] Note: This does not yet work reliably as of the current version when this was written. ] Specifies the label for the object the label is an identifier string. An optional number tag can be added : using the "-n" option below. Default: