changes.txt
February 27, 2001

============================
============================
Changes from R10 to R11 Beta
============================
============================

- GCC was updated to p2final63.  This should fix a problem that
  developers were having with returns of structs in C++.

- Mouse1, mouse2, and mouse3 sample programs were added.

- Support for Gamespy's matching service was added.  Libraries exist
  in \Lib\Gamespy.  Nine sample programs were added to
  \Sample\Net\Gamespy.  Special thanks to David Wright at Gamespy for
  his efforts in making his libraries compatible with ours.

  Using Gamespy in your game requires that you observe specific
  licensing requirements.  Please contact Sega or Gamespy for details.

Network/Modem
-------------

- Removed Access header files and libraries.

- Removed PlanetWeb header files and libraries.

- Added support for the NexGen TCP\IP Stack. This includes header
  files, libraries, and eight sample programs.

- Added \Include\NexGen to store the NexGen header files.

- Added NexGen.lib and NexGend.lib

- Added \sample\net\NexGen\:

  DHCPTest: This sample demonstrates the use of DHCP with the DC Lan
  adapter.

  StaticIP: This sample demonstrates the use of a static IP with the
  DC Lan Adapter.

  PPPoE: This sample demonstrates the use of PPPoE with the
  DC Lan Adapter.

  PPP_Socket_demo: This sample demonstrates how to detect what device
  is currently connected to the G2 bus on a Dreamcast and how to
  initialize that device (modem or Lan)

  Serial: This sample demonstrates direct serial communications on
  Dreamcast.

- Added:

NexGen.h 
NexGenD.h

- Removed:

open.obj       ppp.lib
pwnet.lib      pwnetd.lib
close.obj      dclan.lib
dns.lib        read.obj
socket.lib     tcp.lib

\include\access
\include\pweb

- The NT_UTL library was updated to abstract regional differences in
  IP and phone number configuration.  It also corrects some incorrect
  flash RAM access behavior on a few early Sega titles.  Please use
  the NT_UTL library for getting default dialup and Internet
  configuration information.

- The European browser was updated to Dreamkey version 1.5.

- The PlanetWeb browser was updated to version 2.1.

- The modem library was updated to v1.0311.  It now correctly reads
  the modem ID to determine settings for US, Japan, or European
  territories.

Kamui2
------

- Kamui vsync callbacks and door open checks were added to the Kamui2
  sample CheapTst.

- The km2demo sample programs were updated to limit the number of
  vertex buffers in 2V mode to one.

- The Kamui2 sample programs added support for switching between 2V
  (with reduced vertex buffers - no need for double buffered) and 3V.

- In QuikTst2, moved background plane update to EOR callback to match
  new version of Kamui2.

- Removed KM_PASSINFO_ENABLE/DISABLE_Z_CLEAR flags from "km2enum.h" :
  The Z clear flag can not be modified by the user, this is a hardware
  limitation.

- Fixed kmSetBackGround() : Background plane settings used to
  unnecessarily synchronize the render.  Updates are now registered
  immediately, but do not take place until the next scene.  Note: if
  kmSetBackGround() is to be called once per frame, it should be
  performed after an end-of- render callback.

- Fixed kmSetAlphaThreshold() : Support re-enabled for setting the
  frame buffer alpha threshold.

- Fixed fatal error callback : Re-enabled fatal error callback when
  KM_FATAL_ERR_TOO_MANY_VTX occurs.

- Fixed vsync wait count operation : Calls to kmSetWaitVsyncCount()
  used to be reset by kmSetSystemConfiguration().  This setting is now
  retained.

- Fixed texture allocation for Stride/Rectangular formats : Added
  rounding to nearest power-of-two size for stride texture allocation.

- Added support for VQ Palettized textures :
- The KM_SURFACE_FLAGS_TWIDDLED_MM_DMA flag was added to km2strip.h.

- A VGA 480 line filter was added to km2enum.h and the Z-clear option was
  removed from pass settings.

- Added kmGetRenderStatusAll() function to km2api_render.h.

- Added some get*() functions for stride width and vsync count to
  km2api_dev.h.

- Included WaitVSync callback in km2api_clb.h for period when Kamui2
  is stalled.

#define KM_TEXTURE_VQ_PALETTIZE4        (0x3000)
#define KM_TEXTURE_VQ_PALETTIZE4_MM     (0x3100)
#define KM_TEXTURE_VQ_PALETTIZE8        (0x4000)
#define KM_TEXTURE_VQ_PALETTIZE8_MM     (0x4100)

- Added KM_TEXTURE_TWIDDLED_MM_DMA texture : Texture type to allow
  twiddled mip-maps to be loaded by DMA.

- Added KM_VIRTICAL_FILTER_VGA option : Vertical filter mode setting
  for filtered VGA.

- Added kmSetWaitVblankCallback() : Callback for period when Kamui2 is
  stalled waiting for vblank.

- Added kmSetNoWaitVSyncAtDisplayModeChange() : Allow display mode
  changes without wasting a vsync period.

- Added kmSetTimeOutCount() : Specify period before Kamui2 issues a
  render timeout.

- Added kmGetRenderStatusAll() : Return current Kamui2 render status
  (under DMA, finished render, displayed, etc.).

- Added kmGetStrideWidth() : Returns global stride width setting.

- Added kmGetVsyncCount() : Returns vsync count setting.

- Added kmGetFrameBufferBpp() : Returns frame buffer bits- per-pixel.

- Added kmGetLatencyModel() : Returns Kamui2 latency model (2V or 3V).

- Fixed kmGetDisplaySize() : Returns proper display size.

- Added kmSetYCoefficient() : Specify vertical filter y- coefficient.

- Fixed kmProcessVertexRenderState() : Did not generate palettized
  texture control word properly.

- Fixed kmRenderTexture() : Did not properly account for target
  texture bits-per-pixel.

- Updated VideoLogic demos with "LensFlare" and "Compression" (VQ
  Palettize) samples.

- Updated SplitTst split screen sample with new efficient Render Rect
  method.

- Added kmuPrintf() functions : support for debug font to kmutil.lib.

- The FilmTV sample program was added.

- The sfdtex sample program movie dimensions were corrected to 288x160
  to account for proper allocation of rectangle/stride textures in
  Kamui.

- The hello sample program was updated to support proper access of 
  "errno" under gcc.  A link order problem in hello was also fixed.

- Added:

  kmuDebug.h

Audio64
-------

- acCdInit now sets a default volume (maximum) and pans (left speaker
  hard left, right speaker hard right)

- Added definitions to ac.h for some common GD-DA constants (maximum
  volume, hard pan left, hard pan right)

- New system function, acSystemSetVolumeMode. This function allows you
  to select an internal linear to logarithmic volume table for use
  with acDigiSetVolume, or use the default hardware logarithmic
  values. To enable the linear table, use the command
  acSystemSetVolumeMode(USELINEAR).

- Fixed a bug in the AM layer, where the AM callback handler wasn't
  getting cleared on shutdown.  The callback handler is now cleared as
  part of the amInit() function.

- amSystemSetVolumeMode() removed, since it is now handled at the AC
  level (this may cause some slight volume changes at the AM level for
  linear volumes)

- (Hopefully) fixed a bug in amMidiTransferTonebank where it would
  always return AM_CANT_SEND_DRIVER_COMMAND. The problem was that the
  parameters passed to the command were incompatible with parameters
  passed to acMidiSetTonebank (which is called by
  amMidiTransferTonebank). A simple argument check was placed in
  amMidiTransferTonebank to fix this.

- A bug with DMA has been fixed.  Under certain circumstances, it is
  possible that an Audio64 DMA handler vector could overwrite memory
  causing crashes or other strange side effects (fixed in R10.2).

- An issue with leadin times was fixed with AM streamer.  This would
  cause stuttering with streams that used a leadin time of 0, that
  didn't have silence at beginning (fixed in R10.2)

- An issue with a64File...() functions has been resolved, where if you
  were using a64FileRead() to load Audio64 driver into SH4 RAM, it
  could randomly fail.  This was due to function checking to see if
  you were loading file directly into AICA RAM, but addresses in AC
  table that specify range of AICA RAM were not filled in yet (as
  library was not initialized, so table wasn't either) (fixed in
  R10.2).

- An SH4 side command queue has been added.  If you're wconstantly
  running into AC_CANT_SEND_DRIVER_COMMAND (or
  AM_CANT_SEND_DRIVER_COMMAND) errors, then you can enable command
  queue.  All of commands that you send to Audio64 will be queued in
  command queue, and sent to Audio64 driver in background (new for
  R11).

- Fixed a bug where calling acDigiMultiPlay() would cause extra
  interrupts to be returned.  solution was to change order that
  commands got executed in acDigiMultiPlay(). You must issue an
  acDigiPlay() command, and then an acDigiRequestEvent() command in
  order to guarantee interrupts callback events.(fixed in R10.1)

- Audio64 was updated to fix the DMA issue where the extra handlers
  would cause random things to happen in Shinobi.

- Updated manatee to version v.2.02.08.

- Documentation for the sample Dreamcast DSP collection is in the ZIP
  file at /Utl/Snd/DSP.

Samples
-------

All the Audio64 samples now use Kamui2 for rendering text for a
cleaner and easier to read display.  These are the new samples that
are included:

- a64Thunk: Audio64 library contains Audio64 hook functions that map
  (thunk) to appropriate functions in Shinobi library. If needed,
  these may be overridden by explicitly including these modules
  (a64chain.c, a64dma.c, a64file.c) in your object file list and
  substituting alternate support.

- acCDPlay:This sample demonstrates how to play GD-DA tracks with
  Audio64.  It demonstrates panning and volume changes on both GD-DA
  channels, and illustrates use of GDFS commands to playback Red Book
  audio.

- acDsp: sample uses AC layer to play a raw sound file with DSP
  effects.  Sound memory is manually allocated.
 
- acPlayMidi: sample shows how to play a raw MIDI file.

- acPlaySound: sample shows how to use new filter and amplitude
  envelope commands, as well as LFO commands.

- acTransfer: sample is a suggested setup for using AICA DMA for
  Audio64 transfers.  focus here is very specific; this is essentially
  a DMA sample that happens to access AICA memory and AICA DMA.

- amAbuse: This sample was originally designed as a "worst- case
  scenario" to determine what would happen if Audio64 system was
  "hammered" with commands.  It was included to demonstrate abilities
  of Audio64, and can be used as a comparison between not using
  command queue and using it.

- amAbuseMidi: This sample does same as amAbuse, but also includes
  MIDI.

- amPlayMidi: sample shows how to play MIDI from a bank, and sets MIDI
  callbacks.

- amStream: This is a sample of a 4 stream AM layer setup where each
  stream plays one "instrument" in composition. It demonstrates
  asynchronous stream APIs.

Ginsu
-----

- The Ginsu sample application build process now includes the ginsu,
  sg_sydds, and sg_sd libraries.

- The Ginsu manifest program was updated with NTSC, PAL, and SCART
  support.  The dragon sample program was updated to fix a video
  incompatibility with Windows CE that would cause the video signal to
  drop out -- the application would work, but no picture would be
  visible.

Shinobi
-------

Updated to version 1.66.

- Memory management problem fixed. When realloc() or syRealloc() was
  called, it released the original heap area if an area couldn't
  reserved. It's been fixed so that the original heap remains.

- In the backup library there was quite a rare case, but there were
  some malfunctions in file access depending on the timing of
  peripheral interrupt. Malfunctions included - file could not be
  found when loading, or - deleting file could not be completed,
  etc. That's been fixed.

- Support for the OPTIMIZE_TYPE parameter was added to dc.inc.  This controls
  space versus speed optimization in the sample programs.

- Support for conversion of default OBJs was added to dc.inc.

- Libcross objects were moved into a library.

- Added Mouse library (sg_pdms.lib 2.02). Header file sg_pdms.h, to be
  included from the shinobi.h file, has been added.

- Extended device recognition library (syExtChk.lib 2.02) was
  added. Header file sg_exchk.h, to be included from the shinobi.h
  file, has been added.

Added:
sg_pdms.h:  mouse support
sg_fm.h:    flash memory manager
sg_exint.h: defines for extended devices
sg_exchk.h: checks for extended devices

Added:
sg_pdms.lib

Movies
------

- As an unsupported feature, the 4x Movie for Dreamcast codec was added.

- The Duck and MPEG sample movie playback samples were removed from
  the Ginsu sample application.  The updated middleware libraries
  should still work with Ginsu; however, this has not been tested.

Documentation
-------------

- GameSpy documentation was added to the \Doc directory in
  GameSpy.pdf.

- An updated set of Network Development Standards supported by
  Sega.com was added to the \Doc directory.

GD Workshop
-----------

- GDworkshop version 2.9.0R

This version allows you to specify your own padding file.

You specify the file you want to use as padding on the Workshop
Settings dialog.  The file must reside on the emulator's hard drive
and it must be equal to or bigger in size than the number of bytes of
padding required.

The number of bytes of padding required is given in the log when you
emulate a project. If the padding file is too small GD Workshop
automatically creates a zero-byte padding file of the correct size. If
the padding file is too large GD Workshop removes the required number
of bytes from the end of the padding file.

CodeScape 2.3.0 Release Build 197 Changes
-----------------------------------------------

[Bugs Fixed for Build 197, 198]
===============================

1   Tabbing in a Watch region fails on floating-point NAN.

2   Incorrect edit field appears when tabbing back from last line of
    Watch.

3   Bad file/line/address information with DWARF2.

[New Features added for Build 195, 196]
=======================================

1   Step out button no longer flickers when doing operations which
    involve holding down a key.

[Bugs Fixed for Build 195, 196]
===============================

1   Symbol Completion dialog is not consistent with tick boxes when
    initialized.

2   Tooltips in Source/Disassembly don't handle cases like
    Destructors::~Destructors properly.

3   Scripting problems:
    * 'true' not properly interpreted by SetBreakpointAction(),
      SetBreakpointScript(), and SetBreakpointCondition().
    * SetWatchBreakpointParameters() wrongly ignoring 'access type' and
      'access size' if 'include data condition' is false.
    * Need a clearer error message when 'include data condition' is true
      and access size is 'any'.

4   GPF caused by DWARF2 not always referring to line information
    sequentially.

5   Clipboard copy from Local Watch gets hidden symbol handle expression.

6   If an edit window was open and target state changed, for example,
    single-step, edit did not close, resulting in possible GPF.

7   Call Stack gets confused by stack adjustment instruction after the
    prologue.

8   GPF when single-stepping with a Local Watch region open.

9   Call Stack should use nearby labels when scanning for non-debug prologue
    start.

10  GPF when closing CodeScape with Source/Disassembly region open.

11  Memory region does not show breakpoints inserted in another region.

12  Should not be able to scroll in a Call Stack region when running.

13  Disassembly view selecting with trailing new line on single cell entries.

14  Call Stack confused by special nop code reading.

15  Address to line stuff causes the cursor position in Source/Disassembly to
    become out of step

16  Lookup of constructor function fails.

17  Target memory access cache does not know about volatile areas of memory
    such as peripherials.

18  'Session Close' not disabled (grayed) when there is no session open.

19  On the Region Combo toolbar select a region type and pressing
    F1. This causes causes the active region to change to the type
    that Help was requested for.

20  The Window menu option "Zoom Window" zooms the active region so should
    be called "Zoom Region".

21  Not always clear when Find in Files has stopped searching.

22	Find in Files, does not search the root directory (C:\).



[New Features added for Build 193, 194]
=======================================

1   Profile Optimization
    * A Function Call List that shows how many times a function is 
      called and the function that called it.
      For example, F1() called F2() 10 times.
      The list Sort order is based on the number of times a function is 
      called highlighting the function calls to optimize.
    * A Function Call Cache Miss List that shows how many times any function 
      that misses the cache is called and the function that called it.
      The list Sort order is based on the number of times the function is
      called and misses the cache highlighting the function calls to optimize.

2   New Profile Optimization Algorithm based on the Instruction Cache.
    The algorithm ignores function groupings and lets you enter the size
    of the function if the debug information does not have it.

3   New Profiler column that shows the averages of the Profiler's Counter.

4   Syntax check on creation of an array sub-range rather than waiting for 
    expansion to check it.

5   Get rid two buttons (Run / Stop) on the toolbar and replace with one 
    toggling button.

6   Visually separate between watch expression and value fields.

[Bugs Fixed for Build 193, 194]
===============================

1   GPF toggling use abbreviated file names.

2   GPF in the generic disassembler due to problem with re-entrancy.

3   If no project is open, Next and Prev do not work on the Find In Files tab.

4   Aborting Find in Files does not work.

5   Find in Files, does not work for root directories, for example "C:\".

6   Find in files search in folder dialogue box not displayed.

7   Find in files doesn't understand file type *.*.

8   Browse button in Find In Files, if the directory is bad the dialog 
    will start at the current directory.

9   Tab order in Find in Files.

10  When auto radix selected in a Watch or Disassembly region, or in the
    Expression Evaluator, integer registers are not show as hexadecimal.

11  Some menus are missing or have conflicting navigation access keys.

12  GNU ELFs with reordered sections give bad size information.

13  No memory highlights for anything but bytes in hexadecimal.
 
14  Memory cache incorrectly fills in valid bits.

15  Tabbing in Watch and Local Watch regions across char == 39.

16  Locking DASH targets from a Katana build.

[New Features added for Build 191, 192]
=======================================

1   Show key bindings on button tooltips.

[Bugs Fixed for Build 191, 192]
===============================

1   GPF during a make using gmake under NT.

2   In the Editor, select Syntax Highlighting dialog, then select the second 
    element in the Color list box and CodeScape GPFs.

3   Find in Files output does not expand tabs.

4   Expression evaluator does not use current 'this'. If you lookup a
    class member variable in a class member function, the expression
    evaluator does not insert 'this->' in front of the expression.

5   In the new Goto Address dialog, Symbol Complete (ALT+S) and Find
    Globals (ALT+G) do not work.

6   Multicolumn drop on a Watch region does not work.


======================
======================
Changes from R9 to R10
======================
======================

Shinobi
-------

- Shinobi.lib updated to version 1.62.

- Integrated C++ with multiple compilers.  For Gnu and
Metrowerks, we fixed the path naming problem so that there
are no more conflicts between Hitachi header files and gcc
header files.

- C++ global constructors were not being called at the
appropriate time; Shinobi initialization was clobbering C++
constructors.  This has been fixed.

- We now call the Hitachi C++ global constructors in the
sbinit.c file, as well as the gcc and Metrowerks C++ global
constructors.

- Added the fnomacsave compilation parameter to gcc.
Multiplying on SH-4 puts the results in MACL and MACH.
Hitachi presumes that these registers are not preserved
during a function call.  gcc previously assumed that they
were preserved.  This has been fixed.

- All malloc() operations internally call syMalloc(),
regardless of the compiler used.  Previously, users of gcc
and Metrowerks were using the compiler's own internal memory
allocation, making global memory management difficult.

The following files were ADDED for R10: sg_fm.h
sg_dpldr.h   sg_sd2.h

SH4_mwerks.h - Replaces sh4_mwk.h

The following files were REMOVED for R10:
kcfg.h        sg_cp.h
sg_syscd.h    sh4scif.h     smachine.h

SH4_mwk.h - replaced with SH4_mwerks.h

The following functionality was ADDED to R10:
syChainFinish
typedef SYS_MALLOC_IF
syMallocChangeIF

Support added for country keyboards
#define PDD_KBDLANG_JP        0x01         /* Japan
#define PDD_KBDLANG_US        0x02         /* America
#define PDD_KBDLANG_UK        0x03         /* England
#define PDD_KBDLANG_GERMANY   0x04         /* Germany
#define PDD_KBDLANG_FRANCE    0x05         /* France
#define PDD_KBDLANG_ITALY     0x06         /* Italy
#define PDD_KBDLANG_SPAIN     0x07         /* Spain
#define PDD_KBDLANG_SWEDEN    0x08         /* Sweden
#define PDD_KBDLANG_SWITZER   0x09         /* Switzerland
#define PDD_KBDLANG_NETHER    0x0a         /* TheNetherlands
#define PDD_KBDLANG_PORTUGAL  0x0b         /* Portugal
#define PDD_KBDLANG_LATIN     0x0c         /* Latin America
#define PDD_KBDLANG_CANFRENCH 0x0d         /* CanadianFrench
#define PDD_KBDLANG_RUSSIA    0x0e         /* Russia
#define PDD_KBDLANG_CHINA     0x0f         /* China
#define PDD_KBDLANG_KOREA     0x10         /* Korea

pdKbdExit sySqEnd

The following functionality was CHANGED to R10:
Changed from macros to functions syMalloc
- changed from macro to function syRealloc
- changed from macro to function syCalloc
- changed from macro to function syFree
- changed from macro to function

Changed to incorporate shinobi_workaround

- changed order of program initiation so that shinobi setup
isn't overwritten by GNU initialization.

Net
---

- Added an in-game browser for Europe and the US. Samples
can be found in \Sample\Net\Browser\US and
\Sample\Net\Browser\Europe, respectively.

- Added two TCP/IP stacks. Samples can be found in
\Sample\Net\PW and \Sample\Net\Access

- Added include sub-directories for each stack \Include\PW
\Include\Access

- Added following .h files

  PlanetWeb: errno2.h      netdb.h fcntl2.h      pweb_net.h
  pwebinc.h     inet.h in.h          tcp.h select.h
  socket.h types.h       types2.h uio.h

  Access: at_api.h       at_pltfm.h at_types.h     aveppp.h
  cardprobe.h    cmcontex.h dns.h          in.h netdb.h
  sock_errno.h sockdef.h      socket.h sockfunc.h     time.h
  types.h        vsyncpro.h dbdebug.h

  Modem: mdmAPI.h netinfus.h nt_utl.h

Kamui2/Kamui
-------------

All of the Kamui version 1 samples have been removed from
the SDK. Sega of America recommends that all developers who
were previously using Kamui and whose titles are not going
final in the next couple of months, switch to Kamui2.  Kamui
functionality is still in the release, however, you must
link with the Ninja libs and follow the Kamui2 finalization.

The following files have been ADDED for R10:

km2dbg.h - kamui2 debug information; see
Sample\Kamui2\Km2Debug

The following files have been REMOVED for R10:

These files have been removed because Kamui no longer exists
in the release. km2*.h files previously conflicted with some
km*.h files and now conflicts have been resolved.

kamui.h         km2base.h
km2kamuix.h     km2status.h
km2util.h       kmapi.h
kmenum.h        kmsrvice.h
kmstruct.h      kmvertex.h
kmymemory.h     kmymemory.h
kmyparamdefs.h  kmdefs.h

The following functionality has been ADDED for R10:

Added faster level 5 macros:
#define kmChangeStripTextureSurface
#define kmChangeStripListType
#define kmChangeStripUseAlpha
#define kmChangeStripTextureAddress

Audio64
--------

The Audio64 audio streamer has been completely reworked.
The R9 version used synchronous Shinobi File IO calls and
synchronous SH4 memory copies to transfer data to sound ram.
The R10 version uses asynchronous File IO calls and DMA data
transfer methods (if selected) and is much more efficient.
A number of R9 streamer calls which are no longer used have
been removed (see list below).

The following is a list of API calls that have been REMOVED
for R10:

acIntInstallOsChainDeleteManager
acIntInstallOsChainAddManager
amMemSh4Alloc
amMemSh4Free
amMemInit
amMemInstallAlternateMemoryManager
amStreamSetMix
amStreamInitBuffer
amStreamInstallUserCallback
amStreamRewind amStreamSetBufferSizes
amStreamPrimeBuffers
amStreamGetTrackLengthInFrames
amStreamGetNibblesPerFrame
amStreamGetSampleRate
amStreamGetMsPerIrq
amStreamGetVolume
amStreamGetPan
amStreamGetIsrCount
amStreamIsStereo
amStreamIsMono
amStreamOpen
amStreamSetTransferMethod
amStreamInstallAlternateIoManager

The following calls have been CHANGED for R10:

amStreamSetBuffers
amStreamPlaying
acDigiSetVolume
acDspSetMixerChannel

The following calls are NEW for R10:

amStreamSetHeaderBuffer
amVoiceFree
amVoiceSetStreamIsr
amVoiceInstallUserCallback
amStreamReleaseVoiceChannels
acSetTransferMode
acGetTransferMode
acTransfer
acDigiSetFilterEnvelope
acDigiSetAmplitudeEnvelope
acDigiSetLfoRegisters
acSystemSetStereoOrMono
acDigiSetLoopPoints
acDigiPortsAvailable
acSystemSetMasterVolume
acDebugBreak
acCkset_imask

The following files have been ADDED for R10:
a64chain.h
a64dma.h
a64file.h
a64thunk.h

Movie / Middleware
------------------

- Removed Duck samples. These samples would not work with
Kamui2.

- Audio64 can now be used. Sound and Movie libs are now
independent of one another.

The following files have been ADDED for R10:
cir_fsel.h
cri_san.h
Rca_mw.h
sg_mwrec.h

The following files have been REMOVED for R10:
fsel.h
sg_mwrv2.h
sg_mw2.h

The following functionality has been CHANGED for R10:
struct MWS_PLY_CPRM
mwInitSystem
mwExitSystem

The following functionality has been ADDED for R10:

ADXF_CloseAll
#define	ADXT_CalcDataLen(sec, nch, sfreq)
ADXT_CloseAllHandles
ADXT_GetHdrLen
ADXT_GetFmtBps
ADXT_SetReloadTime
ADXT_GetIbufRemainTime
ADXT_SetDrctLvl
ADXT_DiscardSmp
ADXT_EntryFltFun
mwPlyEntryFname
mwPlyStartSeamless
mwPlyReleaseSeamless
mwPlySetLpFlg
mwPlyStartFnameLp typedef void (*MW_ERRFN)
mwExecMainServer
mwEntryErrFunc
#define mwPlyStartSj
#define mwPlyStartMem
mwExecIdleSvr
mwReturnToMain
mwReturnToMainFromIntr
mwMngConfigUsingKmWaitVsyncCb

Makefile
---------

Changed all makefiles from "Prjectname.mak" to "makefile".
When compiling samples you no longer have to use specify a
file name.

Added following options to command line environment:

- #COMPILER =	SHC Can be: SHC (SHC C) MWERKS (Metrowerks
Codewarrior C/C++) GNU (GNU C/C++) This option is currently
commented out in all make files, SHC is used by default.

- GFXLIB =	KAMUI2 Can be: KAMUI2 NINJA

- OUTPUT =	ELF Can be: ELF (elf file output) BIN (BIN
file format for 1st_read.bin) LIB (Lib file)

- SYSTEM_INCLUDE = $(DEF_INCLUDE)\MyIncDir Added for
additional include directories.

SHC C
------

- Upgraded SHC/C++ to Ver. 5.1(Release09)

- Updated to SH SERIES ASSEMBLER Ver. 4.1B.

- Added include sub-directory for SHC headers \Include\SHC

Metrowerks Codewarrior C/C++
----------------------------

- Updated to version 4.0.6 Build 0518

- Version includes new command line compiler

- Integrated into SDK build environment.

Known Bugs: see readme.txt

GNU C/C++
---------

- Updated to version 2.9 sh4p2final 990316

- SRCONV generates incorrect SYSROF files. SYSROF requires
information which COFF files don't contain, and the Hitachi
SYSROF loaders (linker & debugger) will not output error
messages when an incorrect SYSROF file is loaded

Flash Utility
--------------

- Updated GDRFlash bios to version 0.53

- Added GUI version of the flash util.

Codescape
----------

- Updated to version 170

- Fixes the following bugs:

1)  Parts of a Memory region that change when out of view
are still not highlighted as changed. Redrawing the Memory
region clears highlighted	changes.

2)  GPF when looking up template function names.

3)  Lockup in Load Program File, processing scope
information.

4)  Syntax highlighting is now based on file extensions and
is saved globally, not on a session by session basis.

5)  Need an option to disable syntax highlighting in an
Editor region. Click Tools, Options, and select the Editor
tab. Deselect the Use Syntax Highlighting check-box to
disable syntax highlighting.

6)  You can now zoom a region in to fit the window frame and
zoom out again.

GD Workshop
-----------

- Updated to version 2.9.0f.

- Fixes the following bugs:

1) TOC Sheet produced by GDWorkshop added 150 to tracks 1+2,
this was based on CDCraft 2.30 this has been fixed to match
2.32

2) Scripts containing filesource's larger than 260
characters caused a GPF, this now produces an error message

3) When saving a script CDDA tracks would always use the
emulation filepath, this has been fixed

4) GDWorkshop can now output a TOC at anytime **NOTE** you
must have first emulated the project (it requires a valid
.HCD file)

5) TOC format has been changed to match that of CDCraft

6) You can now do multiple burns with a simple burn another
option after a burn has completed

7) If you do a test burn and it passes you are now asked if
you want to do a real burn.

8) Problem with track 3 being empty, track 4 having a file
less than 4 seconds produced a bad TOC, this has been fixed

Additions :

1) File Order Optimizer (not documented yet)

2) Automatic track padding (empty tracks can now be
emulated)

3) When choosing an IP file the browse box defaults to *.bin

4) Scripts can be saved with either the emulation file
source or the original file source

5) Tool Tip on Disc Usage

6) Right Click menu On Disc Usage

7) Explorer Button

8) Default Dates on Disc Tab

9) Update Modification Dates as an option

10) Explorer button added.

Known Bugs:

- If the project has only three tracks and the third track
is empty then the emulation will fail.

Submit
------

Added Submit directory. This directory contain information
to help you successfully submit your final submission to
Sega.

- Added models in the Ninja model format and the Lightwave
format.

- Added fonts directory for Japanese fonts.

- Added standards directory. Contained herein are the
standards for submitting titles to Sega.

- Added warnings for all areas in the warning directory.

GFX
----

- Removed PVRviewer and replaced with PVRTool.

- Moved LOGO directory from \Utl\GFX\ to Submit

- Added screen capture tool. \Utl\GFX\Capture.

DRIVER
-------

- Added Driver directory off root install directory. This
directory contains all sound and mini-game browser binaries
needed for game development.

DOCS
-----

- Added version 4.0 of Acrobat Reader

- Added new docs for:

   - Net: PlanetWebStack.pdf       AccessStack.pdf

   - Kmaui2: KAM2_Gde.pdf          KAM2_REF.pdf

- Added slide presentations from SOE Bootcamp and SOA
Network Bootcamp.

SAMPLES
--------

- Renamed Katana.inc to DC.inc to fit European standard.

CIM_UTL
--------

Added CIM_UTL tool which can be found in \utl\dev\CIM_UTL.
This tool will take a .CIM file and create a GD Workshop
project, or take a GD Workshop project and create a .CIM
file.

DA INTERFACE
-------------

Added DA INTERFACE directory which is found in
\utl\dev\DAInterface

This replaces the functionality of Salsa. This is an
interface to the debug adapter, which is the layer that
Codescape was written on top of.

GDXFLASH
---------

Added the gdxflash directory: \utl\dev\dbflash\gdxflash

This directory contains the latest firmware for the GDX plus
instructions on how to flash the unit.

======================
======================
Changes from R8.1 to R9
======================
======================

The following changes have been made to Sega Dreamcast SDK
Release 9:

Audio64
-------

The audio64 driver contains three important fixes:

- On certain Sega Dreamcast units bad modem connections
would result in the generation of spurious MIDI interrupts.
This caused the driver to fail.  Spurious MIDI interrupts
are now properly rejected by the driver.

- There was a timing problem that caused the contents of
AICA registers to become corrupt in certain situations. This
has been fixed.

- Pitch shifting was broken. Subtle changes would create
larger jumps. This has been fixed. acDigiSetCurrentPitch now
works properly.

The amSoundStop() routine will now positively stop the sound
given it via retrying the acDigiStop() command with a slight
pause. This ensures that looping sounds are stopped on the
first try every time.

KTBOOL amSoundReleaseVoiceChannel(AM_SOUND_PTR theSound)

This allows the app to release a voice channel that was
allocated to a sound that will not be played. If a sound is
not played and a voice was allocated it will be lost
permanently if it is not released.

KTBOOL acIntSetMessagingMode(AC_MESSAGE_MODE messageMode)

Now the message handler (ARM interrupt handler) can either
be attached to the ARM interrupt (async) or to the VBLANK
interrupt (isync). If no messages have been sent by the
driver the routine will return and do nothing.

void acIntSetPollingRate(KTU32 pollingRate)

This allows the polling rate of the vblank based message
handler to be adjusted.

KTBOOL acDigiGetCurrentReadPosition(volatile KTU32
voiceChannel,volatile KTU32 *currentSampleFrame)

Gets the current read position of the PCM play cursor in
frames from the start of the buffer.

void acG2FifoCheck (void);

Checks the Holly and AICA FIFO's and returns when the FIFO's
are clear.

KTBOOL acG2Fill( volatile KTU32 *target, KTU8 value, KTU32
sizeInBytes);

Fills an area of G2 memory, a G2 compliant version of
memset()

KTBOOL acG2Read (volatile KTU32 *target, volatile KTU32
*source, KTU32 sizeInBytes);

KTBOOL acG2Write (volatile KTU32 *target, volatile KTU32
*source, KTU32 sizeInBytes);

Read or Write to G2 memory from SH4 memory.

KTBOOL acG2ReadLong (volatile KTU32 *address, KTU32*value);

KTBOOL acG2WriteLong (volatile KTU32*address, KTU32 value);

Read and write longs to G2 memory. The read does a double
read to insure that accurate values are delivered back.

KTBOOL acDmaInstallHandler (AC_DMA_TRANSFER_PROC
theTransferProc);

Allows installation of a DMA handler, see MyDma.c

KTBOOL acDmaInit (void); KTBOOL acDmaShutdown (void);

Called by the AM layer to init and de-init the DMA shell.

KTBOOL acDmaSuspendAll			(void); KTBOOL
acDmaResumeAll			(void);

Suspend and resume all DMA calls for the G2 layer.

- Boilerplate changes

*** MySfx.c

MyLoadBank() now allocates a temp buffer in SH4 memory as
direct reads to AICA memory are not supported by the GDFS
API.

MyPlaySoundEffect() & MyPlaySoundEffectFX()

Now demonstrate the use of amSoundReleaseVoiceChannel() post
voice allocation to free the voice on error exit from the
function.

*** MyStream.c

This has been updated to manage its own instance memory
pool.

*** MyInt.c

This has been updated to show the current ARM/VBLANK
interrupt handler and callback handler. This is not invoked
by the sample code but the handlers invoked are the same as
these.

*** MyAmSetup.c

This is a new module that contains the setup code for the AM
library. It allows via a boolean argument the selection of
ARM or VBLANK interrupt driven messaging.

*** MyDma.c

This contains the monolithic DMA shell proc that is
installed into the audio system to provide SuspendAll and
ResumeAll functionality.

Movie / Middleware
------------------

- Sample added to support movie playback with Kamui2. MPEG
movie playback and Kamui2 will now work together. See
sample: \Sample\Movie\mw_km2

- Audio64.drv updated for Duck samples.

GNU C/C++
---------

- GCC updated to Phase 2, Final 33, ELF.

- Fixes C++ debugging. Previously debugging class structures
through Codescape was broken. This is now fixed.

Flash Utility
---------------

- Updated GDRFlash bios to version 0.52

Codescape
---------

- Updated to version 145

- Fixes the follwing bugs:

1)  If a large file (~16Meg) that contains no linefeeds or
carriage returns is dropped on to CodeScape, the debugger
appears to stop.

2)  In the Call Stack when the address is offset from a
label it sometimes looks to chose the wrong label to offset
from. The offset is still a correct / valid expression but
it looks wrong.

3)  If in the breakpoint configure dialog an invalid
expression is entered and OK is hit. The dialog warns that
the expression is invalid (this is correct), but it then
disables the breakpoint and closes the dialog.

4)  The Advanced breakpoint options are not greyed out when
the breakpoint type is set to software.

======================
======================
Changes from R8 to R8.1 Update
======================
======================

The following changes have been made to Sega Dreamcast SDK
Release 8:

Shinobi
-------

- Shinobi.lib updated to version 1.44.

- Fixed a serious bug in the syCache module which directly
affects movie playback.  The symptoms of the bug were:

  1. Movie player may enter an infinite loop when a movie is
  started. 2. Joypad input may be lost during the playback
  of a movie and never return. 3. A GD-ROM read may fail and
  all subsequent reads fail.

- Profiler.lib updated to match Shinobi.lib version 1.44.

Audio64
-------

- Audio64.drv driver updated to version 1.80c.1. Minor
change to interrupt layer to enable host IntID writeback.

- Audio64.lib matched to driver version 1.80c.1.

- Fixed a significant bug related to the shutdown and re-
initialization of audio drivers during playback of MPEG
movies.

  The bug was discovered under the following conditions:

  1. Application is loaded from a hard reset. 2. Audio64
  driver is initialized. 3. Sounds are played via Audio64.
  4. Audio64 is shutdown. 5. Manatee is initialized. 6.
  Occasionally, sdMultiUnitDownload() locks up immediately
  after initialization in a call to G2AicaFifoWaitEmpty().
  7. Otherwise, the first frame of the movie may play and
  then freeze. 8. Exiting out of the movie player at this
  point may cause subsequent calls to Audio64 initialization
  to fail with a driver mismatch error.

  The cause of the error was the DSP running freely during
  the period between shutdown and startup of audio drivers.
  Under certain conditions, the DSP would overwrite sound
  memory. The fix to the Audio64 library is to clear the DSP
  during startup and shutdown.

- Audio64.lib modified for G2-bus compliency.

- Support added for Store Queue writes to sound memory to
improve the performance of audio sample loads.

- Audio64 header files [ac.h, am.h] modified to support
changes to driver and library.

  Added acSystemClearDspRegisters()

  Moved acSystemGetCurrentReadAddress() functionality to
  acDigiGetCurrentReadPosition()

  Added error check for AC_NON_32_BYTE_ALIGNED_SIZE

  Chainable ARM interrupt handler exposed

- All audio sample programs updated to match new driver and
library versions 1.80c.1.  [Assets did not change].

Kamui
-----

- Ninja.lib updated with Kamui version 1.10.0.1 (Jul 09,
1999 build).

- Support added for 512 line PAL video modes.

  Kamui's standard PAL support is for a 640x480 display
  letterboxed. With the new 640x480EXT video modes, the
  display can be stretched to cover 512 lines and greater.

- Kamui header files [kmapi.h kmstruct.h kmenum.h] changed:

  Added kmSetPALEXTCallback()

  typedef struct _tagKMPALEXTINFO { IN    KMDISPLAYMODE
  nDisplayMode; OUT   KMINT32         nPALExtMode; }
  KMPALEXTINFO,*PKMPALEXTINFO;

- New video modes:

  KM_DSPMODE_PALNI640x240EXT KM_DSPMODE_PALNI640x480EXT
  KM_DSPMODE_PALI640x480EXT

  typedef enum { KM_PALEXT_HEIGHT_RATIO_1_033 = 0,  /* 247
  || 495 */ KM_PALEXT_HEIGHT_RATIO_1_066 = 1,  /* 255 || 511
  */ KM_PALEXT_HEIGHT_RATIO_1_100 = 2,  /* 263 || 527 */
  KM_PALEXT_HEIGHT_RATIO_1_133 = 3,  /* 271 || 543 */
  KM_PALEXT_HEIGHT_RATIO_1_166 = 4,  /* 279 || 559 */ }
  KMPALEXTHEIGHT;

Kamui2
------

- Kamui2.lib updated to version 16.3.2.4 (Jul 23, 1999
build).

- Support added for 512 line PAL video modes.

  Kamui2's standard PAL support is for a 640x480 display
  letterboxed. With the new 640x480EXT video modes, the
  display can be stretched to cover 512 lines and greater.

- Kamui2 header files [km2api_clb.h km2strct.h km2enum.h]
changed:

  Added kmSetPALEXTCallback()

  typedef struct _tagKMPALEXTINFO { IN    KMDISPLAYMODE
  nDisplayMode; OUT   KMINT32         nPALExtMode; }
  KMPALEXTINFO,*PKMPALEXTINFO;

- New video modes:

  KM_DSPMODE_PALNI640x240EXT KM_DSPMODE_PALNI640x480EXT
  KM_DSPMODE_PALNI640x480FFEXT KM_DSPMODE_PALI640x480EXT

  typedef enum { KM_PALEXT_HEIGHT_RATIO_1_033 = 0,  /* 247
  || 495 */ KM_PALEXT_HEIGHT_RATIO_1_066 = 1,  /* 255 || 511
  */ KM_PALEXT_HEIGHT_RATIO_1_100 = 2,  /* 263 || 527 */
  KM_PALEXT_HEIGHT_RATIO_1_133 = 3,  /* 271 || 543 */
  KM_PALEXT_HEIGHT_RATIO_1_166 = 4,  /* 279 || 559 */ }
  KMPALEXTHEIGHT;

- Kamui2_d.lib updated to match Kamui2.lib version 16.3.2.4.

- Km2util.lib and Km2utl_d.lib updated to match Kamui2.lib
version 16.3.2.4.

- Minor change made to the makefile for QuikTst2 to pass the
correct graphics API (KAMUI2).

Movie / Middleware
------------------

- Mw_snd64 sample updated to reflect changes in Audio64
library.

- Audio64.drv updated to version 1.80c.1 for Duck samples.

- Official logo images added for MPEG Sofdec, ADX, and
Truemotion movie and streaming formats.  See the Sega
publishing standards for proper usage.  Images provided in
".bmp" format in 640x480 and 320x240 resolution with black
or white backgrounds.

- MPEG Sofdec movie encoders [both plug-in and stand-alone
tools] updated to version 1.02.

  Fixes several crashing bugs RGB-YUV converter optimized
  Multiplexer sped up

- Minor update to ADX encoder.  Switched from debug version
to retail.

Codescape
---------

- Updated CodeScape to version 2.2.0 Build 137.

- Fixed the following bugs:

  Active overlay was ignored in label and symbol lookup.

  When the user correctly calls MWNotifyOverlayLoaded.
  CodeScape did not recognize that an overlay had been
  loaded.

  Shortcuts in Overlay Management Dialog did not operate
  correctly.

  Construction of abbreviated filenames produced extensive
  load times.

GD Workshop
-----------

- Updated GD Workshop to version 2.7.0f.

- Important bug fix to "Save CRI script" feature.

  The version of GD Workshop that shipped on R8 had a
  problem keeping the correct order of tracks and files
  after items were deleted or added to a project.  This
  update correctly exports CRI ".scr" files for use with CD
  Craft.

IP Maker
-------

- Updated IP Maker to version 1.0.3.0.

- This version now allows U.S. and European product ID's to
be entered into the appropriate field instead of through the
"Free Entry" box.

- A registry file is provided to set the IP Maker tool to
default settings,including English text.  Double-click on
this file to install it.

GNU C/C++
---------

- GCC updated to Phase 2, Final 29, ELF.

- Important fix for delayed branch bug.

- Fixed an "unrecognizable insn" bug in the compiler, and a
related assembler/disassembler bug.

- Fixed a few incorrect opcodes.  These mainly affected
debugger specific code (instructions using the SGR and DBR
registers).  Also fixed some 16-bit instructions
(mulu.w/muls.w were specified as mulu and muls).

======================
======================
Changes from R7 to R8
======================
======================

This is a list of some important changes between the
previous Katana development environment (R7) and this one.

- Support for the gnu compiler and linker was added.  All
220 sample programs in this release have been demonstrated
to compile, link and run under the Hitachi, Metrowerks, and
gnu compilers.  Developers wishing to use gcc as their
primary compiler should read the file gcc.faq, located in
the \utl\dev\gnu\readme directory.

- Initial Kamui2 support was added.  Kamui2 is an improved,
low-level graphics API that provides developers fine-grained
control over rendering states.  It also allows developers to
manage texture memory themselves.

  However, Kamui2 is relatively new, and backwards
  compatibility between original Kamui applications and
  Kamui2 is not assured. Therefore, we are simultaneously
  supporting Kamui and Kamui2 in this release.

  Our quality assurance department was unable to fact-check
  the documentation for Kamui2 in time for general release,
  and so we provide it here in its original format in the
  \doc\Kamui2 directory.

- The new ginsu library was added.  Ginsu is an interface
that allows for easy creation of sampler-type titles, for
use in kiosks or demonstration versions of software.  Ginsu
allows developers to create limited-functionality versions
of their titles and allow them to be integrated gracefully
onto a GD with titles from other developers.  It can also be
used as a general purpose menuing system.  For more
information, see doc\PDFs\Ginsu.pdf .

- The video streaming playback samples were updated to
demonstrate how to do video playback using the Duck and CRI
MPEG codecs, across the Audio64 and Shinobi audio libraries,
in conjunction with all three compilers.  Each permutation
of the listed tools and libraries is possible with R8.

- Install.txt (GetStart.pdf) was rewritten to correspond to
the new processes for burning GD-ROMs.  Please review this
document when creating a disc image for submission to Sega,
as the burning process can be subtle.

- The DBFlash utility was updated to version 1.11, which
includes some user interface improvements.  DBFlash is used
to update the development hardware to the last versions of
firmware.

- New CRI-compatible MPEG compressors were added.  This
release includes the MPEG video compressor from Panasonic
Wondertainment, and an MPEG export plugin for Adobe
Premiere.

- Fifteen sample programs were included to demonstrate how
to program the Visual Memory Unit, or VMU, as a separate
development environment.

- sbinit.c was updated to work around a compiler bug where a
semaphore is not correctly handled in the P2 area:

	    _mp_SemaphoreAddress |= 0xA0000000;

- A submittable version of warning.da was added.  Developers
will use this sound file in track 2 (CDDA) to warn people
that the disc should not be played on standard CD players.

- Previous versions of the memcpy() function supplied in the
Hitachi libraries failed to copy aligned structures of 256
bytes correctly. This has been fixed.

- Shinobi header files were wrapped with #ifdef __cplusplus
blocks to work correctly with the gcc compiler.

- The audio control layer AC_CMD_PORT_PLAY_WITH_PARAMS
command, was added to ac.h.  In addition, the following
functions were added to the ac layer:

  acDigiPlay (KTU32 port,KTU32 startOffset, KTS16
  aicaLoopFlag)

  acDigiPlayWithParameters (KTU32 port,KTU8 volume, KTU8
  pan, KTU8 dspMixerChannel, KTU8 dspSendLevel, KTU32
  eventRequestAddress, KTU16 loopStartAddress, KTU16
  loopEndAddress)

  acDigiPlayWithLoopParameters (KTU32 port,KTU32
  startOffset, KTS32 aicaLoopFlag,KTU16
  loopStartAddress,KTU16 loopEndAddress)

- Functions were added to the am layer to support MIDI
playback. However, most of these functions are stubbed at
this time.  If you require MIDI support for your title,
please contact us at dts@sega.com .

- Metrowerks support of iostreams has been totally
overhauled.

- The parameters of the kdInitSystem() function were
reversed:

  kdInitSystem(void* recvbuf, void* sendbuf);

- The following functions were added to kaede.h to support
the development of lower-cost lightguns:

  void kdSetGunTrigger(Uint32 port); void
  kdSetGunCallback(Sint32 (*func)(void)); void
  kdSetHandler(Uint32 num, void (*func)(void));

- Across all sample programs, sbinit.c was modified to
support the gcc code startup conventions.

- Some new sample programs (CheapBump and Dragonfly) have
been added to the kmDemo folder, courtesy of VideoLogic.

- The new Kamui initialization function, kmInitDevice(), is
supported. New code should use this function, as it is more
flexible.

- The following function was added to sg_sycfg.h:

  Sint32 syCfgGetDefaultLanguage( Sint32* ) ;

- The following function was changed in sg_sd.h:

  EXTERN SDE_ERR sdDrvGetErr( Uint32 *err);

- More comments were added to sg_pdvib.h to describe the use
of the force feedback functionality (vibration unit) of
Dreamcast. Additionally,  the comments in sg_pad.h were
cleaned up.

- A macro, MWD_PLY_LATENCY, was added to mw_sfd.h to support
the 2V versus 3V latency modes for Kamui playback.

- A new CellSprite data format was added to Ninja in the
njdef.h section to support streaming of video surfaces into
layered sprites.

- Support for several new VGA display modes was added to
Ninja:

  320x240 VGA 320x480 VGA 640x240 VGA

  Flicker filtering is optional for each mode.

- The njDrawPolygon3DEx() series of functions was added to
ninjaapi.h. This series of functions permits buffering and
batch rendering of simple 3D primitives.

=====================
=====================
Changes from R6 to R7
=====================
=====================

- C++ support was added, in the form of the Metrowerks
CodeWarrior compiler and IDE environment.  Full
documentation is supplied in PDF format.  Most sample
programs in this release have been demonstrated to cross
compile within the Metrowerks environment; for your
convenience, CodeWarrior projects have been added to most
sample programs.

- The process for building Shinobi programs was redesigned.
Microsoft Visual Studio is no longer required in order to
build or run the sample programs included in this release.
Instead, the build process is designed around the freely
redistributable gnu make (gmake.exe) utility for Win32.
Source code for the utility is included for your
convenience.

- Set 5.23 development hardware support was removed from
this release. You can check the version of development
hardware you're using by looking at the first four
characters of the serial number of the unit, located on the
bottom of the development system.  If you are still
developing using Set 5.23, please contact your account
manager for an upgrade.

- The firmware for the Set 5.24 system was updated.  Your
development system should be reflashed with the images
included in this release:

    Debug adapter firmware (genie.fsh): 4.6.0a GD-M firmware
    (gm2_6_0h.fsh): 2.6.0h Boot ROM firmware (btrf5001.bin):
    1.001

  This process happens automatically if a Set 5.24 system is
  connected to your development PC when you install R7.  The
  DBFlash utility is used to do this reflash, but DACheck
  can be used to reflash and check the debug adapter and GD-
  M.  For more information, see the \utl\dev\dbflash folder.

- Thirteen sample programs that demonstrate how to program
the Visual Memory Unit (VMU) were added to the release, in
\utl\dev\vmstools\sample.  These programs have not been
tested and are provided for reference only.

- Movie compression and playback support was added to the
release. Fifteen sample programs demonstrating the CRI MPEG
and TrueMotion Duck codecs have been added to the
\sample\movie folder, and compressors have been added to the
\utl\gfx\conv\movie folder.

- There are now over 170 sample programs in this release.
Of particular interest is ScrnGrab, which demonstrates how
to capture the current video frame and save it to the
filesystem.  Useful for creating screenshots for magazines.

- CD Craft was added to the release, in the \utl\dev\cdcraft
folder. It is expected that this command-line tool will
assist developers in burning GD-ROMs for testing purposes.
CD Craft does not require that a Set 5.24 system be attached
to the SCSI bus in order to burn a GD-ROM.

  This tool was a late addition to the release.  If you do
  not need to set up a separate station for burning GD-ROM
  images, please continue to use GD Workshop for this
  purpose.

- The documentation was overhauled.  Information was added
and video play, targeting Dreamcast, the Metrowerks IDE, the
Ginsu programming library, Codescape scripting, and getting
started with Dreamcast.

- Newly developed, detailed technical presentations were
added to \doc\training.  Information is also included about
developing using Microsoft's Windows CE for Dreamcast
(available separately).  For your convenience, PowerPoint
and Word viewer programs were added to \doc\training\viewers
.

- The new Audio64 library was added.  This is a new driver
interface for allowing developers to play 64 sound samples
simultaneously using the AICA engine.  There are two APIs
for this interface, implemented in ac.h and am.h.  This
library does not require the use of Macintosh tools in order
to generate sound content.  To support the Audio64 library,
five command-line tools for processing audio were added to
\utl\snd\pc.  Additionally, two sample programs showing how
to use the new interface were added to \sample\audio64.

- The release directory structure was overhauled to move
most commonly used items nearer to the root of the release.

- The IPMaker utility was added into \utl\dev\ipmaker .
This utility allows you to generate IP.BIN files, which are
required for disc verification, security, and testing.

- The method for checking for the output type -- VGA, NTSC
or PAL -- was redesigned.  The sg_sycbl.h file was updated,
and the syCblCheck() function is now available for this
purpose.

- Scripting support was added to GD Workshop and Codescape,
via the Windows Scripting Host.  If you have not added
scripting capability to your development PC, we have
provided the self-extracting executables for this support in
\utl\dev\scripting .

- The Hitachi linker automatically aligns certain data types
that the Metrowerks compiler does not necessarily need to
align.  Due to the fact that some Shinobi libraries (such as
Kamui) expect their data types to be naturally aligned, the
following bit of code was added to samples to force the
Metrowerks linker to make them work:

    #ifdef  __MWERKS__ #pragma align (4); #endif

  Kamui structures that previously happened to be allocated
  naturally at 32-byte aligned addresses should be forced to
  allocate at 32-byte addresses, if the CodeWarrior compiler
  is being used.  For an example of this, see the QTDirect
  sample program.

- Most sample programs rely on sbinit.c in order to
initialize the filesystem.  This initialization previously
failed if the filesystem for some reason became unavailable
(for example, when a user removes the disc).  As a result,
sbinit.c has been updated in all sample programs to poll the
filesystem initialization function gdFsInit(), and if the
filesystem does not respond after 8 tries, the program exits
gracefully.  All shipping Dreamcast programs must behave
similarly.

- The teapot and f40 sample programs were updated to
demonstrate the correct way to check for the presence of a
VGA versus NTSC displays. Additionally, QuikTest was updated
to support PAL displays.

- The 3DS2Kamui tool, kindly supplied by VideoLogic,
supports several new features.  Mesh animation, camera
animation, UV transformations from materials, smoothing
groups, texture export, online help, and #defines to
indicate that a structure has been exported, have all been
added to the tool.

  Normals are now renormalized before export, a bug in names
  export was fixed, and mesh export was rewritten to be more
  robust.

  Known limitations of the plugin include the following.
  Exported materials only include the names of all textures,
  diffuse, specular and ambient colors, shininess, shininess
  strength, opacity, and shading type.  Animation doesn't
  support mesh morphing.  Face mapping (a special type of UV
  mapping) is not supported.  Textures are exported as RGB
  24 bit bitmaps only.  The camera does not export ROL info.
  Fans are not supported by the stripping algorithm.

- A .pvr texture exporter from Photoshop was added to
\utl\gfx\phtoshop .

- Shinobi include files were #ifdef'ed to prevent accidental
recursive inclusion.

- The bool type, defined in sg_xpt.h, was redefined to Bool,
which is in turn #define'd to Sint32.  Note that CodeWarrior
defines the type bool (lowercase b) to have a sizeof 1, and
Hitachi C defines the type bool to have a sizeof 4.

- The libcross library for debug output was slightly
modified so that most I/O functions, such as _write(), have
been prefixed with _debug, e.g. _debug_write().  This is to
avoid name conflicts with developer libraries.  See the
memtest sample program for an example.

- The ld_ext() function now generates a warning if the type
passed in is not (void *).

- Return values of the pdGetPeripheral() function are now
cast to (PDS_PERIPHERAL *) to avoid compiler warnings.

- It's now possible for the application program to detect
the country code of the target Dreamcast system.  The
following functions were added to sg_sycfg.h:

    syCfgGetCountryCode  ( Sint32* ) ; syCfgGetCountryCode
    ( Sint32* ) ; syCfgGetLanguage     ( Sint32* ) ;
    syCfgGetBroadcastType( Sint32* ) ;
    syCfgGetShortIndividualID( Sint8* ) ;
    syCfgGetIndividualID( Sint8* ) ;

- The following types were added to sg_pad.h:

    #define PDD_DEVTYPE_LIGHTGUN     (1 << 7) #define
    PDD_DEVTYPE_VIBRATION    (1 << 8)

- A function was added, gdFsIsTrayOpen(), to allow your
application to check whether the GD-ROM tray has been opened
by the user.

- Several functions were deleted from the gdfs interface.
gdFsLoadDirFast(), gdFsChangeDirFast(), and gdFsOpenFast()
are no longer supported.

- The Hitachi C compiler was updated.  Of particular
importance are the following fixes:

  - A memory overflow error that occurred with very large
  arrays of literal values was fixed.

  - The compiler emitted illegal opcodes when the argument
  to some builtin functions additionally made a register
  store.  This has been fixed.

  - The preprocessor choked on some complex typed
  expressions such as (char *) cp = &(*char *)0xb804000).
  This has been fixed.

  - Several optimization improvements have been added which
  can map structures into registers.

  - Literal character strings can now be 32767 characters
  long.

  - The compiler can align data types to 32 bytes.  Use
  #pragma aligndata32 to force this.

  - C++-style comments, //, are now supported.

  - By default, the compiler now no longer spews a copyright
  message on startup.

  - Floating point constants (such as 1.0f) can now be
  placed into a literal pool for use by assembly functions.
  Previously, the preprocessor did not handle floats
  correctly.

- The following functions were added to Ninja:

   void njRenderStart( void ); void njFlipFrameBuffer( void
   ); void njSetEORCallBackFunction( void (*func)(void) );
   void njGetSystemInfo(NJS_SYSTEMINFO *info); void
   njMemCopy8( void *dst, const void *src, Sint32 num );
   void njMemCopy16( void *dst, const void *src, Sint32 num
   ); void njMemCopy32( void *dst, const void *src, Sint32
   num ); void njMemCopySQ( void *dst, const void *src,
   Sint32 num ); Sint32 njReLoadTexturePartNum(Uint32
   n,Sint8 *addr,Uint32 offset, Uint32 size); Sint32
   njReLoadTexturePartNumG(Uint32 globalIndex,Sint8 *addr,
   Uint32 offset,Uint32 size); Sint32
   njLoadTextureReqStop(void); void
   njGarbageTexture(NJS_TEXMEMLIST *addr,Uint32 n); Sint32
   njReadTextureNum(Uint32 n,Sint8 *addr); Sint32
   njReadTextureNumG(Uint32 globalIndex,Sint8 *addr); Uint32
   njCalcTextureSize(Uint32 nWidth,Uint32 nHeight, Uint32
   nTextureType); void njSetTextureParam(NJS_TEXMEMLIST
   *texmemlist); void njCameraMotionOld(NJS_CAMERA *camera,
   NJS_MOTION *motion, Float frame ); void
   njCameraActionOld(NJS_CACTION *caction, Float frame );
   Uint32 njGetPaletteMode(void); void
   njGetPaletteData(Sint32 offset,Sint32 count,void* data);
   Sint32 njReLoadTexturePartNum(Uint32 n,Sint8 *addr,Uint32
   offset, Uint32 size); Sint32
   njReLoadTexturePartNumG(Uint32 globalIndex,Sint8 *addr,
   Uint32 offset,Uint32 size);

- Nindows now supports the use of a Maple bus mouse.  See
nindows.h.

- Several keywords were removed from the Ninja file format,
and the 3-D model exporters were updated to reflect this
fact.  As a result, the following Ninja samples were removed
from this release:

    Logo Temjin Motlink Simple

  Ninja models created with older versions of art tools will
  need to be re-exported in order to work correctly with R7.
  (Files with an .nja and .nam extension created with R6
  will not work with R7.)

- Kanji characters were cleaned out of a few of the sample
programs.

- Shinobi header files had an #ifdef'd extern "C"
declaration added to support compilation by CodeWarrior.

- Codescape, GD Workshop, and DACheck were all updated.
Check the release notes accompanying each tool for details.

=====================
=====================
Changes from R5 to R6
=====================
=====================

- A first version of a 3D Studio Max R2 to Kamui converter
was added to the \utl\gfx\conv\pc\3ds2kamui directory.
Special thanks to Videologic for supplying this early
version.

- Macintosh-based sound conversion, layout and processing
tools were added to the \utl\snd\mac directory.  The
Macintosh archive in this directory contains four programs
for use with the Katana Sound Box. The .bin file may be
decompressed with StuffIt for the Macintosh. PC-based
conversion and processing tools will be supported in a
future release.

- Early versions of the MPEG Sofdec video compression tools
were added at the last minute, for experimentation purposes
only; QA testing has shown them to be unreliable.

- The Hitachi SH-C compiler was updated to R32.  elf2bin was
updated to 0.83.  prfdump was updated to 0.83.  GD-Workshop
was updated to 46a.  Disk padding is now handled correctly.
The four-second track check during a GD-ROM burn was
removed.  Codescape was updated to build 106.

- Initial support for the vibration peripheral was added to
kaede.h, in the form of the KDD_FUNC_VIBRATION constant.

- The following Kamui samples were added:

    kmBlend kmCyberk kmCybr2v kmFlight kmflgt2v kmGasfl
    kmGas2v kmLogo kmLogo2v kmMarble kmNefert kmNef2v
    kmSample kmSeal kmSeal2v kmSpace kmStaind kmStnd2v
    kmStrips kmToyp kmToyp2v kmTrees TableFog VertFog

- The following Kamui demos were added:

    Fortune Knot Scanner Siberian Trilinear Vase Wrace

  These excellent demonstrations were written by VideoLogic
  and Sega wishes to express its gratitude for allowing
  these programs to be included in this release.

- The following Ninja samples were added:

    CnkFlat DoorOpn MCLight2

- Training content and information for Dreamcast was added
to the \doc\training directory.  Also included are Word 97
and PowerPoint viewing programs, which are freely
redistributable.  Three sample programs were included as
training support.

- The sfd_mw.h header was modified to 1.01, and includes
functions for determining and working with audio buffers,
and setting display size and playback.  Also, sg_mwply.h was
completely overhauled, and a MWD_PLY_ALLOC_SJBUF() function
was added to wav_mw.h.

- buRewriteExecFile() was added to sg_bup.h.

- Digital audio support was added in the form of the
GDFS_DAINFO struct in sg_gd.h.

- The sbrk() function is no longer supported; use syMalloc()
and syFree().

- The syBtXXX() series of functions was added to sg_sybt.h
for accessing the boot ROM service and checking the system
ID.

- The following Ninja functions were added:

void njCnkSimpleMultiDrawModel( NJS_CNK_MODEL *model ); void
njCnkSimpleMultiDrawObject( NJS_CNK_OBJECT *model ); void
njCnkSetSimpleMultiLight(Int num); void
njCnkSetSimpleMultiLightSwitch(Int light, Int flag); void
njCnkSetSimpleMultiAmbient(Float ar, Float ag, Float ab);
void njCnkSetSimpleMultiLightColor(Int light, Float lr,
Float lg, Floatlb); void
njCnkSetSimpleMultiLightVector(Float vx, Float vy, Float
vz); void njCnkSetSimpleMultiLightPoint(Int light, Float px,
Float py, Float pz); void njCnkSetSimpleMultiLightRange(Int
light, Float nrange, Float frange); void
njCnkSetSimpleMultiLightMatrices(void); void
njChangeTextureMemorySize(Uint32 size ); void
njGarbageTexture(NJS_TEXMEMLIST *addr,Uint32 n);
NJS_TEXERRSTAT *njGetTextureErrStat(void);

- Support for bootable BIN files and CPP browser info was
added to katana.inc.  Due to an incompatibility with one of
the sample programs, support for targets with spaces in the
target names was removed from katana.inc.

- The QuikTest sample program underwent a major cleanup.

=====================
=====================
Changes from R4 to R5
=====================
=====================

Hardware
--------

- Your Set 5.2x system contains a CLX2 graphics chip and an
SH-4 CPU. The performance of this hardware is roughly
equivalent to the performance of the final production unit.
You can begin hardware performance testing with this
development hardware.  However, please keep in mind that we
will continue optimizing software performance, including
further compiler optimizations.

  The speed of translucency sorting with the new "punch
  through" vertex format has been improved by approximately
  4x.  This vertex format allows polygons with 1 bit of
  translucency information (i.e., the polygon is either
  opaque or translucent at any point) to be drawn nearly as
  fast as standard opaque polygons.  Kamui now supports this
  type of vertex format.

- This development hardware supports audio and MIDI output.
Some sample content has been included for your
experinmentation.

Kamui
-----

- The process for loading textures in Kamui has changed
slightly. Kamui assumes that there exists a 16-byte header
in any loaded .pvr file and therefore skips this memory
area.  Additionally, the Kamui texture data must be 32-byte
aligned for DMA purposes.  Therefore, it is necessary to
manually align texture data in system memory to 16(2n + 1)
byte boundaries before attempting to use it in Kamui.

- Additionally, files must be loaded on 32-byte aligned
memory addresses as well.  Currently, the first range of
memory allocated by Shinobi's memory allocation routine
happens to be 32-byte aligned. However future allocations
are not necessarily aligned.  Please keep this in mind if
you're writing your own file loader.

- The method of determining the video output device (VGA or
NTSC) has changed.  You can use the Ninja sbInitSystem()
function to determine whether a VGA cable is attached.

- A number of Kamui functions have been replaced by macros.
In particular, the kmStartVertexStrip() function has been
replaced by kmxxGetCurrentPtr(), kmxxStartVertexStrip(),
kmxxSetVertex_0(), and kmxxReleaseCurrentPtr().

- Kamui kas a new way to display text characters to the
display, which is defined in dispstr.h.  Most of the Kamui
sample programs use this new method.  The printf() function
used in Codescape was demonstrated to be unreliable a few
days before the code freeze date; we suggest you try using
the dispstr.h method for this release.

- The sbinit.c stubs have been heavily modified to support
the GD-ROM file system, to automatically determine the end
of work RAM from linker information, and to automatically
use the default Dreamcast controller instead of the old-
style Maple peripheral box. Additionally, sbinit.c now takes
care of timer initialization and interrupt control.

- Twenty-one new Kamui sample programs have been added.

Ninja
-----

- Ninja now supports a chunk format model file for improved
rendering speed.  All Ninja exporters support this format,
and a command-line utility (NJAConv.exe) exists to convert
Ninja models into the new format.  Old format Ninja models
are still supported by the library. The new chunk format
functions are prefixed with "njCnk".  See ninjaapi.h and
ninjacnk2.h for a list of these functions.

- Ninja now uses a callback scheme to propagate errors to
the caller. See ninjadef.h for details.

- Ninja now supports clipping to user-definable regions.
See the tileclip Ninja example to see how this works.

- Thirty-two new Ninja sample programs have been added.

Build environment
-----------------

- The compilation process no longer halts on link warnings.
To change this behavior, modify the HALT_ON_LINK_WARNINGS
variable in katana.inc.

- _CLX_ and _CLX2_ must be defined for Kamui sample programs
to build.

- Single and double precision constants in float.h have been
overhauled.

- A "Start a new compilation environment" icon is added to
the desktop as part of a standard installation, along with
Codescape and GD Workshop icons.  (This feature can be
disabled by executing a Custom installation.)

Codescape
---------

- Codescape now requires the presence of binary files,
usually IP.BIN and IP0000.BIN, in order to build an
executable GD-ROM image.  These files contain peripheral
support and other information about your title; you will
need to compile your own versions of these files. See the
Shinobi example program.

- Codescape now supports code profiling; this functionality
was broken in R4.










