No$gba Release Notes

The freeware debug version was discontinued after version 1.4c, due to piracy attacks.
Restrictively, version 1.5 and up was available to registered commercial users only.
Version 1.9 and up are free for gamers, the debug version can be registered by hobby users.

10 Nov 2013 - version 2.7b
- a22i: prevents unsupported [dest-1] for .pack_lz77 (fixes no$firmware loading)
- help: added caution on unsupported [dest-1] for LZ77UnCompVram bios function
- sav: support for 1024kbyte and 8192kbyte nds flash save memory (both untested)
- sav: dynamically allocates save memory as needed (between 128k and 8192kbyte)
- bugfix: hwreset preserves gba/sav media creation date (got destroyed in v2.7a)
- nds/help: added more nds cartridge rom IDs and nds flash IDs (thanks jimmsu)
- poc/clone: fixed bug in pocketstation bios-clone (added INT_BASE to show_date)
- poc/loader: accepts checksum for newly discovered "J110" BIOS version
- poc/emu: applies 4x4 pre-zoom (less tiny window, avoid StretchDIBits failure)
- poc/help: added notes on BIOS versions (in no$psx help, see there)
- poc/help: added POC-XBOO circuit and sample code for xboo TTY debug messages
- poc/xboo: tty debug window (ascii characters transferred via FUNC3 feature)
- poc/xboo: verify-before-write and skip-if-same (higher lifetime/faster upload)
- poc/xboo: pocketstation upload/download memcard and download bios functions
- nds/help: added basic notes on special ds carts (infrared, nand, microsd slot)
- sound: optional 16bit output (instead of 8bit) (maybe fixes 'noise' problems)
- gui/setup: uses asia-compatible TabControl instead of unreliable PropertySheet

17 Aug 2013 - version 2.7a
- flash: nds games with 8Mbit FLASH memory are KEPT UNSUPPORTED, please identify
  that chips! tools are at
- nds/infrared: fake response AAh to NTR-Ixxx cart SPI cmd 08h (thanks normatt)
- nds/cartloader: forces Rune Factory to use EEPROM 64kbyte (thanks BinarySlave)
- cpu/gba: fixed sram mirror Fxxxxxxh to E00xxxxh (for Croket 2, thanks normatt)
- cartloader: auto-encrypt secure_area (for unencrypted NDS games WITH firmware)
- nds/snd: tweaks BIAS=200h (instead 0) on coldboot; avoid firmware boot scratch
- nds/reset: initialization zerofills more RAM regions and internal registers
- nds/help: added info on nds/dsi gamecodes (ds cartridge header chapter)
- nds/help: added some more newly discovered ROM chip IDs (thanks normatt)
- nds/help: added notes on cartridges with uncommon save memory (nand, microSD)
- bugfix: adjust_addr_edi_gba/poc: removed silly/buggy bit27=0 (thanks kingcom)
- nds/boot: init [27FFC40]=0001 (for newer games) (thanks Exophase and drwhojan)
- nds/boot: init [27FF808,27FF80A,27FF810,27FF860,27FF874,27FF880,27FF884]
- xboo: init [27FF860,27FF868,27FF874,27FF880,27FF884,27FF890,27FFC40,380F980]
- nds/cart: mirrors [romsize*N+0..7FFFh] to [8000h..81FFh] (thanks cheryl)
- dsi/help: started adding basic DSi specs (still far away from completion)
- nds/bios/help: added note on special temp buffer used by Huffman SWI function
- cheats: added cheat function also to debug version (as in gaming version)
- menubar: added recent_files list also to gaming version (as in debug version)
- video: added fullscreen mode in gaming version (black border/without menubar)
- bugfix: fixed arm7 stm writeback for rb=r13..r14 (thanks flubba and dwedit)
- help: added note on texcoord sign+integer+fraction for parameters and result
- soft-detail: clips texcoord transformation results to 16bit (thanks smealum)
- soft-renderer: bugfixed front/back-check for clipped polygons (thanks smealum)

23 May 2013 - version 2.7
- help: updated gbatek standalone version 2.7 (around fifty news since 2.5)
- sizing: added game window sizing support in NDS mode, and in multimachine mode
- multimachine: fixed some bugs on adding/removing additional NDS machines
- dos: fixed destroyed ebx register in memory handle resizing function
- dos: fixed missing nds_color_xlat re-initialization on dos video mode changes
- dos: fixed wrong resolution in 320x200pix mode (emu-vga mov cx,320 for lowres)
- gba/help: added partial gba wireless adapter details
- gba/help: added gameboy player detect/unlock/rumble info (thanks flubba)
- nds/help: added expansion ram detection/unlocking info (thanks rick lick wong)
- gui: created own help engine (instead of microcrap's suicidal windows .hlp)
- gui: added dos/windows help engines to gaming-versions (with short help text)
- internal: uses new overlay engine for help.pak, xmit-nds.pak, pockclon.pak
- removed bg_gif feature (no$gmb relict that was probably never used in no$gba)
- gba/help: added video interlace info (thanks damian yerrik)
- debugmsg: added optional dma-transfer and serial-port (normal mode) logging
- debugmsg: changed debug message window to use nonproportional fixedwidth font
- debugmsg: added new debug I/O ports 4FFFAxxh (alternate to old "mov r12,r12")
- debugmsg/help: added info on no$gba (and ensata) debug pseudo I/O ports
- cpu: supports "blx lr" (both arm and thumb) (used by FF4) (thanks X-0D X-0D)
- cpu: supports 2nd half of thumb-bl-opcode (used by MarioGolfAdvanceTour.gba)
- a22i: fixed thumb add rd,=adr (unsigned 8bit offset, not 7bit with 1bit sign)
- a22i: recognizes thumb add/sub rx,ry as short-form for add/sub rx,rx,ry
- a22i: recognizes thumb labels starting with "b" (were treated as "b{cond}")
- a22i: accepts thumb ldr/str rd,[sp] with omitted zero-immediate offset
- pockstat: emulates sony pocketstation (uses arm cpu too, otherwise offtopic)
- debug: added new emu-detection and string/character-output (via port 4FFFAxxh)
- laptop/controls: backspace disables delays (same as keypad+ on real keyboards)
- nds/wifi: emulates aid_low and aid_full masking, stats masking, stats auto_res
- nds/3d: soft-detail: emulates disp_1dot_depth (if enabled checks all w-coords)
- nds/3d/help: added note that disp_1dot_depth checks all vertices of the poly
- nds/3d/help: added note that disp_1dot_depth is actually a 0dot_depth check
- nds/3d/help: added note that disp_1dot_depth always uses W-coord (not Z-coord)
- nds/3d: stores disp_1dot_depth changes as pseudo gx command in command buffer
- nds/3d: soft-detail: emulates depth_equal tolerance, raised frac_z from 5 to 6
- nds/3d/help: added info on depth_equal tolerance (+/-200h within 24bit range)
- nds/3d/help: added disabled alpha_blend info (size reduction, rgba overwrite)
- nds/3d: soft-detail: reduces size of translucent polys if alpha-blend disabled
- nds/timing-fix: prevents dumbloop-trick on legitimate div/sqrt-busy waitloops
- nds/3d: soft-detail: bypasses alpha-blending when framebuf alpha=0 (rearplane)
- nds/3d: soft-detail: bypasses alpha-blending when master-disabled in disp3dcnt
- nds/3d: soft-accuracy: boxtest uses new soft3d clipping code (for all 6 quads)
- nds/3d/help: added alpha-blending formulas (for blending polygon vs framebuf)
- gba-micro/help: added note on slower 256K main ram (crashes when overclocked)
- gba-micro/help: added case/joypad ascii-arts, mentioned unsupported dmg/cgb
- gba-micro/help: added pinouts for supply/sio/phones/lcd/backlight/powerchips
- nds/3d: soft-detail: supports alpha_test_ref (if enabled) (full range 0..31)
- nds/3d: soft-accuracy: raised div_w resolution from 40000000h/w to FFFFFFFFh/w
- nds/3d/help: corrected alpha_test_ref (hide if below-or-equal) (instead below)
- nds/3d/help: added notes on edge-marking problems (with translucent polygons)
- nds/3d/help: added fog blending formula, added note on fog glitch (1st alpha)
- nds/3d: soft-detail: applies fog when enabled (depth/flag/color/alpha/mode)
- nds/3d: soft-detail: explodes fog_table (only if enabled and only if changed)
- nds/3d: soft-bugfix: fixed transulcent mask (new id only, not new OR old id)
- debug/profiler: fixed crash in the profiler list window (occured in v2.6b)

24 January 2013 - version 2.6b (bugfix) (hll-debug-ver only)
- debug/bugfix: fixed a crash that occured with new demangler (pop without push)

23 January 2008 - version 2.6a
(faster 3d rendering, backup detect, rtc-irq, better texture interpolation,)
(perfectly accurate edge-marking, translucent-poly-id, shadow-poly support,)
(capture in vram display mode, debug gui/warnings, cpu/ipc/div/sqrt details)
- free-download: old no$gba v2.6 gaming version now free for everybody - enjoy
- debug/symbols: resize function for Alt+L symbol list window (saved in .ini)
- debug/internal: changed computer_id handling for compatibility with win vista
- nds/debug: allows nintendo to mis-use clipmtx_result for detecting their emu
- nds/debug: allows to override mis-declared-thumb-functions by crude $t labels
- nds/rtc: triggers IRQ when SI changes HI-to-LO (only when SI-IRQ is enabled)
- hll-version: demangles strange new "_ZN3txt3txtEii" and "_Z3txtii" type labels
- nds/gba/rcnt: allows to generate SI interrupts manually by toggling RCNT bits
- nds/gba/rcnt: internally memorizes rcnt-output bits (additionally to inputs)
- nds/rtc: passes rtc 1Hz/2Hz/4Hz/8Hz/16Hz or per-minute IRQ to rcnt SI input
- nds/3d: soft-speedup: uses clean 80286 shift opcodes (instead slow 80386 shrd)
- nds/3d: soft-speedup: new scaled side_clip_x allowed to re-remove pre_add_mask
- nds/3d: soft-speedup: scaled side_clip_x coords from 0..len to 0..7FFFFFFFh
- nds/3d: soft-accuracy: texture/color interpolation with variable pre_add_mask
- nds/details: emulates all newly discovered ipcfifo/div/sqrt technical details
- nds/help: added tech specs on div/sqrt (readonly results, start/stop timings)
- nds/help: added tech specs on ipcfifo (edge triggered, underrun, fifo-disable)
- nds/help: added user settings 076h (language mask) and header 01Dh (ique flag)
- nds/3d: soft-detail: edge-mark: recurses surrounding depth values (less only)
- nds/3d/help: added more technical notes on edge marking (depth and polygon_id)
- nds/a22i: auto generates chinese crc upon .fix directive (only if version=2)
- nds/help: added info on chinese title in icon/title region (addr/version/crc)
- cpu/internal: reduced 32bit test/and to 8bit (al/bl/cl/dl instead eax/ebx/etc)
- cpu/detail: emulates mis-aligned thumb bx/blx and arm bx/blx (with warning)
- cpu/detail: emulates mis-aligned rd=r15 in arm alu opcodes (thanks jonathan)
- nds/3d/help: added double-blended-edge-glitch (edge-marking plus anti-alias)
- nds/3d/help: added translucent-edge-glitch (edge-marking plus anti-aliasing)
- nds/backup: supports re-detection (games with faulty initial initialization)
- nds/backup: added bus-width auto detection (redirecting to new general types)
- nds/backup: added new types (3x general types) (and 1x sanyo, thanks flubba)
- nds/3d: soft-detail: edge-mark: handles edges at screen border (via clear_id)
- nds/3d: soft-detail: edge-mark: applies edges in respect to surrounding pixels
- nds/3d: soft-detail: edge-mark: internally stores edge_flag for possible edges
- nds/debug: allows some games to initialize not-existing port 4001004h to zero
- nds/debug: allows nintendo to use faulty ldmib with base-inclusion-writeback
- nds/debug: allows nintendo to use invalid stmib/ldmib user bank writeback
- nds/debug: allows nintendo to write more serious nonsense to (R) baseband regs
- nds/timings: re-fixed arm7/arm9 sync (new arm9-66MHz timings vs arm7-33MHz)
- nds/video: supports capture from 2d/3d engine in vram display mode (nanostray)
- nds/help: added note on undoc nds7 port 4001080h (used by ds-lite firmware)
- nds/help: added optical mouse sensor (slider controller) (thanx daniel palmer)
- nds/help: added firmware wifi internet access point settings info (thanks cue)
- nds/help: added user settings 066h (year) and 075h (ext language) (thanks cue)
- screenshot: converts 32bpp images to 24bpp (smaller and more standard files)
- nds/3d: soft-detail: prevents rendering of translucent polys with same poly_id
- nds/3d: soft-detail: supports shadow polygons (mask/render, step 1 and step 2)
- nds/3d: soft-speedup: scaled perspective correct clp.x from 0..len to 0..7FFFh
- nds/3d: soft-speedup: mmx: faster texcoord_clipping (no_repeat,repeat,flipped)
- nds/3d: soft-speedup: pre-calc tex_clip proc, collapsed 32:32 tex_xy to 16:16
- nds/3d: soft-speedup: pre-explodes edge_color_table, optimized alpha blend
- nds/3d: soft-speedup: mmx: processes two rgba-pairs and tex_xy-pairs at once
- nds/3d: soft-speedup: mmx: nonlinear color_rgb and texcoord_xy interpolation
- nds/3d: soft-detail: stores fog bit in framebuffer (opaque/trans=replace/and)
- nds/3d: soft-speedup: mmx: linear color_rgb and texcoord_xy interpolation
- nds/3d: soft-speedup: merged texture addressing and blending into single proc
- nds/3d: soft-speedup: mmx: faster texture blending (modulate/toon/highlight)
- nds/3d: soft-speedup: pre-calculates soft3d_tex_blend_proc for blendtype/mmx
- nds/3d: soft-speedup: uses mmx (if present) (otherwise stays 80386 compatible)
- nds/3d: soft-speedup: collapsed scanline_rgba from 32:32:32:32 to 8:8:8:8 bits
- detect: added no$gmb-386/486/cpuid detection, internal: rdtsc (3d/re selftest)

18 December 2007 - version 2.6
- nds/3d: soft-renderer: uses fast linear color/texture interpolation when w1=w2
- nds/3d: soft-renderer: supports perspective-correct texture (eg. eragon/demo)
- nds/3d: soft-renderer: supports perspective-correct rgb color interpolation
- nds/3d: soft-renderer: picks correct vertex/color/attributes on 1dot polygons
- nds/3d: soft-renderer: prevents polys at existing/possible x1=256 (off-screen)
- nds/3d: soft-renderer: allows bigger than possible rear-depth (clubhouse dart)
- nds/3d/debug: vram viewer correctly shows swap buffers as 1st command in tree
- nds/3d/help: added note on situations where lower/right edges are excluded
- nds/3d/help: anti-aliasing doesn't work with (opaque) lines and wire-frames
- nds/3d/help: anti-aliasing isn't used on edge-marked polys/lines/wire-frames
- nds/3d/help: swap_buffers parameters are applied on the FOLLOWING gxcommands
- nds/3d/help: swap_buffers does NOT copy re-ports (disp3dcnt/toon_table/etc)
- nds/3d: soft-renderer: supports w-buffering (games with reversed z working)
- nds/3d/help: confirmed guessed texture slot locations for rear-plane bitmaps
- nds/3d: soft-renderer: allows dots on lower/right clip-boundary (off-viewport)
- nds/3d: soft-renderer: prevents polys at y1=192 or y1=negative (off-screen)
- nds/3d: soft-renderer: handles faulty viewports (exceeding 192 scanlines)
- nds/3d: re-renders old frame on master changes (disp3dcnt or port 330h..3BFh)
- nds/3d: soft-renderer: discards correct vertex of invalid twisted |X| quads
- nds/3d: soft-renderer: emulates edge-marking (edge_color, opaque, polygon_id)
- nds/3d: soft-renderer: emulates correct size of line-segments and wire-frames
- nds/3d: soft-renderer: emulates correct size of edge-marked polygons
- nds/3d: soft-renderer: emulates correct size of translucent and opaque polys
- nds/3d: soft-renderer: enulates inwards/outwards/left/right/front/back edges
- nds/3d: soft-renderer: emulates steep, flat, vertical, horizontal edges
- nds/3d: soft-renderer: emulates correct rounding of screen coordinates
- nds/3d: supports direct capture from 3d engine (instead from engine a only)
- nds/2d/bugfixes: inits engine b on reset, fixed engine b base in vram viewer
- nds/3d: opengl: internally breaks all polygon strips to separate polygons
- nds/3d: buffers translucent polys, and renders them later (after opaque polys)
- nds/3d/help: corrected polygon_attr.bit11 (affects pixels, not whole polygons)
- nds/3d: soft-renderer: stores alpha in framebuf (unlike evil generic opengl)
- nds/3d/help: added description on clamped textures (clips to minmax 0,siz-1)
- nds/3d: soft-renderer: supports texture clamp, repeat, and flip-repeat modes
- nds/3d: soft-renderer: clips texcoord (only if needed; point1 or point2>max)
- nds/3d: soft-renderer: supports toon table (and skips green/blue calculations)
- nds/3d: soft-renderer: does texture blending (modulation,decal,toon,highlight)
- nds/3d: soft-renderer: explodes texture bitmap and renders texture by texcoord
- nds/3d: emulates polygon_attr having no effect until next begin_vtxs command
- nds/3d: soft-renderer: renderer uses linear (quick'n'dirty) color/texcoord
- nds/3d: soft-renderer: interpolates color and texcoord (if any) on rendering
- nds/3d: soft-renderer: interpolates color and texcoord (if any) on clipping
- nds/3d: allocates/stores color/texcoord/screencoord in each buffered vtx-entry
- nds/3d: soft-renderer: re-ensures range after clipping (for rounding errors)
- nds/3d: vram viewer: fixed 4x4 texel texture mode1 crash (missing pusha/popa)
- nds/3d: soft-renderer: optional depth_update for translucent polys (less only)
- nds/3d: soft-renderer: optional depth_less or depth_equal rendering condition
- nds/3d: soft-renderer: interpolates depth (z) horizontally and vertically
- nds/3d: soft-renderer: initializes rear-plane rgba,depth,etc (blank or bitmap)
- nds/3d: soft-renderer: front/back/linesegment check (on first three vertices)
- nds/3d: soft-renderer: hides far-plane-intersecting (if enabled in poly_attr)
- nds/3d: soft-renderer: clips polygons to all six sides of the view-volume
- web/paypal: added an evil "donate 2.50 and download newest version" button
- dos: due to the soft-renderer, dos version is now fully supporting 3d video
- a22i: added LO (usingned lower) as alias for CC (carry clear) (thanks niels)

20 November 2007 - version 2.5c
- nds/3d: vram viewer: stable handling of old-tree messages (after new reload)
- nds/bios: 80x86 bios clone supports thumb-mode irq handler (nds9/arm v5 only)
- webpage: added two nds 3d viewer screenshots, and a nds-wlan-iomap screenshot
- wifi/debug/cleanup: rearranged/fixed/renamed wlan registers in i/o map window
- menubar: added (and donate.htm) hyperlinks in help topic of menubar
- nds/3d: vram viewer: hides the laser pointer for non-vtx/non-postest commands
- nds/cheats: fixed last some bytes of action replay code 0Eh (thanks hiei)
- nds/3d: vram viewer: laser outlines for polygon(s) of selected begin_vtxs
- nds/3d: vram viewer: laser pointer shows cube-outlines for boxtest command
- nds/3d: vram viewer: ignores vtx_end cmd (reduces amount of tree root entries)
- cpu/detail: emulates ignored writeback on ldrh rd,[rd],imm (thanks kenobi)
- nds/3d: vram viewer: laser pointer for pos_test command (as for vtx commands)
- nds/3d: emulates internal vtx coordinates being overwritten by pos_test cmd
- nds/3d/help: added caution on pos_test (overwrites internal vtx coordinates)
- nds/3d: vram viewer: shows viewport rectangle (by red lines drawn on screen)
- nds/3d: vram viewer: allows to resize tree-view vertically (y2 bottom-aligned)
- nds/3d: vram viewer: laser arrow: shows corresponding numeric screen x,y,depth
- nds/3d: supports 3d vs 2d alpha blending (if supported by local opengl driver)
- nds/3d: temporarily halts arm9-cpu upon gxfifo-overkill (fixes main_siz error)
- nds/cartloader: accepts faulty homebrew logo crc (warning if other than CF56h)
- nds/debug: vram viewer fixed crash in guess-tile-usage for 2D tile screens
- nds/video: aligned empty_vram (crashed unallocated text scroll) (thanks m m)
- nds/3d/debug/speedup: setredraw=0 when reloading 3d viewer tree (thanks peter)
- gba/nds/video/speedup: precalculates eva/evb/evy parameters per scanline

03 November 2007 - version 2.5b
- nds/3d/debug: vram viewer auto-updates 3d tree view (if any) during emulation
- nds/3d/debug: defaults to disable old/slow 3d debugmsg's (instead vram viewer)
- nds/3d/mtx: removed v2.5 z-rounding trick, allows to change projection per vtx
- nds/3d/mtx: gl_projection set to identity (but max depth +1.0 instead +0.99)
- nds/3d/mtx: all matrix math done by software without using any opengl matrices
- nds/spi: allows to deselect/disable spi bus without clearing the hold-bit
- nds/3d/debug: vram viewer displays texture bitmap for currently selected vtx
- nds/3d/debug: vram viewer draws laser arrow from screen-center to selected vtx
- nds/3d/debug: vram viewer indicates unused lights and color tables by red line
- nds/3d/debug: vram viewer shows color/material/shininess/etc for selected vtx
- nds/wifi/help: added port 24Ch/24Eh/250h, 264h/270h, 2A4h/2C4h, 2C8h/2CCh info
- nds/3d/speedup/frameskip: renders 3d only when needed (capture and video out)
- nds/3d/speedup: position vectors multiply only 3x4 matrix (and add 1x4 * w=1)
- nds/3d/speedup: directional vectors use 3x3 matrix maths (instead slow 4x4)
- nds/key1/help: renamed crypt_up/down (actually encrypt/decrypt) (thanks simon)
- nds/3d/stage2/buf: all 3d rendering/lighting/vtxmaths performed from buffer
- nds/3d/multi: uses a single opengl context shared (and working) for multiplay
- nds/3d/internal: internally translates gx commands 0..255 to ID codes 0..38
- nds/wifi/help: added W_TX_HDR_CNT port 194h bit0,1,2 info (thanks Tim Seidel)
- nds/3d/debug: added new 3d page to vram viewer, treeview for buffered commands
- nds/3d/buf: stores initial frame settings, reallocs larger buffer when needed
- nds/3d/buf: stores commands with original params, and results on each mtx cmd
- nds/3d/buf: buffers all gx commands (for future frameskip and for vram viewer)
- nds/3d/deguglog: appends current matrix_mode as comment to all matrix commands
- nds/3d/softlight: fixed shininess_table index (7bit index = 8bit data div 2)
- nds/wifi: emulates 0000h-to-094h-to-098h, and reset-098h.bit15-via-0B4h.Bit6
- nds/wifi/help: added 1D0h..1DFh info, added notes on body[2] instead txhdr[2]
- nds/wifi/help: confirmed 0B4h.Bit6, added 030h.Bit7, added info on 094h/098h
- nds/wifi/help: removed incorrect/unconfirmed rxbuf_begin/end-latching-info
- nds/wifi/help: added txhdr[2], port[0C0h], port[0C4h], renamed EXTRA to CMD
- nds/wifi/help: renamed W_RXUNITS to W_RXTX_ADDR and moved it to status chapter
- nds/wifi/help: added notes on registers affected by powerforce (and by irq13)
- nds/wifi: reflects powerforce to rf_status (unreported pictochat-lite problem)
- cpu/debug: replaced invalid tmb high-opcode error message by optional warning
- cpu/debug: disassembler shows invalid high-opcodes as such (thanks vladimir)
- cpu: emulates invalid add/mov/cmp thumb high-opcodes-without-high-registers
- joysticks: fixed unstable vint_inputs code (occassionallly skipped joysticks)
- nds/wifi/dslite: debug-iomap recognizes channel-number for type3 RF registers
- nds/wifi/dslite: emulates type3 RF registers (reading, writing, and initial)
- nds/wifi: emulates reading from RF chip, emulates initial power-on RF values
- nds/wifi/help: added RF2958 (aka RF9008) datasheet info (thanks Tim Seidel)

04 October 2007 - version 2.5a
- debug: fixed @@resolve_clks bug (new timings crashed the clock cycle comments)

04 October 2007 - version 2.5
- help: updated gbatek standalone version 2.5 (about one hundred news since 2.3)
- vram viewer: supports extended palettes in bg map windows (eg. magnetica demo)
- nds/help: added ds 3d overview chapter (basics on geometry/rendering engines)
- nds/help: added ds technical data chapter (containing some basic overview)
- nds/help: replaced ds various chapter by new ds memory control/timing chapter
- nds/sound: fixed major unreported bug in 80x86 code sound_bias SWI function
- nds/3d/help: corrected shininess formula (ie. fixed that max cos 2 angle mess)
- nds/3d/help: added caution: specular reflection WON'T WORK on camera rotation
- nds/3d/help: maths basics of vector-by-vector multiply (and purposes thereof)
- nds/3d/softlight: allows light+color nonsense double def (eg castlevania clip)
- nds/3d/softlight: much better light-accuracy, and now supports shininess_table
- nds/3d/softlight: lighting fully calculated by software (without opengl light)
- nds/timing: split timings for nds7 (fast access) and trashy nds9 (slow access)
- nds/timing: split addr_clks_table to CODE/DATA addr_clkc_table/addr_clkd_table
- nds/timing: emulates "half" cycles on 66MHz/nds9 (tcm/cache and n32/2 thumb)
- nds/timing: emulates nds7 exmemstat gba-slot timing bits (like nds9 exmemcnt)
- nds/timing/help: added detailed/tested nds7/nds9 code/data memory-timing chart
- nds/timing/cache: allows more CPU load on bios/mainram when cache is enabled
- nds/timing: emulates shared N32 access time for two NDS9 thumb 16bit opcodes
- cpu/speedup: precalculates opcode-timings on interseg-jumps (usually faster)
- cpu/speedup: faster conditional opcode handling (maybe yet another 3% faster)
- cpu/speedup: thumb: uses 16bit reads (3% faster on non-32bit-aligned addr's)
- cpu/speedup: replaced dumb jmp exec_opcode by exec_opcode_mac (ca. 10% faster)
- cpu/speedup: added more code alignments in cpu-core (not significantly faster)
- nds/help: added note that 66MHz-nds9 actually runs MUCH SLOWER than 33MHz-nds7
- nds/cpu: emulates superslow nds9 memory access time (bios,wram,vram,oam,etc)
- nds/cpu: emulates operand-independend ARM9 multiply time (eg. slow thumb time)
- nds/wram: emulates wramcnt mapping (no idea if it's used by any games though)
- nds/3d: adjusted z-rounding (avoid opengl-clip-plane in club house games demo)
- cpu: emulates cp15-trace-id, debug: disass auto-comments on trace-id and bist
- nds/help: fixed key1 [scratch] writeback lsw/msw are exchanged (thanks simon)
- nds/help: cp15 info on trace-id, bist, cache debug/test, supported cache cmds
- cheat: fixed occassional crash on delete cheat (push/pop) (thanks Hiei Youkai)
- thanks: rockmanrotties for submarine (timing) and clubhouse (clip) bugreports

17 September 2007 - version 2.4f
- cheat: fixed conditional counter for cbds parameter lines (thanks Hiei Youkai)
- cheat: raised strnlen to 5kbytes for about 256 codes/line (thanks Hiei Youkai)
- nds/gba/help: added info on unknown add-ons (gba ir/wifi and nds memory exp)
- nds/help: added info on ds rumble option paks (thanks bottledlight ds wiki)
- gba/help: added some very basic info about the gameboy player (thanks flubba)
- gui: allows to resize debugmsg/cheat/fileslst windows (with anchored buttons)
- gba/help: added yoshi x/y-axis info (thanks flubba) (still incomplete though)
- gba/help: added warioware z-axis gyro info (thanks momo vampire for the cart)
- gba/help: added rumble and fram info (thanks momo vampire for warioware cart)
- gba/help: added notes on special meaning of 1st (and 4th) letter of gamecode
- nds/3d: emulates alpha blending master enable/test mode bit (disp3dcnt.bit3)
- gba/memfill: fixed memfill code (data step/repeat count) (thanks Hiei Youkai)
- nds/cheat: removed various ARDS checks (accepting addr with unknown offsets)
- gba/nds: corrected hblank durations (thanks sebastien), no-vblank in lastline
- gba/nds/help: notes on hblank=0 duration (1006/1606/1613 on gba/nds9/nds7)
- gba/nds/help: notes on no-vblank-flag in last line, and hblank in ALL lines
- nds/cheat: removed alignment check for [[X]+Z] (works with uninitialized [X])
- nds/cheat: changed ARDS enable-code detection (9 lines with specific 4th/9th)
- multi-cpu-timing: machine_switch_request processed AFTER all event_handlers
- nds/3d: emulates texture master enable bit in disp3dcnt (thanks peter schraut)
- nds/3d: emulates material-alpha (rather than only color-alpha) (thanks peter)
- nds: emulates hinge/unfold irq (additionally to hinge status) (thanks antonio)

03 September 2007 - version 2.4e
- nds/3d: internal diag screen shows used opengl driver vendor/renderer/version
- nds: emulates hinge folded/closed (game window wm_poschanged/isiconic check)
- gba/cheat: fixed some unreported bugs, help: added some missing decrypt info
- nds/cheat: supports actionreplay/codebreaker codes (freeware/gaming ver only)
- nds/help: actionreplay/codebreaker specs (thanks kenobi and dualscreenman)
- nds/help: added info on changing key2 seed (romctrl.15) (thanks chishm/idea)

21 August 2007 - version 2.4d
- debug/setup: allows to enable/disable user-debugmsg, wifi-log, and 3d-log
- cpu: emulates undef opcode/copro exception (with warning if no bios/vector=0)
- wifi/emu: emulates new bits in rx header, and optional auto sequence control
- cpu/bugfix: arm ldm/stm accidently destroyed mis-alignments (on writeback)
- wifi/help: added info on port 1C4h, and on some of the 1Bxh ports (rxstat's)
- wifi/help: added new chapter on transmit errors and automatic ACK responses
- wifi/help: added info on ports 1A8h,1AAh,1ACh,1AEh (bit0..12 vs. 1B0h..1BFh)
- wifi/help: discovered new bits in RX header, added notes on MAC addresses
- wifi/debug: allows to log all packets (with automatic comments on ieee header)
- wifi/help: added notes on automatic sequence ctrl and auto-modified frame ctrl
- wifi/emu: tx-engine uses new timers, and emulates length/rate/preamble timing
- wifi/emu: emulates the various wifi counters and irqs at correct timing
- debug/setup: memorizes if iomap window was open (if so, re-opens it on boot)
- debug/emustop: break_requests (esc-key) take place only on current machine
- debug/internal: replaced ds:bibos swi_retadr/haltstop/intrwait by vals:bios
- debug/vramviewer: oam viewer supports extended obj palettes (thanks pierre)
- debug/vramviewer: fixed engine-B palette viewer (thanks pierre for bug report)
- dslite/help: added info on new TSC chip by AKM (new IN2, different PD bits)
- dslite/help: added note on near-crt-quality colors and wider viewing angles
- dslite/help: added custom change-channels-flowchart for new wifi-type3-chips
- dslite/help: added settings at firmware[0CEh-and-up] for new wifi-type3-chips
- dslite/xboo: updated nds-pins.gif (added new pin-positions on ds-lite board)
- dslite/xboo: added 8 extra diodes in data lines (to prevent power-on problem)
- dslite/help: added lite-specific wifi (W) mirrors, and unused wifi ram/ports
- dslite/help: added the new backlight level bits in firmware user settings
- dslite/help: added caution on DS-lite destroying wifi ports 064h and 076h
- dslite/help: added new powerman backlight/power register (and lost mute-bit)
- dslite/help: added ID for firmare chip 35PE20P (and supported it in ds-xboo)
- powerman/help: added unknown bit (mutes volume to zero, if amplifier is on)
- wifi/emu: emulates initial wifi-port settings and random register (mod 5FDh)
- wifi/emu: emulates primary wifi irq flag stuck zero while secondary nonzero
- wifi/emu: emulates corrected ports (004h,0ACh,0AEh,0B0h,0B4h)
- wifi/emu: emulates new ports (210h, 05Ch/06Ch, 062h/064h) and new mirrors
- wifi/help: added rx/tx signal/timing charts (rfu pins, aka 19Ch bits)
- wifi/help: added specs/cautions on primary wifi irq flag (2000214h.Bit24)
- wifi/help: added new mirrors (on read from 0ACh,0AEh,20Ch,21Ch,298h,2A8h,2B0h)
- wifi/help: added notes/info on ports 038h,19Ch,214h,21Ch and on W_CONFIG_140h
- wifi/help: new bits 0EAh.1,008h.13/14 004h.14); extra-TX ports 118h,0EEh,090h
- wifi/help: corrected ports 004h,0ACh,0AEh,0B0h,0B4h and txstat.bit12-13
- wifi/help: added info on new ports (110h, 210h, 05Ch/06Ch, 062h/064h)
- wifi/help: fixed tx_hdr: rate 8bit (not 16bit) defaults to 1Mbit/s if invalid
- wifi/help: added new bits: port004h.bit0 tx_master, 008h.bit15 beacon_irq1
- wifi/help: major updates in timers chapter (reloads, IRQ13/14/15, 22MHz, etc)
- nds/help: pinouts for nds LCD sockets, wifi RFU boards, and powerman chips
- gui: mousewheel support (win98 or dos/ctmouse) (thanks jasper/idea, tilo/hw)

01 July 2007 - version 2.4c
- web: updated (with NDS and e-Reader source) (additionally to GBA)
- web: uploaded hotmail.htm (hotmail is deleting ALL emails that I am sending)
- web: updated package (using new bmp/raw/bin/ori/plus directives)
- ereader/a22i/japan: uses 8bit/16bit charset depending on invalid 8bit chars
- ereader/help: notes on non-vpk mode, and on z80-wait-opcodes, 5bit-card types
- ereader/a22i/jap/ori: inserts dummy-sub-titles, and z80-stub to start gba-code
- ereader/a22i: .ereader_create_bmp/raw/bin .ereader_japan_ori/plus directives
- debug: supports vert_splitter for code/stack sizing (instead outer-edges only)
- ereader/loader: supports multi/single .raw/.bin files (auto-converted to bmp)
- no$fmw: fixed dtcm/pal/oam zerofill init (memory wasn't mapped/enabled there)
- gui: added OFN_ENABLESIZING to all filemenues (win98 and up; ignored by win95)
- ereader/a22i: also creates RAW dotcode (multi-strip) (all strips in 1 file)
- debug: adjusts small-gamescreen size in nds-mode (256x192 instead of 240x160)
- bios-clone: 80x86-mode redirects nds-callback/gba-sound to rom-image (if any)
- gui: defaults .hlp window-width to correct 80 columns (not more, not less)

05 June 2007 - version 2.4b
- ereader/demo's: uploaded (with magicflr, rotris, camera, bombswp)
- nds/sound: bugfix: fixed snd crash on mul1.5 speed (thanks Giuseppe Marletta)
- bios-clone: bugfix: gba/nds intrwait set IME=1 (eg. japanese/original ereader)
- ereader/a22i: vpk compression, good tree values, auto-method1/0 for gba/nes
- ereader/emu: automatically loads next strip, automatically extracts red-layer
- ereader/emu: supports homebrew 300dpi .bmp's and scanned 1200dpi .jpg's
- ereader/emu: emulates ereader hardware (requires ereader bios/bmp/jpg files)
- ereader/a22i: new .ereader and .title directive, handles .import'ed .nes roms
- ereader/help: added verify/create error correction (thanks Simon Rockliff)
- ereader/help: added dotcode, data, program, vpk chapters (thanks Damien Good)
- ereader/help: rev'ed PGA I/O ports, camera SIO ports, address bar encryption
- debug: shows "BiosSwi/IrqHandler" labels also for ARM9 (with offset FFFF0000h)
- bios/help: corrected bios-swi huffman description and added an example to it
- bios: improved bios-swi huffman decoder (straighter, smaller, and faster)
- xed: fixed occasional crashes on ctrl,k+n (missing reform in toggle_blocktype)
- wifi: emulates microsecond counter read/change/start/stop
- wifi: emulates data transfer from local txbuf to rxbuf of remote console(s)
- wifi/help: added chapters on the various ieee802.11b frame (=packet) formats
- wifi/help: added notes on multiboot beacons (and multicart/pictochat beacons)
- wifi/help: added notes on transfer completion flags in txbuf_loc registers
- wifi/help: added new values in hardware headers chapter, added unknown chapter
- wifi/help: added a lot of new bits and registers in transmit control chapter
- wifi/help: marked all "unused" registers as w_internal (=not used by firmware)
- wifi: emulates ie/if registers, emulates pending powerforce with powerack
- wifi/debug: displays wifi registers (and current channel) in I/O map window
- wifi/help: added chapters on ieee802.11 frames, renamed rxbuf/txbuf registers
- wifi: fixed rf write, emulates powerforce=8001h (over the hedge)

04 April 2007 - version 2.4a
- nds/help: added nds-lite case/joypad ascii arts, and nds-lite supply pinout
- spam: nocash-lite was posted online - new addresses in email.htm or about-box
- nds/3d: forces instant new gxfifo irq (if any) on attempt to acknowlege it
- nds/sound: fixed output to sample.wav script file (for diagnostics purposes)
- nds/adpcm: emulates nds-rounding-error, uses fast-pre-multiplied adpcm tables
- nds/adpcm: fixed clipping-bug in no$gba, and emulates real nds-clipping-error
- nds/sound/help: added more ima-adpcm notes (rounding-error and clipping-error)
- stat: performance indicator counts frames on nds9 only (=60Hz) (instead 120Hz)
- nds/tsc/debug: displays all tsc channel values in io-map (touchscr, mic, etc.)
- nds/tsc: prevents penirq if disabled, penirq more in sync with tsc-adc values
- nds/3d: drains gxfifo before gxfifo dma (fixes mariokart/downhill slowdowns)
- nds/3d: forces DepthMask=1 on ClearDepth (if it was 0 from translucent/attr)
- nds/firmware: applies different mac addr to each machine with wifi-crc adjust
- nds/firmware: forces def.fmw/wifi header (if firmware.bin missing) (downhill)
- nds/firmware: forces user settings [65h]=FCh=good (if firmware.bin missing)
- nds/firmware: fixed touchscreen/calib screen coords origin 1,1 (instead 0,0)
- nds/dos/3d: translates by w, recurses current viewport x1/y1 and width/height

21 March 2007 - version 2.4
- xboo: retested all xboo functions, re-fixed gba-bios dump, faster nds-download
- nds/2d: fixed crash on empty/unallocated extended-obj-palette-slot (spiderman)
- nds/3d/help: added various important notes in polygon light parameters chapter
- nds/3d: recurses directional matrix (as on real nds, instead of gl_normalize)
- nds/3d: skinning support (by soft_mul_vector, instead opengl modelview matrix)
- nds/cart/help: added new info on first 2K of secure area (fixed bytes, crc16)
- nds/gba/xboo: includes cmd/length in checksums (rather than raw data-checksum)
- nds/xboo: get_info shows nds-backup type (chip-id and status-register bits)
- nds/2d: fixed unrotated 512x256/512x512 bitmap sizes (thanks Kevin Keeling)
- nds/dma: prevents dma from accessing tcm (for compatibility with downhill jam)
- nds/xboo: added download NDS-cart from NDS-slot (slow 2 megabytes per minute)
- nds/gba/xboo: splits downloads into small blocks (with block-retry on bad crc)
- nds/cartloader: also accepts already-decrypted-and-destroyed secure-area-id's
- gba/undoc/help: added newly discovered wram-disable bits (4000800h bits 0,5)
- nds/cart: emulates correct nds chip-id size-field in respect to rom-image size
- nds/cart/help: added note on nds-cart chip-id size field (nn+1 megabytes)
- nds/screenshot: supports dual 256x192pix screens (as simple 256x384 bitmap)
- nds/3d: supports keep-old-depth-setting for translucent-polygons (DepthMask)
- nds/3d/rear: supports rear-plane rgba/depth bitmap (killer slow when/if used)
- nds/3d/io: new 8bit write support, fixed 16bit write (accidently out_32_norm)

23 February 2007 - version 2.3d
- nds/video/help: added note on unknown tvoutcnt register (nds9 port 4000070h)
- nds/sio/help: added chapter on (absent) link port (with new bits like ckup)
- nds/aux/help: added full gba and gba-sp cpu/lcd/chipset pinouts (from no$gmb)
- nds/aux/help: added SG and SW pins (gba-sp/nds headphone socket) (from no$gmb)
- nds/3d/help: added projection/rotation/scaling/translation matrix examples
- nds/3d/help: added edge marking notes, alpha_test_ref notes, and fog notes
- nds/3d/help: added new shadow polygon chapter, and added toon table notes
- nds/3d: skips vtx's of (still unsupported) shadow polygons (avoid eragon dirt)
- nds/3d: speedup: re-creates textures only if teximage_param/pltt_base changed
- nds/3d: speedup: mtx_mul_4x3/3x3/trans/scale skips fixed values (ie. 0 and 1)
- nds/sound: init [sb_pos_in_buf_in_clk_cycles]=0 (avoids fatal 'e-2' on reset)
- nds/3d: supports packed-texture-mode3 (mul3+mul5=div8) (eragon/mariokart demo)
- nds/microphone: emulates mircophone gain level (powerman reg3 = x1 x2 x4 x8)
- nds/microphone: wave_in-dma activated only if/as long as enabled in powerman
- nds/microphone: forwards PC mic-in/line-in to nds-microphone (player 1 only)
- nds/microphone: emulates muted mic-level (for mic-powerman off=000h, on=800h)
- dos/nds: supports nds-video (256x192) (dual-screen) (forced 640x480 onepix)
- dos: dpmi redirects dos32_int10 to dpmi_interrupt_10h (fixes win98 xgra-crash)
- dos: uses int2fh/1680h under dpmi (not actually supported by cwsdpmi/win98)
- dos: prevents hlt-opcode under dpmi (hlt crashed cwsdpmi, ignored by win98)
- initialize: corrected @@zero_fill_vals length (caused crash in dos version)

04 February 2007 - version 2.3c
- nds/2d: adjusted window width (nds=256, instead gba=240) (famicom wars demo)
- nds/memory: allows to execute code in vram (used by mariokart demo on nds7)
- iomap: replaced various "vals" by "io10seg" (matching to nds9/nds7 pages)
- nds/wifi/xcept: allows nintendo to write 00h/55h/AAh/FFh to read-only BB-ports
- nds/3d/irq: emulates gxfifo irq (used by lara/brainage demos)
- nds/3d/help: added notes on how/when to acknowledge gxfifo irq (see gxstat)
- nds/3d/dma: emulates gxfifo dma (used by submarine demo and possibly others)
- nds/dma: renamed/renumbered $profiler_id_dma (supporting the eight ds-modes)
- nds/3d/help: added GXFIFO DMA Overkill on Packed Commands Without Parameters
- setup: added gba-solar-sensor setting (now also in freeware version setup)
- setup: removed experimental rear-alpha option (tested / always enabled now)
- nds/backup: bugfix: forces no nds-backup in gba-mode (fixes fatalunexpected)
- nds/xboo: added upload-wait/timeout (for remote secure_area_extra_decryption)
- nds/dma: prevents gba-style dma3-capture on nds (fixes submarine demo freeze)
- nds/dma: simplified different dma mode bits by dma_kick_mask at mount_system
- nds/3d/help: added 3d-lockup note (on swapbuffers with incomplete vertex list)
- a22i: supports "NOT" operator (more or less, crashes on faulty priority order)
- a22i/bugfix: long/negative multiply in numeric expression (swapped lsw2/msw2)
- nds/3d: handles 8bit ldrb reads from 3d ports (4000320h and up)
- gba/nds-cartloader: fixed crash on loading GBA-carts from inside NDS7-mode
- thanks: RockmanRotties and Diablow for bugreports on demos and fatalunexpected

20 January 2007 - version 2.3b
- gba/snd: snd_on_off 60h-81h non-writeable while disabled with optional warning
- gba/snd: fixed snd_on_off (resets only 60h-81h, not 82h-83h) (thanks ludvig)
- gba/help: described nr52/snd_on_off affected registers (60h-81h reset to zero)
- gba/help: added noise random generator specs (gba psg channel 4, poly counter)
- snap/sav: uses new "save_chunks" function (instead separate snapdat_write's)
- snap/sav: RLU-encoder/decoder supports long-same regions (code 80h dta8 len16)
- snap/sav-loader: re-allows old/smaller 64K sram/liff blocks (pre 128K flash)
- snap/sav-loader: raised gba-max liff/sram_siz for to 128K (for new FLASH type)
- snap/sav-loader: replaced fixed "liff/sram_siz" by variable "memsiz_sram/liff"
- snap/sav-loader: skips unknown blocks by file-entry (rather by expected entry)
- gba/help: new Backup IDs chapter (library ID strings, thanks pocketheaven faq)
- gba/backup: detects 128kbyte FLASH backup (reportedly uses ID "FLASH1M_Vnnn")
- gba/backup: emulates bankswitched 128kbyte FLASH backup memory (not tested)
- gba/add-on: emulates gba solar sensor (currently fixed level) (boktai, momov)
- gba/add-on: emulates gba-cart real time clock (rtc) (boktai, thanks momov)
- gba/multiplay: refixed slave machine bios-loading (missing v2.2 mount_system)
- nds/sound: precalculates sample rate timing (for some/minor emulation speedup)
- nds/backup/help: added description of the new eeprom/flash/fram backup types
- nds/backup: new: None, EEPROM 8K, EEPROM 64K, FLASH 256K, FLASH 512K, FRAM 32K
- nds/3d: uses pixelformat with alpha (if supported, ie. not by generic driver)
- nds/3d: above alpha untested - disabled by default - see setup: 3D Rear Alpha
- nds/3d: added warning on 3D access with powcnt bit2-3 disabled (thanks anders)
- nds/snd: fixed hang-up on uninitialized sound frequency (thanks damian yerrik)
- nds/3d: loads opengl on any opengl-call (not only on swap buffers) (anders)
- cpu/help: added notes on mis-aligned ldrd/strd (cpu memory alignments chapter)
- cpu/detail: emulates mis-aligned ldrd/strd (clips lower 2 bits) (not 3 bits)
- cpu/bugfix: fixed ldrd/strd bugged alignment warning (thanks anders norlander)
- winxp/xboo: nocashio install bugfix: added "system32\" in CreateService param
- winxp: supports Alt+key combinations (VK_LMENU instead of unsupported VK_MENU)
- internal: sorted/re-arranged nds variables (for future nds snapshot support)
- setup: changed color/depth settings: re-applies nds_color_xlat (backlights)
- web/paypal: fixed missing CRLF between "=" / "-----END PKC" (thanks francesco)
- nds/directboot: puts nds7_bios_crc and user_settings_base in RAM (as by BIOS)
- nds/3d: cleanup: unloads opengl library (if loaded) on exit
- nds/3d: uses win31-style upside-down-images (required for nvidia geforce)
- nds/help: new chapter on accessing gba-slot/gba-carts in ds-mode (clks/addr)
- gba/help: new chapter on gba cart real time clock (rtc) (used in boktai)
- gba/help: new chapter on gba cart solar sensor (boktai, thanks momov for cart)
- gba/help: new chapter on gba cart rom-chip 4bit io port (used in boktai)
- gba/help: added backup eeprom chip names 9853 (mario), and 9854 (boktai)
- nds/directboot: stores RomChipID in RAM (as by BIOS) (verified by newer games)
- nds/bugfix: hwreset memclear includes nds7 I/O region (older version didn't)
- gba/help: added note on ZERO-padded titles in cart-header (eg. in boktai)
- gba/help: fixed joybus entrypoint in gba-cart-header summary (E0h instead E4h)

4th November 2006 - version 2.3a
- nds/help: nds-bitmaps can be wrapped (that unlike gba-bitmaps) (thanks remi)
- nds/video: emulates optional wrap-around (area overflow) for nds bitmap-modes
- nds/video: emulates read-only 2d-engine-b ports as read-only (thanks remi)
- nds/3d: texture transformation mode 1 supports negative m[8,9,12,13] values
- nds/3d/boxtest: fast onscreen pre_check on any of all 8 coordinates of box
- nds/3d/boxtest: fast offscreen pre_check on all 8 coordinates of whole-box
- nds/3d/boxtest: fast offscreen pre_check on all 4 coordinates of box-face
- video/speedup: faster bg drawing when special effects disabled (blend/bright)
- reg/home: moved all users to usa, avoids paypal-german-language-service (remi)
- reg/full: new parity and decrypt.jpg encryption by headless marching soldiers
- reg/full: discontinued free nds-updates for older (than 12 months) gba-users
- reg/full: registration tool auto-generates invoices for commercial users
- reg/home: new file-ext .key (some servers now declare .bin as potential virus)
- sync: forces machine_switch on retrace, forces to be 1st machine after retrace
- gui/f1_key: HELP_FORCEFILE instead HELP_CONTENTS (preserves current chapter)
- webpage: added donate buttons on gba,msx,cpc,nes,2k6,zx8,c64 freeware pages
- email: new email address - please do NOT put it online - due to spam problems
- nds/3d: bug-fixed GX "nop" command (to have 0 parameters, instead 1 parameter)
- emu/help: described + emulated gba/nds7 dummy cp14-icebreaker (prefetch data)
- nds/cpu: emulates cp15 ctrl bit15 (pre-v5 ldr/ldm/pop pc.bit0=thumb disabled)
- cpu: emulates/ignores misaligned r15 in LDM [Rb],r15 (with optional warning)
- nds/help: added some basic specs on DS Memory Timings (in DS Various chapter)
- nds/3d: bugfixed texture transform (imul_op=64bit, instead imul_eax,op=32bit)
- cpu: emulates empty rlist (load/store r15 on ARMv4, Rb=Rb+/-40h on ARMv4/v5)
- cpu: emulates writeback-base-included-in-rlist (for all stm/ldm/v4/v5/tmb/arm)
- cpu/help: added info on invalid rlist's for ARMv4/v5 THUMB/ARM LDM/STM opcodes
- cpu: bugfixed arm9 q(d)add/sub (xor 7fffffffh instead 7ffffffh, one more f)
- nds/sound: emulates sound output speaker routing and speaker stereo panning
- nds/sound: emulates sound-hold (freezes output until hold=0 or next re-start)
- nds/sound: optionally mono output, optionally disabled, on machine 1 only
- nds/sound: allows "dumb loops" when reading non-irq-timed sound status regs
- nds/sound/help: described hold flag (can't hold on restart, apparently bugged)
- nds/sound/help: described the two different ch(a)+ch(b) addition outputs
- nds/sound/help: described capture errors (both negative and overflow bugs)
- nds/sound: emulates minmax clipping, fully emulates all sound capture errors
- gba/sound: fixed small ch4 glitch (occured when only one stereo side was on)
- gba/sound: bugfix: recurses channel 3 wave ram bank number/bank size changes
- gba/sound: emulates minmax clipping, corrected channel-volume vs bias-volume
- gba/nds/sound/help: rev-engineered Max Output Levels (psg/pcmfifo/bias/clip)
- nds/sound: emulates capture (routing, adding, mixing, rounding, clipping, etc)
- nds/sound: emulates sound loop+length and high accuracy frequency timings
- nds/gba-slot/bugfix: memadr_sram (instead nnn=0Eh) (thanks Chow Kim Foong)
- nds/sound/help: corrected sample frequency, explained length/loop registers
- nds/sound: emulates channel volume, channel volume shift, master volume, bias
- nds/sound: emulates pcm8, pcm16, adpcm, psg wave/duty, psg noise formats
- nds/sound: emulates all write-only sound ports as such (reads as 00000000h)
- nds/sound/no$fmw/emu: initializes bias=200h (as done by original firmware)
- nds/sound: nds_sb_generate_sample invoked by NDS7 (not NDS9) as sound master
- nds/bugfix: fixed arm9 halfmul opcodes (accidently exchanged opcode lsbs/msbs)
- debug/disass: fixed smulxy opcode (showed up as "smmuxy" instead of "smulxy")
- nds/sound/help: described SOUNDCNT bits 8-11 (final audio output selection)

4th August 2006 - version 2.3
- nds/dos: displays nds button X and button Y in redefine keys setup screen
- gba/bugfix: re-disabled NDS master_bright in GBA mode (port 6Ch is GBA sound2)
- help: uploaded gbatek txt/htm standalone versions (v2.3 news: 3d video, wifi)
- nds/help: firmware header chapter (added timestamp/version/type/unused info)
- wifi/emu: direct boot sets wifi regs (mainly bb) as done by firmware bootcode
- wifi/emu: emulate serial read/write to BB ports, and write to RF ports
- wifi/emu: emulates indirect wifi ram read/write access via ports 050h..076h
- wifi/emu: emulates wifi disable by powcnt2, emulates 8bit/16bit/32bit access
- wifi/emu: allocates/emulates 8K wifi RAM, emulates used/unused wifi io ports
- wifi/help: added write range: w_buf_wr_end (074h) and w_buf_wr_step (076h)
- wifi/help: added missing ports 078h and 09Ch, explained RF index/18bit data
- wifi/help: added random algorithm, added w_us_comparecnt (compare enable)
- wifi/help: added notes on read-mirrors when reading from write-only ports
- wifi/help: added bit-by-bit port descriptions, including unused/always0 bits
- wifi/help: corrected several (R)/(W)/(R/W) specifications, added r/w bitmasks
- wifi/help: matched doc to 80 column width, removed too-verbose stuff in iomap
- wifi/help: added wireless chapter (many thanks stephen stair's ds wifi doc)
- nds/xcept: allows NDS7 to access 64K region at 4800000h (wireless wifi ports)
- nds/xcept: allows NDS7 to access 256K mirror at 27C0000h (commercial games)
- nds/xcept: allows ITCM mirror at 1FF8000h..1FFFFFFh (used by commercial games)
- nds/rtc: serial transfer timings firmware-compatible (on other edge than bios)
- nds/firmware: supports 512Kbyte firmware.bin (ie. chinese charset in iQue)
- nds/emu: emulates 512-byte backup eeprom (as used in metroid demo cartridge)
- nds/help: corrected auxspicnt (exchanged bit6/bit13, enable and hold flags)
- 3d/help: cleaned-up 3d matrix chapter (mtx_mode, and clip_mtx descriptions)
- 3d/help: added chapter on 2D scrolling/specialeffects/window used on 3D/BG0
- nds/video: emulates display capture from source A=bg/obj, fixed swap_buf time
- nds/help: added note on capture completion in line 192 (regardless of size)
- nds/iomap/help: corrected display capture read/write offsets (exchanged them)
- 3d/2d: emulates hscroll on 3D layer, prevents mosaic and vscroll on 3D layer
- debug/iomap: fixed position of "W0 W1 Obj Out" and "1st 2nd Target" flags
- 3d/log: automatic comments on separate bits in poly_attr and teximage_param
- 3d: supports transparent rear-planes (for underlaying 2D plane) (metroid menu)
- 3d: enabled GL_NORMALIZE (required for normals when used with scaled matrix)
- nds/slot/dma: executes BURST only on START 0-to-1 (not on clearing MODE bits)
- nds/slot: cart transfer ready irq generated ONLY if enabled in 40001A1h.Bit6
- nds/touchscreen: works also in debug-window (not only in separate game window)
- nds/touchscreen: initializes calibration also when booted via bios/firmware
- nds/div/emu/help: DIV0 or MAX overkill: 32bit result is reversed-sign-expanded
- nds/div/emu/help: reserved mode3 is same as mode1, result/remain sign-expanded
- nds/div/emu/help: DIV0 sets remain=numer, result=+/-1 (sign opposite of numer)
- nds/div/emu/help: (-MAX / -1) overflow error returns (-MAX) (instead +MAX)
- 3d/iomap: added vertex (vtx16), normal vector, light colors, and light vectors
- 3d/iomap: added box test, pos test, pos test result, vec test, vec test result
- 3d/iomap: added edge color table, fog table, toon table, shininess table
- 3d/iomap: added current projection, position, direction, and texture matrices
- debug: disassembler: fixed Rm,Rs operand order for umull/smull/umlal/smlal
- 3d: texture mirror repeat (fully software emulated, pre_opengl_1.4 compatible)
- debug: changed .FNT DefaultChar from 2Eh to FFh (avoids WinXP bug) (jasper)
- 3d/log: log-file for all GX commands (format: PortNNN/CmdNN cmd_name params)
- 3d/log: auto-indent within begin/end, auto-wrap-indent for NxN matrix params)
- nds: re-init fpu-mode for 64bit INTEGER div/sqrt (required after opengl calls)
- 3d: fixed SCALE command (applied only to one matrix even in simultaneous mode)
- 3d: fixed mtx_load_4x3 command (applied to both matrices in simultaneous mode)
- 3d: emu: fixed vec_test (x,y,z,0) (4bit sign, instead 1bit sign+3bit integer)
- 3d: texcoord-transform fully software emulated (without GL_TEXTURE matrix)
- gba/help: added note on more complex invalid tiles with multiple BGs (jasper)
- 3d/help: added decal/modulation/toon/highlight chapter, and texcoord chapter
- 3d: texture 4x4 texel compressed format (incomplete, without interpolation)
- 3d: texture translucent formats, palette formats optionally color0 transparent
- 3d: bugfixed vtx_diff (9bit fraction is meant to be LSBs of 12bit fraction)
- 3d: material0.bit15 directly sets vertex color (for N's "cube" demonstration)
- 3d: light/material/normal with forced begin/end-outbreak on GL_LIGHTING change
- 3d: calls gx_process_fifo to free-up gxfifo (when possible aka no swap active)
- 3d: get framebuf: reverses red/blue by table (for match-up with nds 2D engine)
- 3d: explodes (1)-5-5-5 RGB textures to "unpacked" OpenGL RGBA 8-8-8-8 format
- 3d: supports 16bit I/O-writes (eg. metroid demo: 16bit STRH to CLEAR_DEPTH)
- 3d: textures (metroid demo: "nintendo/actimagine" shown before intro-movie)
- 3d/help: added note on END_VTXS being a dummy command (no effect on hardware)
- 3d/help: added note on depth test, and on POLYGON_ATTR applied at BEGIN_VTXS
- 3d: enabled Depth Test, and emulated Depth Test modes (either Less, or Equal)
- 3d/iomap: displays VertexColor setting (Port 480h aka Cmd20h) in F10 screen
- gba/video: bugfixed rotscal tile-map mode (bugged since v2.2f) (thanks jasper)
- 3d: converts fixed-point-to-float by FMUL 1/1000h (faster than fscale or fdiv)
- 3d/help: added notes about clipping, and about light vectors and normal vector
- 3d: retrieves DIB bitmap data by movsd (glReadPixels doesn't seem to work)
- 3d: supports begin/end quad/triangle/strips and all variants of vtx-commands
- 3d: forwards (software calculated) projection/modelview matrices to opengl
- 3d: supports clear color, clear depth, and applies viewport setting
- 3d: supports vertex color, and polyonattr alpha/wireframe/front/back settings
- 3d: pre-calculates 5bit R,G,B,A float values (for fast conversion via table)
- 3d: calls ChoosePixelFormat (killer-slow) (only if needed, not for 2D games)
- 3d: retrieves gl- and wgl- and PixelFormat proc addresses (quite fast)
- 3d: loads Opengl32.dll (killer-slow) (but, only if needed, not for 2D games)

18th June 2006 - version 2.2f
- cpu/help: added CPU Memory Alignments chapter (and info on mis-alignments)
- research: discovered wglCreateContext (despite no info in worst opengl specs)
- gba/video: hides invalid tiles in NDS-in-GBA-mode (invisible, unlike real gba)
- gba/video: shows invalid tiles in GBA/SP-mode (vertically striped) (jasper)
- gba/help: unprectiable things: described invalid tiles (thanks jasper vijn)
- gba/emu/help: corrected Prefetch Disable (1N+1I instead 1S+3I) (jasper vijn)
- gui: re-fixed game_template for multiple machines (@@total for dual-screen)
- nds/vram: nds7 emulated vram mirrors every 256K, disabled palette/oam access
- nds/vram: nds9 ignores 8bit-writes to vram/palette/oam (thanks gary linscott)
- nds/vram: nds7 allows 8bit-writes to vram (thanks gary linscott)
- cpu: ignores mis-alignment on NDS9 LDRH/LDRSH (unlike rotated GBA/NDS7 data)
- nds/debug: filesystem viewer rejects invalid nds headers (eg. passme files)
- nds: emulates reading 8bit/16bit-fractions from 32bit ipc_fifo_recv register
- cpu: emulates "ldr pc,[mem]" with misaligned jump-dest (with optional warning)
- nds/video: avoids divide-by-zero crashes in 3D perspective divisions
- gba/nds/video: speedup: color special effects by 1x32bit mul (instead 3x5bit)
- nds/help: fixed extended palette enable bits (dispcnt bit31,30 exchanged)
- a22i: supports macros (still without params) (.macro <name> / ... / .endm)
- a22i: supports repeat macros (.rept <count> / ..code or data.. / .endm)
- nds/video: emulates new nds master brightness up/down effect (port 400X06ch)
- vram viewer: supports NDS rot/scal mode with text-style 16bit bgmap entries
- gba/vram/emu/help: strb to vram: write-nothing reduced to 16K in bitmap mode
- gba/vram/emu/help: strb to vram: write-twice expanded to 80K in bitmap mode
- nds/video: new rotscal mode with 16bit map entries (400h tiles ext_pal xyflip)
- nds/video: extended palettes (256-color TEXT, 256-color OBJs, 16bit rotscal)
- nds/video: emulates large screen bitmap mode (not tested, but should work)
- nds/reset: also zero-fills 2D Engine B ports (bg0ofs scroll registers, etc.)
- cartloader: loads .NEF debug-info also for .NDS files (instead only for .SRL)
- cpu: allows mis-aligned thumb BX R15, auto-aligned to "($+4) AND NOT 2"
- gba/video: emulates obj-wrap; 64x64 scaled to 128x128 only in UPPER portion
- nds/help: described obj-wrap; 64x64 scaled to 128x128 in BOTH screen portions
- nds/video: screen-width for NDS rot/scal-obj (256 pix on NDS, instead 240 pix)

18th May 2006 - version 2.2e
- no$fmw: detects post-header gap-size (typ. 0h,3E00h,4600h) (old: fixed 3E00h)
- dos: fixed v2.2d bug: init_gba_color_xlat_table (old: init_color_xlat_table)
- help: added note on possiblity to move nds7 ROM to (non-)secure area at 200h
- help: added note about blank secure areas (nintendo devkit, 800h zero-bytes)
- help: added cart.NEF/SRL/NLF-combo description in symbolic debug info chapter
- elf/cartloader: crash-fix (occured if newly loaded labels at code-window-addr)
- cartloader/cmdline: supports spaces in "quoted" path\filenames (thanks peter)
- screenshots: fixed palette size (set to zero for true color) (thanks jasper)
- help: changed DMA 4 to DMA 3 (probably makes more sense, thanks jasper vijn)
- nds/debug: accepts labels below 2000000h (ie. ITCM labels, at 1000000h and up)
- nds/help/no$fmw: added chinese as extra language (newer/chinese consoles only)
- vram viewer: OAM redbox works at negative y-coordinate (thanks peter schraut)
- bugfix: joypad_adjust uses "@@seg" instead "vals" for [local_if_adr] access
- nds/tcm: 80x86 intrwait [dtcm+3ff8h] works if DTCM is off, or covered by ITCM
- nds/freeware: stores [memaccess_addr] (required for tcm/interrupt emulation)
- elf: ignores "@1234" and "@456" style dummy labels (used in ldr rd,=txt_ptr)
- nds/cartloader: shows warning on 2K-encrypted-carts (if missing biosnds7.rom)
- nds/cartloader: shows warning on faulty secure area (rom-offset below 4000h)
- cartloader/cmdline: accepts all "unpacked_extensions" (new ones: nds srl elf)
- elf: reload/recent files: reinitializes dsk_path (used to load source-lines)
- nds/controls: joyp/penirq works for BOTH arm7+nds9 (@@skipinp, old: @@skipadj)
- elf: shows continous source lines from ONE section (hides .nef DUPE sections)
- elf: ignores strange "$a" and "$d" dummy labels (found in some elf/nef files)
- nds/cartloader: supports cart.NEF debug info (for cart.SRL binaries) (if any)
- nds/cartloader: supports (not existing) nds-elf's with zero-based phys.addr
- internal/cartloader: replaced @@target_rom flag by pre_size detection values
- internal/cartloader: removed ancient @@elf_method load-by-section-headers
- nds/cartloader: accepts ext .SRL (nintendo's alias for raw .NDS rom-images)

9th May 2006 - version 2.2d
- nds/tcm: reset during emulation does reinit memaccess_list (and rebuild_tcm)
- gba/video: selectable GBA (dark), GBA-SP (med), DS-in-GBA-mode (bright) colors
- nds/video: emulates backlight on/off/dimming (rgb_xlat per screen / machine)
- nds/setup: optionally allocates debug-ver 8MB main memory (with reset/remount)
- nds/help: described wifiwaitcnt (port 4000206h), and displayed it in f10-iomap
- nds/help: spi 16bit mode bugged (only each 2nd byte appears in 8bit-spidata)
- nds/iomap: added 32bit auxspi register in iomap (formerly 8bit whatever 1a1h)
- nds/aux: emulates auxspi port (that still without any backup-memory emulated)
- nds/help: added cartridge backup chapter, and auxspi in cart ports and iomaps
- nds/realtime: raised from 50% to 100% speed (delays only on arm9, not on arm7)
- nds/video: emulates alpha-flag (0=transparent) for direct color BG bitmaps
- nds/iomap: expanded bg#cnt charbase value to bit2-5 (unlike GBA-style bit2-3)
- nds/help: added debug_exception_vectors in irq chapter (27FFD9Ch and 380FFDCh)
- nds/reset: stable multiple_ready initialization (libnds crashed each-2nd-boot)
- nds/debug: allows stackinfo at non-3000000h region (ie. var nds9 dtcm region)
- nds/metroid: metroid demo intro-movie is now working (bg bitmap & bitmap obj)
- nds/iomap: fixed displayed sqrt_result register value (addr 2B4h instead 2A4h)
- nds/iomap: fixed soundcnt and soundbias registers (addr 50Xh instead ecx+50Xh)
- nds/video: fixed bitmap obj emulation (also displayed in vram viewer oam page)
- nds/help: corrected 2D Bitmap OBJ description (boundary=8x8, not boundary=32)
- nds/video: emulates vram-display-mode (used for metroid intro / upper screen)
- nds/irq/bios: nds-irq-handlers working without copy of real nds-bios-image
- profiler: goto function always applied to CODE window (not data/stack window)
- nds/profiler: treats FFFF0018h as nds9-irq (unlike 00000018h for gba/nds7)
- nds/emudetail: higher emulation accuracy for read/write-able POSTFLG bits
- nds/bugfix: fixed SWP opcode (metroid) (ecx was destroyed by anytcm handler)

18th April 2006 - version 2.2c
- nds/tcm/debug: accepts "odd" (non-16MB-aligned) dtcm-base without warnings
- nds/help: specified recommended TCM areas (emulation performance friendly)
- web: added "no$nds" iomap screenshots, changed "gbanotes.txt" for v2.2c
- dos/help: dynamically counts help line numbers, then allocates helpptrseg buf
- nds/bugfix: fixed crash on nds-to-gba switch (hack_win_sizes post init_addr)
- nds/controls: supports new x/y buttons, fixed normal joypad input on nds7
- nds/debug: adjust_addr supports iopt, vram, and dtcm/itcm (also for 80x86 swi)
- dma/nds: accepts large word-counts for nds9 dma transfers (max 200000h units)
- dma/nds: masks-out unused sad,dad,len/cnt bits of nds7/nds9 dma registers
- dma/nds/help: added note about nds7-dma having same restrictions as gba-dma
- dma/gba: fixed various "write-only" emulation glitches of various DMA ports
- dma/gba/nds: supports rarely used 8bit DMA port access (by ldrb/strb opcodes)
- nds/cp15: emulates fixed cp15 bits, mirrored/unified cp15-pu-region-registers
- freeware version: re-fixed error-count (ignores bios-bugs, thanks dave murphy)
- nds/debug: full iomap, 10 tabs (Lcd-A/B/3D,CpMem/SpiRtc/Snd,DmaTmr/IrqIpc-7/9)
- nds/help: added note about absent cp15 fast context switching extension (fcse)
- nds/help: added list of read-write/read-only cp15 control register bits
- nds/tcm: supports move/enable/disable/mirroring, re-supported JUMPs in ITCM
- nds/tcm: created separate dtcm/itcm/anytcm handlers, mounted where needed
- nds/ipc: help: added 16 word ipc fifo size, emu: "ipc-clear" sets empty-flag
- nds/3d/help: added new chapter with 3D video specs (about 70% complete)
- nds/3d/fifo/pipe/load/push/pop/mul: emulated basic 3D functions (by software)
- nds/tcm: emulates unused CP15 bits=zero, ITCM not-moveable, ITCM/DTCM priority
- nds/tcm/help: rev-engineered DTCM vs ITCM priority, and NON-moveable ITCM
- nds/memory: moved GBA-SRAM address to A000000h (unlike GBA-style E000000h)
- nds/memory: moved GBA-EEPROM expected address to WS0 (unlike GBA-style WS2)
- nds/memory: truncated GBA-ROM to WS0 (without GBA-style WS1, WS2 mirrors)
- snaps: fixed snapshot load/save (memadr_regs instead bugged v2.2 memadr_vals)
- a22i: definitions by "global equ $" preserve @@local labels (unlike global:)
- help/htm: eliminated unwanted TABLE-spacing that appeared around PRE sections
- xboo: fixed silly bug that crept into gba-xboo-mode (@@non_nds -> AFTER ret)

4th February 2006 - version 2.2b
- help: added credits in about chapter, uploaded gbatek v2.2b standalone version
- help: removed question marks in video capture chapter (thanks christian auby)
- help: added bios-dumping method, bypassing biosprot via 5ECh (thanks damien)
- debugger: hides 2nd gamescreen in gba-mode, and activates it in nds-mode only
- help: firmware settings RTC Offset, difference in seconds on time/date changes
- debugger: shows debug window also on cmdline "no$gba file.gba" (unless hidden)
- xcept: allows passme-entry-style jumps in 27ffxxxh area (mirrors of 23ffxxxh)
- xcept: allows nds9_irq_vector=zero (only if itcm=enabled, and itcm_base=zero)
- vram viewer: palette screen: adds engine-b-base, engine-button freshen_options
- setup: autostart flag (in filemenu) saved with other options in ini/cfg file
- debugger: search -> goto area -> exchanged 32K and 256K (thanks peter schraut)
- vram viewer: supports new nds bgmodes (bitmap, large bitmap, rotscal-16bit)
- dual cpu: provokes instant machine switch on any 27ffxxxh access (libnds stub)
- cartloader: applies passme-patches only to NDS-header (not to GBA-header)
- help: added description of bg#cnt size-bits for nds bitmaps and large-bitmap
- bios: fixed 80x86 bios rlu/lz77 decoders (new v2.2 regr0_adjust damaged flags)
- help: added KEY2 specs (semi-thanks darkfader for (obviously) incomplete info)
- iomap/vram viewer: shows correct names of NDS video modes (text,bitmap,etc.)
- lcd: supports bitmap base (in 16K steps), supports rotated/scaled bitmaps
- no$fmw: fixed nds7 uninitialized r12, activated DST adjust, fixed DST apply
- no$fmw: simplified nds7-bios-dump, works without nds-cart, thanks damien good

23nd January 2006 - version 2.2a
- bugfix: fixed v2.2 instant crash after loading (occured debug versions only)

22nd January 2006 - version 2.2
- help: uploaded new gbatek standalone version v2.2 (with nds specifications)
- exe/help: replaced upx compressor by nocash packer (without opcode filters)
- nds: applies bottom lcd (touchscreen) video output to correct window-owmer
- nds: applies mouse/touchscreen to correct window-owmer (in multi-machine mode)
- nds: auto-initializes touchscreen calibration (both with/without firmware.bin)
- nds: no$fmw: included nocash firmware xmit binary as overlay in no$gba.exe
- help: added notes about new NDS emulation (on things that aren't yet working)
- exe: exported windows-help to separate upx-compressed overlay (as in dos ver)
- nds: vram viewer: matched user-grid, bg-scyx, oam-redbox to NDS resolution
- nds: xboo: saves backup of original firmware header on HDD and in flash memory
- nds: xboo: includes crypt key in firmware for NDS-decryption (if BIOS dumped)
- nds: xboo: download functions for dumping NDS firmware, BIOSes, and GBA-carts
- nds: xboo: patch/restore functions for (un-) installing nocash firmware
- nds: xboo: help: xboo-circuit optionally fmw/rfu, and dsub/cntr pin numbers
- nds: xboo: high-speed upload connection Dta7bit/Clk1bit (ca. 700 KBytes/sec)
- nds: no$fmw: menu: property sheet, check boxes, radio buttons, edit buttons
- nds: no$fmw: menu: settings/time, touchscreen/temperature calibration, etc.
- nds: no$fmw: gui: joypad, touchscreen (lower), mouse/touchpad (upper) controls
- nds: no$fmw: auto adjusts daylight saving time (should work, but not tested)
- nds: no$fmw: allows to boot NDS-images from NDS-slot, or from NDS-Xboo-cable
- nds: no$fmw: allows to load/boot small NDS-images to/from firmware memory
- nds: no$fmw: allows to load/boot NDS/GBA/PASSME-images to/from GBA-flashcards
- nds: lcd: re-activated rotscal params, working for GBA and BOTH NDS engines
- nds: lcd: emulates extended affine bitmap modes
- nds: direct boot: initializes ioports, and cp15, loads newest user settings
- help: nds: added DMA chapter, GBA-mode chapter, and keypad chapter
- help: nds: rev.engineered/described RTC interrupt (shared with rcnt SI-line)
- help: nds: added sound chapters (channels, control, capture, block diagram)
- nds: emulates touchscreen, wramstat, vramstat, exmemstat
- help: nds: described undoc wramstat, vramstat, exmemstat, dmafill registers
- help: nds: added cartridge secure area, icon/title, passme, I/O port chapters
- help: nds: described how to interprete touch screen calibration values
- nds: help: CpuFastSet: only 1st QUARTER uses FAST 32-byte-blocks, rest is SLOW
- nds: resurrecred GBA mode (dis-chains NDS co_vals on NDS to GBA mode switch)
- a22i: added ".no_auto_run" directive (don't load non-game-cart files into emu)
- nds: emu: emulates ZERO unused/write-only ports (instead GBA-style prefetch)
- nds: xboo: replaced 1N4148 diodes by BAT85 diodes for stable SPI connection
- nds: xboo: added firmware dump/patch items in gui\utility\remote access menu
- nds: xboo: automatically sends reset & provokes lockdown to get a spi free bus
- nds: xboo: nocash firmware running in emu, using nds ".pack_lz77/key1/crc16"
- a22i: new ".pack_nds_key1" directive (only firmw, rev/down, modulo C, level 2)
- a22i: new ".pack_crc16 dest_label[,initial]" directive (start by .pack_org $)
- nds: xboo: programmed overall skeleton nocash firmware version
- a22i: lz77 compress now working (start by ".pack_org" finish by ".pack_lz77")
- a22i: added new desired origin target parameter to ".pack_org" directive
- help: corrected length in bit0-20 for CpuSet and CpuFastSet (not in bit0-15)
- a22i: accepts ARM instructions "ALU Rd,Rm" (abbreviations for "ALU Rd,Rd,Rm")
- a22i: fixed crash on "MOV R0,XX 1" whereas XX 1 invalid formula (unlike XX+1)
- cpu: squeeze: ANYMEM removed seq code for areas with same timing as non-seq
- cpu: squeeze: ANYMEM/mem_read_breaks checks brks, then executes normal ANYMEM
- cpu: speedup: stores memaccess_addr prior to ANYMEM (instead "nnn OR adr")
- cpu: speedup: ANYMEM bypasses addr_clks_table for regions with fixed timings
- nds: help: added cart filesystem chapter, firmware header/settings chapters
- nds: debug version: added NitroROM filesystem viewer window (if any)
- nds: direct boot: decrypts 2K secure area (only if rom-image is encrypted)
- nds: a22i ".fix" directive (plus .nds) encrypts first 2K secure area (if any)
- nds: a22i ".fix" directive (plus .nds) fixes logo,secure,header,icon CRCs
- nds: a22i ".nds" directive creates target files with ".NDS" extension
- nds: direct boot: optionally bypasses ugly slow bios/firmware intro
- nds: timings: recurses cycles per scanline, scanlines per picture & per vblank
- nds: dma: moved NDS9 dma-mode bits, DS-gamecart DMA, disabled NDS7 hblank-dma
- nds: cartloader detects nds-passme images, direct boot works with diff entry
- nds: cartloader identifies NDS gamecarts by header CRC (switches NDS/GBA mode)
- nds: help: described cart protocol KEY1-commands in raw/unencrypted format
- nds: emulates firmware bootmenu, io_lists: emulates nds gamecart
- nds: lcd-core displays second screen in game window, and in debug mode
- nds: lcd-core displays second screen, lcd-core handles vram_table
- nds: allocated DOUBLE sinline_bufseg in EMP-GSET, for GBA-LCD, for 2 screens
- nds: vram viewer: displays second screen (by engine A/B buttons)
- nds: vram viewer: supports BG maps, added Engine buttons to all screens
- nds: creates second nds-machine, and dis-creates it in gba-mode
- nds: lcd: suppresses lcd_refresh_request on NDS7 machine (lcd by NDS9 only)
- nds: lcd: emulates OBJs, vram_table, variable boundary, moved dimension bit
- nds: lcd: disabled undoc green swap in NDS mode (supported in GBA mode only)
- nds: emulates ANYMEM vram bank-switching in 16K units by new vram_table
- nds: expanded NDS9 io_lists to 800h+80h (3D_Engine + and 2D_Engine_B area)
- nds: allows NDS9 firmware to read from DMA reg 40000B0h at least as dummy
- nds: added EXTKEYIN port 4000136h to NDS7 io_lists
- nds: expanded NDS7 io_lists to 800h (sound registers), plus dummy WLAN region
- nds: added new NDS9 io_list entries 400006xh (video), 40000Exh (dmafilldata)
- nds: emulates access to power managment device and touch screen controller
- nds: emulates all firmware flash memory commands (write, erase, status, etc)
- nds: emulates full SPI bus with different modes, irqs, devices etc.
- nds: help: added Power Managment Device, and SPI bus, and IPC chapter
- nds: help: added TSC touch screen chapter (touchscr, microphone, temperature)
- nds: help: added RTC real time clock chapter (port, time, date, alarm, etc)
- nds: emulates rtc real time clock, uses system time/date & own stat/alarm regs
- nds: xcept: allows NDS9 firmware to zerofill invalid ports 4000058h/400005Ch
- nds: xcept: allows NDS7 user code jump to BIOS addr 2DD4h (irq return addr)
- nds: xcept: allows ITCM high-mirror at 1FF8000h (aka 1000000h aka 0000000h)
- nds: xcept: allows bios accesses LDR/STR [3FFFFF8h], and LDM [3FFFFD0h],r0-r11
- nds: xcept: ignores IntrWait bug with R12=18h (firmware decompression garbage)
- nds: xcept: zero-irq-vector-check on NDS addresses (DTCM+3FFCh and 380FFFCh)
- nds: xcept: allows/expects nds7 shared ram at (37F8000h aka/instead 3000000h)
- nds: xcept: allows bios to execute mis-aligned 32bit write to [40001A1h]
- nds: xcept: allows bios to fill last 32K main RAM at 27F8000h (aka 23F8000h)
- nds: xcept: allows NDS9 hi_bios jumps FFFF0xxxh and FAKE_TCM 080xxxxh accesses
- nds: xcept: allows NDS9 BIOS boot at FFFF0194h to write garbage to 27E57FEh
- nds: xcept: allows NDS debug ver-style 4K mirror at 27FF000h (aka 23FF000h)
- nds: xcept: allows BIOS-"tricks" memfill/irqvect at 3FFFFxxxh (aka 3800Fxxxh)
- nds: reproduced ARM7 execution time R0*4 clks in 80x86-emulated WaitByLoop
- nds: emulates ipc fifo control/status/interrupts, and send / receive queues
- nds: redirects high ports (4100000h and 4100010h) to nds in_list & out_list
- nds: cpu2cpu emulates interrupt send/enable (used later on in firmware)
- nds: cpu2cpu provokes instant machine switch (for firmware 232EEF0h/37FFB38h)
- nds: emulates nds9 irq/swi exception execution via high-vectors at FFFF0000h
- nds: added 2nd FAKE_TCM area for firmware dtcm=3000000h (in shared ram area)
- nds: customized adjust_pc for NDS7 host for split ram at 3000000h and 3800000h
- nds: customized debug ADJUST_ADDR for NDS7 host (ram at 3000000h and 3800000h)
- nds: faked gamecart irq, relocated IF (lcd,timer,dma,sio,etc) to NDS addresses
- mds: debugger shows current machine host (NDS7, NDS9, or GBA) in statusbar
- nds: emulates FAKE_TCM at fixed/default locations dtcm=0/800000h,itcm=1000000h
- nds: mounted ARM9 engine, chained-in 2nd vals with co_machine pointer
- nds: created ANYMEM for ARM9, supporting HI_BIOS area, init ARM9 addrbaselist
- nds: created NDS9 in_lists and out_lists, emulated SQRT and DIV registers
- nds: verified all machine loops for use with 2nd nds-machine (except gba-set)
- nds: dummy feedback for CPU2CPU communication, and for ROMCTRL busy flags
- nds: mounted new ANYMEM system for NDS7 host, split area nds7 ram/shared ram
- nds: created nds7 in_lists, expanded IE and IF to 32bit, emulated firmware bus
- nds: bios loader: shows warning on invalid BIOSNDS7.ROM/BIOSNDS9.ROM checksums
- webpage: new paypal email address, and new donate page (for freeware projects)
- help: removed all "(formerly ..)" names, expanded ports from NNNh to 4000NNNh
- xed32: selectable line-wrap length (65 or 77 columns), fixed line-wrap bug
- xed32: scrollbar works with >65535 lines, hex-scroll doesn't end at chr(1Ah)
- lcd: speedup: fixed fatal "test_bg_rotated" bitmap BUG (refx/refy exchanged)
- cpu: suppressed base-writeback on NDS7:BIOS:1CD4h THUMB ldmia [r0]!,r0,r3
- cpu: bugfix: illegal opcode "arm_11_ldmib_usr_wb" acted as STM (instead LDM)
- cpu: emulates invalid "stmib [rb]!,rlist^" (userbank/writeback) (nds firmware)
- cpu: ignores misaligned thumb target address on "subs r15" (for nds firmware)
- memory: mount_system switches between GBA and NDS memory allocation & host
- memory: cleaned initaddrbasemask, new memadr_<typ>, formerly addr_<typ>
- bios: debug/disass: added complete BIOS datazones and cpuzones for NDS7/NDS9
- bios: debug/disass: added SWI auto-comments and auto-labels for NDS7/NDS9
- bios: simulates all NDS7/NDS9 bios SWIs by 80x86 code (except callbacks)
- help: bios: nds: described all new and changed NDS7/NDS9 bios SWI functions
- bios: simulates IntrWait swi4/swi5 by 80x86 code (no longer using minibios)
- anymem: moved memaccess list to vals layer (for gba/nds7/nds9 memory hosts)
- anymem: cleaned up source by splitting code into separate anym sub-macros
- anymem: exported warnings to non-macro procs, access_abort "exitm" (saves 12K)
- help: nds: added firmware flash chip, firmware header, and encryption chapters
- windows: allows break-out from emucore even if windows sound timer locked-up
- win98: returns zero on WM_ACTIVATE (to regain full keyboard focus under win98)
- power saving: HLT opcode in DOS debug/gui/emucore, Sleep(1) in Win98 emucore
- internal: recombined frameskip handlers for gmb/gba/retro versions

30th May 2005 - version 2.1b
- cpu/bugfix: logical imm8 ROR 0 (no shift, carry=same) (thanks fredrik olsson)
- debug: media lifetime window shows FLASH/EEPROM writes-per-sector statistics
- eeprom: emulates EEPROM combined with 32MB ROM (thanks jamie) (not tested yet)
- help: added specs for backup EEPROM with 32MB ROM (last 256 bytes at DFFFF00h)

23rd May 2005 - version 2.1a
- multicart: bugfixed uninitialzed initstackram mem handle (thanks oleg volkov)
- setup: added sav/sna compression enable option to files setup (debug version)

17th May 2005 - version 2.1
- multicart: remove_machine: also unloads associated ROM, unless memory shared
- multicart: load into <selected> machine; if none such: allocate new machine(s)
- multicart: cartloader target selectable (specific machine, or all machines)
- help: added various NDS chapters, 2D video, memory map & control, arm9 I/O map
- help: described NDS cartridge header & protocol with some new details
- cpu: handles CP15 system control coprocessor opcodes and Cn,Cm,N registers
- debug: disassembler supports all copro opcodes, assembler all except ldc/stc
- help: cleaned up coprocessor operand names (Pn,Cn instead P#,CRn,etc.)
- help: corrected sprites/scanline formula (10+n*2 per n pix, not 26 per 8 pix)
- shareware: changed decrypter extension (microsoft declared .prg as virus)

25th March 2005 - version 2.0g
- help: described unsupported WRAM-waitstate-control for DS in GBA mode
- help: described different gba-bios-checksum BAAE1880h for DS in GBA mode
- help: described gamepak prefetch-disable-bug (plus 2I cycles on any I cycles)
- timing: emulates gamepak prefetch-internal-clocks (effectively 0I cycles)
- timing: emulates gamepak prefetch-disable-bug (plus 2I cycles) (for rtype3)
- timing: fine-adjusted power-on scanline time (required for unstable rtype3)
- dos/vga: zoom3x/scale3x in 800x600 pix mode (non-tweaked fullscreen-style)
- dos/vga: performance indicator displayed okay also in 15bit..24bit color modes

17th March 2005 - version 2.0f
- dos/vga: changed truedacs (gui) and color_xlat_table (gba) for 64K colors
- dos/vga: alternately uses 64K colors if 32K colors unsupported (LS-563)
- dos/vga: vesa modeset bit14=1 to enable linear buf (required for LS-563)
- dos/dpmi: calls int21h/48h via int31h (win95b sound <seg> instead <descr>)

15th March 2005 - version 2.0e
- dos/dpmi: added bullshit dpmi support (for windows dos-box and arcade-box)
- dos/dpmi: discovered ability to use 4GB descriptor limit for linear memory
- dos/dpmi: discovered conventional mem at linear address zero (undoc feature)
- dos/dpmi: discovered video ram/bios at linear A0000h/B8000h/C0000h (undoc)
- dos/dpmi: uses decriptor access rights privilege level 3 (lowest, required)
- dos/dpmi: terminates by INT 21h/4Ch from WITHIN protected mode (required)
- dos/dpmi: avoids PSP/Environment descriptor values (instead segment values)
- dos/dpmi: supports relocate-able 32bit code (bloated, but required for dpmi)
- dos/dpmi: compatible with cwsdpmi (r5) and windows (95b; still without sound)
- dos/dpmi: supports slow virtual memory (if desired, on PCs with "small" RAM)
- dos: loads executable "objects" only; without help overlay (reloc side-effect)
- bugfix: fixed joypad irq-OR-mode (using only mask 3FFh bits) thanks nat ryall

1st February 2005 - version 2.0d
- dos: horizontal/vertical centering in various vmodes (by software / vram-addr)
- dos: uses linear framebuf (vesa2.0, if any, non-pagefault, fast 640pix modes)
- dos: added tweaked 256/512pix vmode horizontal-centering option (by CRT regs)
- dos: merged various video mode options into single option (scale/zoom/debug)

29th January 2005 - version 2.0c
- dos: dumm: exitmessage optionally quite & keep vmode (hidden arcadebox option)
- dos: dumm: clear sinlinebufseg on allocation (instead no$gba-this-is-asm logo)
- dos: uses hires video mode for 2 players, adjusted position for 2-12 players
- dos: fixed osshell paramblock segment adjust (must be done before downcast)
- dos: fixed 4K-page allocation/alignment (required for freedos with lbacache)
- dos: uses 640x480pix or illegal video mode 512x400pix for scale2x effect
- video: optionally scale2x (240x160pix converted to 480x320 with smooth edges)

18th January 2005 - version 2.0b
- debug: F3-key doesn't treat BLS/BLE/BLT opcodes as sub-routine-calls (BL)
- controls: re-activated helixe POV joystick signals - after some months either
- help: corrected several typos in gbatek specs - thanks to Sebastian Rasmussen

29th September 2004 - version 2.0a
- debug: fix: shutdown message immediately even if 1st/traced opcode at emu_run
- cartload: memorizes recent cartnames last 9 shown in windows version file-menu
- bios: bugfix: softreset by 80x86 code switches from thumb state to arm state
- debug: numeric expression decoder accepts uppercase hex/oct/bin in debugger
- speedup: faster cpu_arit_add_flags emulation (and cmc-less cpu_arit_sub_flags)
- debug: online assembler can create LDR=IMM if it finds match/fREE/blank memory
- debug: online assembler can "edit" existing "ldr{cond} rd,=imm" pseudo opcodes
- curious: help/ass/dis/emu: described/supported older retro ARMv1,2,3 versions
- armv5: emulated all new/changed ARMv5TE opcodes (disabled in no$gba of course)
- armv5: a22i/disassembler: (qadd/sub, mul16bit, cpsr.q, ldrd/strd/pld, vect.hi)
- armv5: help: ARMv5TE (qadd/sub, mul16bit, cpst.q, ldrd/strd/pld, mcrr/mrrc)
- debug: search menu with new quick-link goto-memory-area function (and goto pc)
- bugfix: re-fixed flash backup writes (same ebx*8 bug as eeprom, thanks celebi)
- armv5: a22i/disassembler: recognize new ARMv5 opcodes (bkpt,blx reg/imm,clz)
- armv5: help: described new ARMv5 opcodes (bkpt, blx reg/imm, clz, copro.2)
- armv5: help: described changed ARMv5 opcode behaviour (, pop/ldm/ldr.pc)
- armv5: help: new chapter describes differences between ARMv1 through ARMv5
- webpage: added notice needing help about sick debug info specifications
- emudetail: accepts thumb BX opcode with reserved bits<>0 (suspicious warning)

9th September 2004 - version 2.0
- webpage: just being moving to, added xboo screenshot
- xboo: updated standalone version, new up/download switches, header auto-fix
- cartloader: redraws debug screen (if any) moved to new cartridge entrypoint
- media: run-length compressed SAV/SNA files (simple, but better than nothing)
- emudetail: allows reading from second wave ram bank (in diag cpu data cycles)
- help: described newly discovered Halt behaviour (depends on IE AND IF only)
- emudetail: allows low power HALT to pass through even if CPSR.I=SET or IME=0
- emudetail: emulates CPU spsr bit4 being always set - even writing zero to it
- internal: removed A22i pack_dest buffer (did allocate 256K - even if unused)
- bugfix: re-fixed eeprom writes (crashed on new lifetime counters, bad ebx*8)
- debug: now also supports memory <read> breaks (thanks joe for giving the kick)
- emudetail: prevents eeprom backup mirrors at addresses>10000000h (upper 4bit)
- emudetail: emulates various bios prefetch even when not having bios rom-image
- emudetail: emulates power-up bios prefetch even when booted <with> bios intro
- help: explained "SO During Inactivity" details, added note on SIODATA32
- help: described flashcard write/erase/detection (thanks to jeff's cartlib)
- xboo: simplified pull-up ascii arts drawing in cable connection schematic
- xboo: CAUTION: changed reset signal (if any) now also drags select+start low
- xboo: automatically closes upload box on uploads only (not after downloads)
- a22i: fixed bad crash on invalid parameters in "adrl" pseudo instructions
- help: refined ascii arts for link plug/cable schematics (using underscores)
- help: added gba sp power supply/headphones info in tech data and aux chapters
- help: added gba sp case dimensions ascii arts picture in tech data chapter
- gba sp: got old SP from marcel and replaced damaged oscillator
- emudetail: emulates VCOUNT=99h on direct FLASH/ROM-cartridge start entrypoint
- xboo: flashcard write and erase (erase phase simultaneously with cable upload)
- xboo: flashcard skips writing/erasing blocks if old block did have same crc
- xboo: flashcard highspeed 16MB/sec mechanism analyses remote/local checksums
- xboo: flashcard upload rejected if missing or if too small for rom-image
- xboo: flashcard upload automatically chosen if xboo image bigger than 256K
- xboo: new utility function shows detected info (without downloading anything)
- xboo: detects type/size/presence of remote flashcarts, flashbackup, srambackup

29th August 2004 - version 1.9c
- shareware: changed .prg MIME type to "data/binary" (against "virus" filters)
- media: logs writes per sector for EEPROM and FLASH in SAV and SNA files
- controls: ignores POV if joyGetDevCaps HASPOV=0 (should fix "up/down" problem)
- shareware: added "Hello <Firstname>" in auto-generated registration emails
- media/snaps: included FLASH and EEPROM and video REFXY registers in snapshots
- xboo/help: removed notes about giveio/totalio due to built-in nocashio driver
- media: emulates 64KByte FLASH backup memory (used by Sonic, thanks Kirk again)
- bios: emulates RCNT=800Xh when booted from ROM (required for Sonic Advance)
- gui: forces "OK" and "Cancel" setup buttons (instead local language mixup)
- bugfix: even cartchipsizes were incorrectly rounded-up to double-of-even-size
- bugfix: rlu-compressed length (nocashio driver crash, and no$gba startup logo)

22nd August 2004 - version 1.9b
- shareware: how-to-buy by paypal/cash/cheque/etc txt (webpage below price list)
- shareware: got a verified paypal account (meanwhile available in germany too)
- shareware: new installation instructions in shareware registration emails
- shareware: included in .zip package (loader for emailed .prg)
- internal stats: shows cart CRC-32 (if any use though ultraslow with big carts)
- dos: fixed crash in loader of UPXed (released) version, nobody noticed it ;-(
- dos: faked get_or_resize_memory function (non-virtual, dumb slow rep_movsb)
- shareware: new decrypt proggy working (also compatible with DOS PE header)
- shareware: base64 attachment decrypt.prg (avoids .com/exe "virus" filters)
- help: added ascii arts GBA picture in tech data (shape, dimensions, buttons)
- xboo: uninstall nocashio - seems to have been nonfunctional in freeware 1.9/a
- xboo: download closes and deletes output file on errors/aborts during download
- xboo: download cart: displays "press START+SELECT text" (unless burst mode)
- help: media: flash backup specs (thanks Kirk Zathey for donating a Sonic cart)
- media: sram: emulates 64K area truncated to 32K SRAM size, or 0K size if none
- xboo: download at single speed burst via general purpose code in fast sram
- xboo: download displays cartridge title (or BIOS) and download size in kbytes
- xboo: download cart auto-detects cartsize, skips if no cartridge inserted
- xboo: download via separate buffer (without scattering emulation romseg)
- xboo: download switches into BURST-MODE after completion (instead dumb reset)
- xboo: download (and wait ready) can be aborted by ESC key / CANCEL button
- xboo: download bios function, download cart function, no piracy text message
- xboo: download increased bios/midikey delay from 3x15us to 4x15us (for P200)
- xboo: download wait ready function by SO=LOW signal (instead fixed delay)
- xboo: corrected silly typo: use 560 ohm pull-ups (no not-existing 570 ohm)
- shareware: inserts new decryption data in regkey (similiar fullver gif data)
- shareware: new home-use encryption proggy with three new encryption layers
- controls: ignores POV joystick signals with Helixe reg key - after 3 months
- dos: uses all available memory (instead fixed 6MB), new big page table in xms
- shareware: autogenerates random password, auto-appends password to reg emails

30th July 2004 - version 1.9a
- freeware: fixed vertical size in 3-12 player mode (with cymenubar, thanx zool)
- cheats: displays/prompts for modifiers (eg. ?? ## NN values) instead checkbox
- cheats: silly bloated large bitmap type symbols (codebreaker,gameshark,parv3)
- cheats: shows "error in line ###" on load errors, codes saved automatically
- cheats: keyb: toggle by SPC, delete by DEL, cancel button: undo recent changes
- cheats: add/edit/delete functions for code/type/comment, optionally RAW codes
- cheats/help: described codebreaker, gameshark v1/v2, actionreplay v3 (gbatek)
- cheats: interpretes codebreaker, gameshark v1/v2, and actionreplay v3 codes
- cheats: supports various decryption, changed encrypt-seeds, and crc formulas
- cheats: mastercode/on/off/invalid symbols in cheat list (doubleclick on/off)
- files.lst: new tiny icons (green and blue "A" symbols instead old 8bit carts)
- shareware: full debugger (only excluding profiler and dwarf2 and demangler)
- cheats: loads cheat codes from file, displays descriptions in cheats window
- debug: demangler resolves _(Q2)4name(3bla).other --> name::(bla::)other
- debug: demangler resolves destructors "_._4name" --> tilded "name::~name"
- debug: demangler string buffer created for sort by name and general displaying
- sound: supports backwards/decrementing dma source address (freeware elite)
- setup: disabled single-gamepak mode by default (maybe less confusing)

12th July 2004 - version 1.9
- webpage: new freeware page, new email.htm page, changed various details
- help: changed some stuff in readme.txt (mainly related to new freeware users)
- nocashio: uninstall function in utility menu (results okay,nothing-to-do,fail)
- nocashio: fixed incorrect SC_MANAGER_ALL_ACCESS and SERVICE_ALL_ACCESS values
- cartloader: removed no$gmb-mbc/rom/ramsize-relicts in cartridge header warning
- dos: bugfix: diskgetdirplain_withdrv gets "d:\" plus fpathlen-<3> chars path
- freeware: windows version screenshot to clipboard, dos version xboo & err stat
- debug: demangler displays mangled c++ labels (profiler tree & alt+l only yet)
- profiler: fixed crash on add_machine (profiler alloc killed multiplayer alloc)
- freeware: added previously missing xboo port/delay options in freeware setup
- vram viewer: fixed crash in OAM screen (happened on "prohibited" obj shape)

30th June 2004 - version 1.8b
- freeware: new error statistics window (summary of hidden bugs, quality rating)
- freeware: added menubar with various gaming functions in game window

27th June 2004 - version 1.8a
- crashfix: XPs SetCurrentDirectoryA ERROR_NOACCESS caused by mis-aligned stack
- webpage: added gba-fnt.gif and gba-cond.gif screenshots and description
- dos: crashfix ensures nested task bit cleared in unzip/dos-shell pmode_kicks
- dos: dumm version bugfixes hack mmm_text=b8000h and added "pusha" in setvga80

24th June 2004 - version 1.8
- webpage: added profiler screenshots, about box screenshot, new email address
- gui: io/vram/debmsg/profiler captions got no$gba icon (instead microsoft icon)
- email: got a new spam-free email address (******, 21st june 2004)
- profiler: path window goto optionally to "first" or "current" opcode in proc
- profiler: double-click tree/path/list item moves to procaddr (or goto button)
- profiler: minibios uses normal "add lr,=back" (instead tricked "mov lr,back")
- debug: "str rd,[sp,-4]!" logs stackinfo (alias "stmfd [sp]!,rd" or "push rd")
- internal: rlu-packed no$gba intro-picture (19K->2.5K), bugfixed rlu (nocashio)
- cpu: emulates/warns invalid with W=1 (goldroad: bar.gba)
- profiler: moved setup options directly into profiler window (cyles, sub-procs)
- profiler: supports "ldr pc,[sp],4" as alias for "pop pc" (for homebrewn games)
- profiler: bugfixed path re-allocation (crashed on path deeper than 512 levels)
- profiler: help: added new profiler window and profiler compatibility chapters
- profiler: list window can be sorted by addr/name/calls/cycle columns
- speedup: symbol table sorted by address (faster profiler and debugger lookup)
- debug: bugfix: new numeric expressions decoder re-accepts uppercase labels
- dma: profiler: fifo dma by GETMEM (real mem waitstates, and profiler support)
- dma: profiler: DMAs displayed in profiler (as "sub-routines" or "interrupts")
- dma: emulates real DMA timings: 2N+2(n-1)S+2I, previously 2(n)N, (notyet 4I)
- dma: help: reverse engineered & described DMA transfer timings: 2N+2(n-1)S+xI
- profiler: displays current "path" (like tree or stacks, but with irq nesting)
- profiler: window split into property sheet tabs (tree, path, and list)
- profiler: resizeable, stores variable pref position/size of profiler window
- vram viewer: bugfix: reapplies old property sheet size when re-opening window

1st June 2004 - version 1.7h
- elf/cleanup: disksetdirz creates system directories -only- if not existing
- profiler: optionally shows total cycles, cycles per call, cycles per second
- profiler: added clear-counters buttons (resets counters without erasing tree)
- profiler: allocates separate profiling buffers for each emulated machine
- profiler: optionally raw time, with sub-routines, with/without halt+intrwait
- profiler: optionally collapses or expands all items when opening profiler
- profiler: shows procedures with missing (or overseen) return opcodes as "(?)"
- profiler: shows number of calls (NNNx), number of cycles (NN,NNN,NNN)
- profiler: arrays split into tree+path, optionally places IRQs on top of tree
- profiler: allows to return by BX Rd, or MOV PC,RD wirh Rd (LR or else)
- profiler: scans higher-level return addresses (resynchronizes if lost track)
- profiler: supports bl -> bx rd opcode combination (traget rd), esc-key closes
- profiler: shows IRQ + Entry + BIOS function names, ignores addr.0 (thumb-bit)
- profiler: supports various mechanisms for entering/leaving irq/swi handlers

25th May 2004 - version 1.7g
- profiler: watches "bx lr", "pop pc", "mov pc,lr", "pop rd/bx rd" for exit
- profiler: watches "bl", "add lr/bx", and "add lr/ldr pc" for entering procs
- profiler: tree view shows all executed (sub-) routines (still without cycles)
- nocashio: prompts to install driver on xboo upload or snespad access
- nocashio: parallel port access under win nt,2k,xp by sergey's nocashio.sys
- webpage: moved from "" to ""
- debug: new window shows list of all symbols (Alt+L) (sorted by name or addr)
- run: added single-frame-step hotkey (keypad-"/", in emu mode and debug mode)
- elf: removed script.txt (wasn't required at all, bug was fixed in 1.7d ;-) )
- controls: supports POV-joysticks (aka good old digital, non-analogue sticks)
- test: disksetdir: nested access error message (maybe done by multi-processors)

30th April 2004 - version 1.7f
- elf: disksetdir fatal error additionally shows windows GetLastError value
- elf: suppresses load/allocate of unused files in source info (eg. hdr files)

29th April 2004 - version 1.7e
- elf: bugfix: @@trysetdir_esi skips setdirplain on empty directory names
- elf: writes list of loaded source directories + files to file script.txt

29th April 2004 - version 1.7d
- cleanup: added pusha/popa in setdirplain procedure (maybe fixes any crashes)
- elf: suppressed rom-area warning on attempts to map fileheader to 1FFFFXXh
- elf: translates source paths "/cygdrive/x/" to actual "x:\" (nintendo tools)
- elf: optionally accesses elf as memory mapped file (avoids slow virtual mem)
- elf: optionally loads all source lines at once (slower, but maybe more stable)
- elf: moved writing " > " in source lines after load_src (which crashed strn)
- cleanup: vram viewer uses normal getmem (with anz_mem_handles updated)
- help: added note that Nintendo no longer supports Amtel-Flash (thanks doug)
- cprot: encrypted the decryption floppy disk proggy by licence.key data
- video: sets SetStretchBltMode (prevents 16 color HALFTONE on matrox megashit)
- help: fixed typo in VRAM addresses (601NNNNh instead 61NNNNNh, thanks vegard7)
- internal: displays current and desired directory on setdirectory fatal errors
- a22i: fixed bad parameter error occured with mis-aligned END (implied .pool)
- debug: new numeric expression decoder can be used in debugger (eg. ctrl+g..)
- debug: setup allows to change default numeric-input format (radix 16 or 10)
- a22i: numeric forward references working with all operators (eg. mul div xor)
- a22i: numeric default format define-able by ".radix 16/10/8/2" hex/dec/oct/bin
- a22i: numeric expression priority ordering (eg. ()=highest, *,/=med, +,-=low)
- a22i: numeric boolean operators EQ,NE,GE,GT,LE,LT or =,<>,>=,>,<=,< or ==,!=
- a22i: numeric operators MOD,MUL,DIV,SHL,SHR,AND,OR,XOR or aliases EOR,>>,<<
- a22i: supports decimal number format defined as &dNNN (even if radix not 10)
- a22i: supports roman number format defined as &rNNN (eg. &rCXXIV = 124)
- a22i: supports octal number format defined as &oNNN or NNNo or 0oNNN
- a22i: clean-up: split testvalw into separate number and operator decoding
- a22i: added new ".errif <expression>" directive (user error if non-zero)
- a22i: quoted 'txt' or "txt" opcode-operands may be longer than 1 character
- help: removed middle colon from older 32bit numbers (NNNN:NNNN -> NNNNNNNN)
- help: sys control chapter added note about forced non-sequential 128K-blocks
- help: sys control chapter added note about not-working (data-) prefetch
- help: added pseudo code for SWI 37 multiboot checksum/encryption calculation

28th October 2003 - version 1.7c
- dwarf2: bugfix: restores no$gba home directory after on-the-fly source loading
- vram viewer: vram window resizeable (graphics zoomed, text/details preserved)
- font: allows to disable patched 7x15 font in case of problems (in other setup)
- vram viewer: oam screen small user screen adjusted to exact 240x160 pix size
- vram viewer: fixed BG map scyx rectangle/wrapping (red line text scroll pos)
- vram viewer: fully suppors large BG maps (text & rotscal, drawing & details)
- dos: always updates dizzy dacs in text mode (even if true color graphics mode)
- dos: forwards xtxt mouse-pointer from mmm_text to actual vram (xtxt mode only)

23th October 2003 - version 1.7b
- sound: fixed various channel 3 wave ram size & bank selection bugs (tauceti3)
- help/sound: corrected channel 3 bank selection bits (bit 5,6 mis-exchanged)
- help/sound: corrected channel 3 sample rate (2097152Hz instead 131072Hz)
- statscr: displays sound 1-4 frequency (Hz) and Timer 0-3 frequency (Hz & clks)
- joysticks: setup allows to re-assign gba buttons by pc button-stroke in setup
- joysticks: supports more than 4 buttons (getJoyPosEx via gba-def.def file)
- dwarf2: loads source level source files on the fly only when needed (speedup)
- internal: uses hdc from BeginPaint when available instead from separate GetDC
- dwarf2: memorizes recent source line number/address (source lookup speedup)

24th September 2003 - version 1.7a
- debug font: patched WinXP triangle symbol (arrow right), GetDC after HideCaret
- vram viewer: worked on bg layers bigger than 256x256, still incomplete yet
- vram viewer: shows bg/layer mode name in bg map screens (text, bitmap, etc)
- gui: "deselects" debug font after use (maybe that "deallocates" something)
- dwarf2: skips duplicated header/include files (loading version was VERY slow)

15th September 2003 - version 1.7
- webpage: screenshots of most important debug screens allow to preview no$gba
- webpage: new layout colored boxes giving presentation of the various features
- webpage: got a new ftp password and access rights, yipieh!
- emu: any of the below "prefetch" bullshit actually fixes super Mario Bros ;-)
- emu: recent_bios_prefetch now also set before passing to USER IRQ handler
- emu: recent_bios_prefetch set on EXIT from swi/irq (instead fake on ENTERING)
- emu: recent_bios_prefetch moved into vals area (for snapshots & multi players)
- reg: adjusted registration fee to $5000, looks more valuable... and reasonable
- emu: bugfixed stopping prescaled timers (freeze by OLD prescaler, thanks matt)
- parser: online asmbox accepts simple commands: run,reload,exit,reset,date,etc.
- xcept: allows IntrWait/r0=0 to write to BIOS:0631h (programming trick or bug)
- a22i: .strict directive insists on "label:" definitions (instead just "label")
- a22i: accepts "SWP{B} Rd,[Rn]" as alias for "SWP{B} Rd,Rd,[Rn]" (ie. Rd=Rm)
- debug: value-at-cursor for [R15,OFFS] points to $+8+OFFS (instead R15+OFFS)
- debug: nocash disassembler syntax resolves "stmfd/ldmfd [r13]!" as "push/pop"
- debug: search function can be aborted by esc; disassembling all mem takes time
- dwarf2: uses other background color for source code lines (typ. light blue)
- debug: search function scans all 32bit mem (except unused/mirrors) (old=64K)
- dwarf2: on special opcode line+NN: inserts NN-source lines (instead skip NN-1)
- dwarf2: loads & displays source files from current (elf file's) directory
- dwarf2: sourcelevel viewer allows to select custom source TAB-size in setup
- debug profiling: cpu-power-bar optionally updated only once every 1..6 frames
- debug font: changed patched 7x15 font to older/smaller ver 200h (instead 300h)
- disass: prohibits "ldrb rd,[pc,offs]" to show up as "ldrb rd,=immediate32bit"
- a22i: accepts signed 8bit/16bit data (dcb/dcw), fixed blind-data online crash
- internal: moved debugscreen "init_new_color/font" into inside of "draw_area"
- debug: bugfixed labels-ending-with-square-bracket (eg. cond break "[label]!")
- dwarf2/elf: ignores/suppresses unwanted dummy labels (eg. ".gcc2_compliled.")
- vram detail: 8bit writes to OBJ+OAM are ignored (only BG+PAL are doubled)
- dwarf2: multiline disline (can show more than 1 line per disassembled opcode)
- dwarf2: bugfix: 5-byte LEB128s values (eg. nintendo-nonsense DC,FF,FF,FF,0F)
- dwarf2: ignores incorrect too-short nintendo-bugged "prologue length" entries
- dwarf2: bugfix: skips empty include directory list, finds all compile units
- dwarf2: moving cursor on source text shows line number & filename in statusbar
- dwarf2/elf: loads symtab & strtab by section name (instead section flag guess)
- cartloader and XED-standalone: look up for file in original-current directory
- xed: hexedit mode (commandline /b switch), new minimize box in standalone mode
- dwarf2: stores pointers to file/directory names in new table (file-indexed)
- dwarf2: uses separate tables for line-address and line-info (faster lookup)
- debug: ctrl+g (goto) accepts indirect addresses such like [r4] or [label]
- hack: re-fixed data window editing (left/right digit of byte were exchanged)
- video: emulates window coordinates x1>x2 and y1>x2 (treated as x2=240, y2=160)

18th July 2003 - version 1.6c
- dwarf2: optionally displays source line numbers (not yet actual source lines)
- cartloader/elf: rejects any code/data outside of usual ROM area (with warning)
- debug/font: changed new patched font to use OUT_RASTER_PRECIS (hope it helps)
- help: added info on I,F CPSR bits on exception execution (particulay for SWI)
- cpu: bugfix: IRQs disabled by SWI opcode (undocumented in original ARM docs)
- dwarf2: loads line numbers from .debug_info, .debug_line, debug_abbrev, etc.
- dwarf2: loads the whole elf-file into RAM (maybe slower, but easier to deal)

15th July 2003 - version 1.6b
- debugmsg: added clock cycle counter operands (%lastclks%, %totalclks%, etc.)
- iomap: implemented user clock cycle counter (with manual reset button)
- help: added hyperlink to debugging chapter in the menu bar of the debug window
- help: profiling & performance monitoring chapter (clk comments, counters, etc)
- iomap: optionally merges all six tab-pages into one large "all-in-one" window
- debug: displays recent "Execution Time: nnn Cycles" in status bar on emu stop
- sound: bugfixed bit positions for FIFO A/B volume and FIFO B stereo registers
- debug: inserts space characters between all bytes in datawindow (if room)
- debug: supports non-standard windows color schemes (hack,iomap,tv,warn,gadaba)
- debug/xed: creates patched 7x15 font (proper arrows, ditherings, One's & L's)
- debug: disass scrollup/center dynamically increases walkback (eg ascii dzones)
- xed: improved vertical scrollbar (up/dn buttons, up/dn keys, thumb dragging)
- debug: disass shows datazones as 0NNh/0xNN (old=NN), uses best-match 2^N width
- debug: disass shows jmp direction (up/down/right arrow for back-,forward,call)
- debug: disass shows true/false if program counter points to conditional opcode
- debug: clock cycle comments (normal, detailed formulas, resolved clks, sum)
- debug: shows unused/unmirrored memory areas as garbage (instead mirrored data)
- debug: codewindow horizontally resizeable, 60..120 columns (old was 60 fixed)
- debug: codewindow cursor up & pageup avoid hangup on wraps from FFFFFFFF to 0
- debug: disassembler resolves exception vectors (at address 0..18h) as labels
- help: described undoc bios functions HardReset, CustomHalt, GetBiosChecksum
- xed: xed setup settings are now actually loaded/saved to/from no$gba.ini file
- xed: new options allow to explode/collapse TABs automatically on load-/saving
- xed: new option allows to save backups as "\recycled\xed_bak.~nn"
- xed: assembler/compiler compatibility: bestfill TABs suppressed in quoted text
- setup: hides the "?" question mark in the caption of the setup property sheet
- help: fixed chapters with 1st letter "K" in index (ie. Keypad instead "eypad")
- xed: F8+T truncates ending spaces, F8+T/M recover curlinadr,blockbeg/end etc.

23rd June 2003 - version 1.6a
- xed: aside from TABs, F8+T also collapses CRCRLF as CRLF, explodes LF as CRLF
- hotkeys: F5,F6 toggles FIFO A,B sound, Shift+F1..F5 toggles BG0..3,OBJ layers
- hotkeys: added help emulation hotkeys chapter, changed SnapSave=F8 (old=F5)
- cpu/timing: emulates sequential/nonsequential gamepak cycles (LDM/STM opcodes)
- a22i: bugfixed Thumb/STMIA opcode (has been badly assembled as LDMIA instead)
- setup/xcept: added <enable> all warnings option (additional to disable & user)
- setup: memorizes recent screen xy-position of vram viewer and i/o map windows
- aboutbox: added email address in about box again (commercial/fullversion only)
- xed: somewhat added F11-key setup screen (most xed options still not working)
- xed: somewhat added vertical scrollbar (more or less basically half working)
- xed: somewhat supports selecting (onscreen-) text by mouse (left button+move)
- xed: new commandline option allows to use XED as RAW editor (no$gba /x fname)
- xed: 32bit version supports column-block copy to cursor, cut/copy to clipboard
- xed: fixed block-read (and paste) towards xloc after end of line (spc padding)
- xed: additionally supports mainstream clipboard cut, copy, paste functions
- xed: imported and re-written DOS-XED help text (about, hotkeys, cmdline, etc.)
- xed: allows to access help contents/gba/cpu/xed-specs from inside of editor
- screenshot: fixed bmp header filesize entry, fixed PRNSCR hotkey in debug mode
- screenshot: optionally copies screenshot to clipboard (instead saving to file)
- debug: changed vertical size to max 120 lines (instead old dos-style 60 lines)
- debug: allows F3-key to stepover HALTs (ie. STRB [4000301], runs to next line)
- a22i: accepts "XOR" as alias for "EOR", accepts "CALL" as alias for "BL"
- a22i: accepts thumb-style shortform "ALU Rd,Imm" as alias for "ALU Rd,Rd,Imm"
- debug: combo-input boxes dropdown editing behaves more like nocash DOS version
- debug: toolbar window (for F3/F7 Trace, GBA/ARM Specs, Reload Cart, Edit File)
- vram viewer/bg map screens: bugfixed palette HEX-values & added "BGP" text
- help: added note that 8MB ROM exists (used by zelda) (cartridge rom chapter)
- help: described game code ("A" is for ABC, most people believed it's for AGB)
- debug/stack/snap: stack usage info loaded/saved in snapshot files
- debug/stack: displays stack usage in stack window (horizontally resize-able)
- debug/stack: moves cursor to BOTTOM of window (used area) (eg ctrl+g,emu-stop)
- debug/stack: logs stack usage in memory (on PUSH/STMFD SP!, and on SUB SP)

25th May 2003 - version 1.6
- help: described undocumented behaviour of "unused bits" in SIOCNT and RCNT
- irq: instantly executes pending IRQs when enabled in CPSR.I (via MSR or SPSR)
- irq: instantly executes pending IRQs when enabled in IE or IME
- link/rcnt: RCNT LSBs also in multiplay mode (input current SC,SD,SI,SD state)
- link/rcnt: slave GENERAL PURPOSE mode reflects proper SD to MULTIPLAY master
- debug: re_read_io for siocnt/rcnt
- colors: emulates real blurred color-mixing (same as CGB, but different ramp)
- link/performance: emu-speed meter updated only when ALL gba frames ready
- link/biosless-multiboot: transfers header data to slave wram (for fzero ID)
- link/biosless-multiboot: allows repeat 620Y->720x endless (for fzero startkey)
- link/biosless-multiboot: allows repeat 6200->720x endless (instead max x64K)
- multiplay/biosless-multiboot: returns send-data also as well to master
- multiplay/biosless-multiboot: forces slave in 115k multiplay mode after boot
- multiplay/biosless-multiboot: always SD=good (regardless of slave siocnt)
- multiplay: bugfixed all-gba-ready SD=good (old version reversed siocnt / rcnt)
- multiplay: emulates timing depending on number of slaves, proper slave busybit
- dos: truecolor - text cursor, mouse arrow
- dos: truecolor - supports 15bit/24bit depth (game screen & debug text output)
- dos: copyprot fullversion password prompt after first-time installation
- dos: copyprot/loading fullversion with cartridge and alpha blending support
- dos: redef keys setup supports L+R buttons, and redefkey merged with cpc/msx
- sounds: 2nd may: 1st time tested stereo, bugfix: exchanged ALL left/right
- colors: 1st may: 1st time tested color emulation on color monitor/color mode
- dos: supports wide 256x200 pixels low resolution emulation mode optionally
- dos: virtual vram page number working okay after screen resolution switches
- p200: nocash project gets commercial - this version was made on a pentium
  sucks 200MHz with bloody color monitor and plug'n'wait stereo sound card

1st May 2003 - version 1.5b
- xboo: changed default speed to medium/medium (more stable with normal ports)
- debug: "set register" function moved into online assembler (without ctrl+r)
- cartloader: reload-cartridge hotkey (ctrl+r) (formerly used as "set register")
- elf: resolved thumb/arm zones as far as information present (in symbol table)
- elf: loads executables by normal <program> headers (which must be valid exist)
- setup: new defaults: warnings disabled, game window autodestroyed with debug
- vram viewer: displays "tile/map"-info for bitmaps (addr, depth, enlarged tile)
- vram viewer: unused BG layers blank filled (eg. BG 0,1,3 in bitmap modes)
- vram viewer: displays bitmaps (current frame as bg2, frame 0+1 as tiles 1+2)
- debug: replaced '>' program counter symbol by square box symbol (8bit charset)
- debug: input boxes bugfixed for register plus offset (eg. ctrl+g, "r7+10")

11th February 2003 - version 1.5a
- link/help: noted incoming master zero-data (SI=GND) for FAST-ONE-WAY uploads
- link/help: added old'n'new / socket'n'plug schematics in aux link port chapter
- link/normal: bugfixed internal clock rate, bugfixed 32bit data clock rate
- link/normal: supports FAST-ONE-WAY normal-mode upload with multiplay-cables
- link/setup: added new "multiplay" cable type option (and automatic cable type)
- link/setup: link strategy option split into single pak + cable type options
- link/multi: slaves timing synchronized to master timing
- link/multi: slaves BUSY bit automatically set/reset by masters START bit
- link/multi: casts [12Ah] send-data from all units to [120h..126h] of all units
- link/multi: fast instant multiboot transfer for multiplay mode respectively

4th February 2003 - version 1.5
- webpage: added some more detailed notes about discontinued freeware version
- bios: automatically uses 80x86 code if GBA.ROM not found (not accurate though)
- link: reapplies master as dummy-slave-owner when adding/resetting a new slave
- link: warning on missing multiboot entrypoint, or on non-zero reserved field
- link: ignores warning about bug in original bios-intro slave boot procedure
- link: emulated biosless SLAVE multiboot code (required if GBA.ROM is missing)
- link: forces fast instant 80x86-code multiboot if bios-intro disabled in setup
- bios: emulated SWI 37 MultiBoot by 80x86 code (optional speedup instant xmit)
- bios: emulated SWI 31 MidiKey2Freq by 80x86 code (for optional small speedup)
- link: tested single gamepak with new diag.a22 multiboot function (normal mode)
- help: corrected swi 37 multiboot (r0 instead r7)
- link: single gampak link option (cartridge rom locked out in slave units)
- freeware: discontinued freeware version upon crackers request - cu good bye

15th January 2003 - version 1.4c
- dos: arjzip-preview rejected except in f12-menu (eg. not editfile,assfile,etc)
- cartloader: saves old battery/eeprom data to <oldcartname>.SAV instead newname
- cartloader: deallocates old ROM and saves SAV (thanks matt, also snaploader)
- dos: sound engine initial sampbufhead=10 (instead =2) avoids DMA overrun noise
- debug: f8-key: run until current subroutine ends ( higher POP PC/BX LR)
- dos: sound emulation (sound blaster, pc speaker, covox/lpt, gravis ultrasound)
- dos: faked newint03 recovers old interrupt enable flag, added cpu detection
- dos: also hooks smooth 1024hz RTC timer INT70 (with realmode es:bx expire flg)
- debug: shows used GBA CPU time vs free HALT INTRWAIT time (regs/bar + f10/nn%)
- dos: no$gba.exe may be renamed, cpsr flags displayed, stack x-width adjusted

4th January 2003 - version 1.4b - DOS related only - first DOS version
- dos: internal memory (de-)allocation manager (supports best-fit allocation)
- dos: exeloader supports upx'ed progdata (working relocation and decompression)
- dos: keyb and timer interrupts double-hooked in protected mode and real mode
- dos: raw-dos/extended-mem A20 enable (not sure if required EACH pmode_kick?!)
- dos: xcept warning messages in dynamic textboxes with automatic line wrapping
- dos: upx 32bit/pe help text overlay de/compression (and max compress size>64K)
- dos: also working in raw dos mode (ie. without vcpi/emm386 interface)
- dos: keyboard game controls 32bit interrupt hooked within int descriptor table
- dos: hires 640x480 detects & supports VESA bios/driver or tseng ET4000 chipset
- dos: includes 16bit loader for 32bit mainprog as 'stub' directly in no$gba.exe
- dos: virtual 32bit vram addressing (selects 64K vram banks upon page faults)
- dos: successful exitback from 32bit to dos with clean vcpi/xms deallocation
- dos: 32bit/exe working & alive with 16bit/dos!! (mem alloc, filesys, dos INTs)
- help: added note that KEYCNT interrupt is not suitable for normal user input
- help/webpage: removed $1000 single user licence (there was no real/commercial
  interest, except that a lot of kids believed that it was addressed to gamers)

14th December 2002 - version 1.4a
- dos: started loader.exe, loads the 32bit exe, with old viewpoint pmode code
- video: supresses un-rotated bitmap drawing if refxy was rewritten within frame
- i/o map: resolves curr scanline (vcount) and irq scanline in gmb LY/LYC terms
- xcept: additional warning info (cpu/irq/dma, read/write/jump, target addrress)
- help: added typical minimum/maximum memory sizes in lcd vram overview chapter
- video: fine-adjusted scanline drawing time in relation to display DMA/IRQs
- dma: fixed [regpc] prefetch emulation for dmasad=unused memory (mattdeadbeef)
- gui: small 5x12pix font uses APP850.FON if DOSAPP.FON doesn't exist (486micha)

5th December 2002 - version 1.4
- help: uploaded second standalone version of gbatek docs (txt & htm format)
- eeprom/sram: excluded eeprom in cutdown version (cutdown supports sram only)
- help: added note about internal bg reference point registers (rotscal chapter)
- video: rotscal uses <internal> refxy, fallback on <rewrite> (1000 thanks matt)
- video: truncates TEXT TILE MEMORY to max 64K (wraps 601XXXXh to 600XXXXh)
- video: truncates ROTSCAL BG MAP to max 64K (wraps 601XXXXh to 600XXXXh, matt)
- eeprom/sram: initialized on loadrom (FF-filled), loaded/saved to .SAV file
- rom: emulates garbage reads from unused area (that is not mirror of ROM area)
- help: updated WAITCNT description, moveed Cart Header into Cartridges chapter
- help: new chapters about cartridge ROM,SRAM,EEPROM (and briefly Flash,DACS)
- help: revised the 80000A0h-8000FFFh multiboot/slave copy-protection text
- xcept: renamed "Address out of range (mirror)" into "Invalid or mirrored addr"
- eeprom: emulated serial external backup eeprom, eeprom bus-width auto-detected
- setup: added backup media option: none, auto, sram32k, small/large eeprom
- sram: emulated 16/32bit read/write to/from 8bit SRAM (with optional warning)
- setup: replaced the silly oversized/textless sample-rate trackbar by combobox
- dma: step-by-step transfer (slower, but handles bad addresses/range overflows)
- 26 Oct 02: downloaded other EMUs, 28 Oct 02: purchased Fzero+SuperMarioAdvance
- i/o map: displays banked CPU registers (irq,svc) (or usr if cpsr=irq/svc)
- i/o map: displays name of current SIO/RCNT mode, displays WRAM 256K waitstates
- i/o map: displays WS1,WS2, bugfixed WS0 bit position, moved to "Timer" screen
- i/o map: displays internal/current DMA sad/dad, displays greenswap register
- i/o map: subclassed DMA Timing=3 for DMA0-3 (reserved,fifo,fifo,video capture)
- help: minor changes to unpredictable things chapter (ROM,SRAM,UNUSED mirrors)
- cpu: emudetail high-memory 10000000h-FFFFFFFFh emulated as unused (no mirrors)
- io: emudetail writing to greenswap (port 002h) strips unused bits mask 0001h
- debug: animate (repeated trace) stops on debug warnings (eg. suspicios opcode)
- xed: during scrolling forces statusbar UpdateWindow (eg. PgDown line-numbers)
- win31/win95+explorer: forcefully adds 5x12 terminal debug font (dosapp.fon)
- win31/compatib: processes WM_KEYDOWN directly instead using CreateAccelerator
- win31/compatib: uses SetTimer/18.2hz if timeSetEvent/1024hz failed/unsupported
- win31/compatib: draws cpu-flag checkboxes <mirrored> by <SetDIBitsToDevice>
- win31/only: redirects metrics SM_CXYEDGE (3D, 2pix) to SM_CXYBORDER (1pix)
- win31/only: uses WM_RBUTTONUP to simulate WM_CONTEXTMENU (right mouse button)
- win31/only: debug windows scrollrange reduced to max 15bit (instead 16bit)
- win31/only: uses exact ysize for setup combo boxes (doesn't have auto-adjust)
- win31/only: suppresses additional/unsupported fileselect template (cart/snap)
- win31/only: simulates LB_SETCOUNT by repeated LB_ADDSTRING (files.lst menu)
- win31/only: debug font uses ANSI courier new (doesn't have OEM courier new)
- win31/bugfix: fixed unsaved EDI screen-dest for XED double-keys (eg. Ctrl-K,B)
- win31/bugfix: data/code splitter ReleaseCapture(-N/A-), apply only if captured
- win31/bugfix: added ReleaseDC for each GetDC (device context 'memory' leaks)
- win31/bugfix: fixed missing pusha/popa in hack/splitter/xed/game_class_procs
- internal: cleaned up hdd (now 150 MB free space!), renamed path of no$-project
- dos: reached zero linker errors, linked non-relocatable (exe is raw code+data)
- idiag: internal diagnostics screen shows size of currently loaded cartridge
- dos: moved vram-screen-select to headline (more room), palette and oam screens
- dos: 640x480pix vram viewer displays user screen, bg maps, bg/obj tile viewer

23rd September 2002 - version 1.3b
- help: added note about SWI 01h RegisterRamReset dispcnt destroyed/forced blank
- palette viewer: displays R,G,B intensity bars (to the right of R,G,B values)
- oam viewer: displays rot/scal selection,parameters,address, displays x/y-flip
- oam viewer: displays all 3x16bit attr/dat values (directly as stored in OAM)
- bg map viewer: marks unused/disabled BG layers by diagonal red-line
- tile viewer: user selectable depth (either for ALL, or only for UNKNOWN tiles)
- palette viewer: displays 16bit color definition (additionally to R,G,B values)
- tile viewer: if all used tiles in a row are same depth, used for the whole row
- tile viewer: if all used OBJs are of same depth, used for unused OBJs also
- tile viewer: if all used BG tiles're same depth, used for unused BG tiles also
- tile viewer: autodetects depth+palette of used tiles (by examing bgmaps+oam)
- tile viewer: merged 4bit and 8bit tiles in one screen (8bit tiles stretched)
- tile viewer: new option for masking BGMAP/BITMAP areas in tile viewer
- tile viewer: removed old 8bit gameboy related options, better tile-details
- tile viewer: autodetects vram/tile usage (depth 4bit, 8bit, bg-map, or unused)
- tile viewer: created 3 tile screens (each representing 32K out of 96K vram)
- font: removed small 5x8 pix no$gba.fnt, uses 5x12 terminal/dosbox font instead
- oam viewer: bug fix: now invalidates all OBJs during running emulation
- oam viewer: shows currently selected OBJ enlarged (drawn at actual size x2)
- oam viewer: shows OBJs larger than 8x8 pixels (drawn at best fit in oam map)
- dos: cartloader warnings working in 80x25 text format (xboo-like dynamic box)
- dos: 1st-time built without import32.lib, reduced linker errors from 80 to 12
- help: corrected SWI 0Ah ArcTan2 (two parameters, X and Y, thanks Randy Linden)
- keyb: fixed keyboard accel entrysiz (6 instead 5) (showed up as stuck b-key)
- disass: indicates thumb code by drawing (T) in symbolic mode, ie. <addr> (T)
- debug: also displays irq/swi/reset/debug-handler addresses as "bios-labels"

9th September 2002 - version 1.3a
- debug: cursor right/data follow (eg. "ldr r2,[r4,8h]" --> DATA window to r4+8)
- debug: displays SWI function-names as "bios-labels" (if symbolic info loaded)
- debug: displays "longlabels" in statusbar (if code window abbrev as "longla+")
- internal: killed separate "ass" arm assembler file (merged with "ext" pack)
- help: added notes about elf file support in symbolic debug info chapter
- dos: added dos-style xboo/multiboot upload box (height increases dynamically)
- vram viewer: oam screen displays all 128 OBJs, uses <gba-ratio> game screen
- snapshots: loading+saving (uncompressed though) (including multiple machines)
- cartloader: new warnings on missing rom-entry-point, or bad fixed-value-96h
- video: uses VCOUNT only (removed internal sinline_ly/sinline_adr variables)
- sound: added previously missing 'eintcount' (caused dirty timing-accuracy)
- cpu/except: fixed the new jump-range warning (didn't worked at all, whoops)
- screenshots: uncompressed 8/16/24bit truecolor bitmaps (instead 8bit GIFs)

28th August 2002 - version 1.3
- help: first-time uploaded standalone version of gbatek docs (txt & htm format)
- help: removed some question marks, moved "cpu usage" info to other chapters
- video: emulates forced blank (display disabled, the screen becomes white)
- intro: displays no$gba picture in small game window on startup (dumb bitmap)
- xcept: new hotkey (ctrl+e) to enable/disable all warnings, shown in statusbar
- cpu/xcept: suspicious opcode warning (opcode 00000000h, ANDEQ r0,r0,r0 ZF=0/1)
- fullprot: password box repaired (showed up more than daily on some computers)
- bios: optionally emulates bios by 80x86 code (fast,less accurate,except sound)
- i/o map: deciphered bios irq flgs, fixed bit10 fifo timer select (16bit value)
- dos: added dos-style i/o map screens + values (toggled by TAB in fullscr mode)
- i/o map: re-formatted video page (detailed window/special effects layer bits)
- help: updated color special effects chapter (various details, corrections...)
- a22i: supports ".fill length[,size[,filldata]]" only size=1=byte works though
- irq/xcept: added warning upon uninitialized IRQ vector (ie. [3007FFCh]=0)
- i/o map: fixed aaaa,bbbb,cccc,dddd type values (bug was aaaa,bbbb,bbbb,aaaa)
- breaks: membreaks [adr]!/? also working in I/O area (instead normal mem only)
- minibios: break requests delayed AFTER halt/intrwait (now also in minibios)
- minibios: fixed built-in bios SWI 4/5 (now pushes LR and functions exchanged)
- cpu/xcept: jump address warnings (jumps into bios/io/vram/sram/unused/mirrors)
- cpu/xcept: suspicious opcode warning (LDRT/STRT, and opcode 0000h=LSL r0,r0,0)
- cpu/xcept: warning if loading mis-aligned ARM address into R15 by ALU ops
- cpu: clock cycles for thumb ADD/MOV with Rd=R15 (slower as normal MOV/ADD)

15th August 2002 - version 1.2e
- bios: xboo/standalone version includes new download-gba-bios-to-file function
- gui: new option automatically place game window in upper-right of debug window
- gui: changed size of small game window in 5x8pix font mode (width/2, height/2)
- vram viewer: fixed y-position of red box (scrolled area in bgmap screens, jon)
- setup: fixed player#2..12 keyboard setup (mess-missed L/R buttons, thanks jon)
- dos: started working on dos version (win/exe with dos-style GUI parts working)
- video: emulates semitransp objs (still not perfect: allows OBJ-to-OBJ transp)
- debug: code & data scrollbars working (range excludes unused memory/mirrors)
- bios: warning if incorrect gba bios version (eg. older incompatible prototype)
- video: fixed special effect bug brightness down (and up) (thanks matt)

5th August 2002 - version 1.2d
- help: added cartridge/multiboot header overview (summary, one line per entry)
- help: corrected cartridge header KEY-number entry 09Eh (it's not a palette)
- sym/elf: displays labels in "ldr Rd,=Imm" and "add Rd,=Imm" lines (pool/adr)
- elf: loads labels from symtab/strtab (similiar .sym, but without tmb/arm/data)
- elf: cartloader loads elf binaries (apparently used by intellectual c coders)

30th July 2002 - version 1.2c
- arj/zip: cartloader works with directories (eg. Folder/File.ext -> File.ext)
- internal: simplified color version vram viewer (always 16bit depth internally)
- help: noted that Bg/ObjAffineSet use only 8bit angles (lower 8bit ignored)
- video: emulates color special effects (alpha blending, brightness up/down)
- help: window description (x2, y2, priority, master/enable bits, obj window)
- help: updated description of bitmap modes (bg2, rotscal, 8bit transp, obj 16k)
- sound: fixed 8bit writing to MSBs of SOUNDBIAS register (used by bios intro)
- video: emulates window 0 and window 1, obj window, and outside of window(s)
- video: emulates transparent BG color 0 also in 8bit bitmap mode
- video: simplified all scanline drawing to 16bit depth, mono greenswap working
- sio: emulates master bit and slave id number in multiplay mode
- sio: emulates normal mode SI input (opponents SO), fixed 8bit STRB [SIOCNT+0]
- help: corrected dma description, added video capture dma, wait 2 cycles note
- dma: emulates "video capture" dma (dma channel 3, start timing 3)

15th July 2002 - version 1.2b
- help: updated dma/fifo sound description (signed 8bit data, 32kHz resampling)
- help: corrected description of soundbias register (16MHz PWM, thanks aleksi)
- sound: bias level emulated (allows "manual" sample output by writing to 088h)
- sio: simultaneous emulation working (machine switch, 8bit/32bit normal link)
- sio: add/remove_machine working (multiple machines memory de/allocation)
- help: fixed bugged HLP/HTM bold headlines (eg. mkno$emp >>062h - SOUND1CNT_L)
- help: updated swi/bios description of Division, Decompression, IntrWait
- help: described GBA memory access time in Memory Map & System Control chapters
- help: described S+N+I data+code+jump cycles/waitstates in CPU Cycles chapter
- help: described undocumented "green swap" feature I/O 002h/bit0 (thanks shawn)
- video: emulated "green swap" feature (15bit/24bit color only, not 8bit mono)
- io: emulates unused fragment zero-readback eg. 08Ah, instead prefetch eg. 08Ch
- cartloader: blank-pads unused mem after file end (eg. 45K file in 64K buffer)
- breaks: fixed [200E000]! being badly remapped as [200C000]! (gmb echo relict)

4th July 2002 - version 1.2a
- controls: adjusted stick0/stick1 keystroke bits for GBA keyinput register
- controls: enabled stick0/stick1/snespad controls (been somehow outcommented)
- help: described undoc register 800h default/fastest 256K WRAM waitstates
- cpu: tested+fixed LDM+STM amod IB+DA indexing offset 4 (instead of n*4)
- internal: cleaned up io-core, removed relicts, ensured vals-data alignment
- tracing: processes "events" ie. vcount, timers, etc. are updated during trace
- debugmsg: added %r0%,%r1%,..,%r15% parameters, and %pc%,%lr%,%sp% aliases
- xcept: ignores another bug in the gba bios (memcopy instead memfill in intro)
- keyb: default L/R-Buttons changed to Left/Right-Alt keys (or L,R keys 2nd set)
- cpu: emulates variable 256K-WRAM waitstates (undoc "wramcnt" register, 800h)
- cpu: emulates variable ws0,ws1,ws2,sram game pak waitstates (waitcnt register)
- xcept: added mem 'range' warning message on reads from 0-3FFFh (readprot bios)
- debug: del-key in code window clears source code breaks (.brk --> nop)
- timers: fine-tuned timer start delayed 2 cycles, timer stop delayed 1 cycle
- i/o map: re-freshed timer counter registers after emu-run and tracing
- cpu: always uses time accurate GET/PUTMEM in ARM mode, too (not only for I/O)
- cpu: refixed thumb POP PC (bugged when used more accurate GETMEM stuff)
- a22i: recognizes "PUSH/POP{cond}" as ARM-alias for "STM/LDM{cond}FD [R13]!,"
- help: updated arm+thumb summaries (detailed syntax, cycles, flags, expl.)
- help: thumb chapter added execution time, and affected flags for all opcodes
- cpu: emulated exact S,N,I code/data/jump cycles for all thumb+arm opcodes
- a22i: accepts // as alias for CRLF (eg. "dcb 1,2 // dcw 1234h" in one line)

26th June 2002 - version 1.2
- fullprot: decrypter inserts username (clean and x-times encrypted in exefile)
- fullprot: added decription picture (thanks to ina+ulf for scanning the pic)
- fullprot: key-generator creates custom decryption proggy with username encoded
- fullprot: activated first-time-installation password box / re-removed hellobox
- regkeys: moved fullprot @@abs values into newer registration key files
- hellobox: added (previously empty) first-time hello box text in fullversion
- fullprot: new 6/2002-@@move/xchg_stuff in fullversion encrypter/decrypter
- help: added protection chapter, describes cutdown/fullprot, misuse warning
- help: rewritten the registering chapter, cleaned up the contents chapter
- help: described the new local+global break conditions (similiar no$gmb breaks)
- vram viewer: displays rotation/scaling bg maps (8bit map entries, 256 colors)
- cartloader: removed tetris as default romname
- f10key i/o map screen: fixed oversize width of tabcontrol and fifo groups
- exe/upx/i32: removed -9 switch, it's been much too slow on this computer
- cpu/io: supports thumb-LDM/STM to I/O area, get/putmem macros (star shooter)
- disass: hides LDR/STR-zero-offsets, ie. [r5,0] displayed as plain [r5]
- debug: cursor-right on SWI opcode moves directly to the SWI BIOS procedure
- debug/disass: status bar displays [address]=content for ldr/str/swp opcodes
- disass: fixed undisplayed "b" in "swpb" opcode (missing inc xdi)
- disass: optionally shows native ARM/C64-style syntax (fancy {rlist}, #0xHex)
- a22i: "..ds", ".space", and "defs" aliases for "%" (sic), db/dw/dd for dcb/w/d
- a22i: "x=n", ".equ x,n", and ".define x n" aliases for "x equ n"
- a22i: ignores .global/.extern/.thumb_func, and quotes in .include "filename"
- a22i: redirects "#directive" into ".directive"
- a22i: accepts ASL as alias for LSL, and "LSL Rd,Imm" for "LSL Rd,Rd,Imm" (etc)
- a22i: new conditions ".ifdef" and ".ifndef", .bss/.text alias for .data?/code
- a22i: fixed nested ".else", and fixed recovering from unexpected ".endif"
- a22i: treats "@@@" and "@ ..." and "@*" and "@..." as ";..." comments
- cpu: accepts meaningless LDR|STR{B}T as alias for LDR|STR{B} (1bitBallWall)
- a22i/edit: filemenu shows names with extension .S for "hll/c-based asm coders"
- a22i: recognizes "align" alias for ".align" / each without param as ".align 4"
- a22i: fixed thumb mode "add/cmp RdHi,op" (xored bits to eax instead opcode)
- disass: resolves "sub Rd,r15,disp" as "sub Rd,=addr" (negative relative addr)
- help: added mailing address and bank account in registering chapter
- a22i: automatically inserts a literal .pool at the end of the source code file
- a22i/help: new chapter about asm directives, syntax, pseudo instructions, etc.
- a22i/help: new chapter about online assembler and a22i source code assembler
- a22i: recognizes "code16" and ".code 16" as alias for ".thumb" (..32 for .arm)
- a22i: recognizes ".end" as alias for "end", and defb/defw/defd for dcb/dcw/dcd
- a22i: recognizes .ascii/.byte/.hword/.long as aliases for dcb/dcb/dcw/dcd
- a22i: accepts negative immediates for ADD/SUB and CMP/CMN (opcodes exchanged)
- a22i: recognizes "adr Rd,Imm" as alias for "add Rd,=Imm" (aleksi source)
- a22i: recognizes "ltorg" and ".ltorg" as aliases for ".pool" aka "..ltorg"
- a22i: re-fixed blindlabel lockup when entering dcb/dcw/dcd in online assembler
- xcept: allows to access -all- 16bit I/O ports as 32bit ports (RCNT, etc.)
- xboo/no$gba: uses msctls_progress<32> for win2000 (no$msg/xboo/bung/fcomp/x51)
- xboo/no$gba: added missing burst boot description + sample code in help text
- xboo/standalone: added new config file xboo.cfg (for default port/delays)
- xboo: software "pull-ups" and delays (optionally for cables without resistors)
- xboo: speedup, optimized chksum/transfer program code (for real CPUs<=66MHz)
- xboo: slowdown, delays after each transfer-word (for lame CPUs>=100MHz)
- xboo: timings, uses i/o waitstates for timing, fully cpu-speed independent
- breaks: global and local break conditions working (eg. r0=100, r2>=r0, etc.)

31th May 2002 - version 1.1c
- disass/sym: faster insinlist for larger amounts of datafields from sym file
- breaks/help: added chapter about Breakpoints in Debugging help text manual
- breaks: cpu-core handles [2000000]! and [2000000..20001ff]? style mem breaks
- breaks: allows to define conditional breaks with 32bit addresses (ctrl+b)
- internal: recombined z80/gui and gmb/gack family insin/clr/delin/list code
- disass/sym: loads arm/thumb info, and data fields from debug info .SYM file
- a22i: stores addresses of byte/word/dword/ascii data fields in .SYM file
- a22i: stores addresses of arm/thumb program code memory fields in .SYM file
- disass: home-key moves to "r15 AND 0e000000h" (typically begin of RAM or ROM)
- disass: ignores non-user-memory labels/symbols (eg. "width equ 30")
- disass: implemeted CPU state zones (arm/thumb), pre-def BIOS cpu state areas
- disass: supports 32bit "dcd" datazones
- disass: multiboot header RAM datazone (cutdown & fullversion with <=256K ROM)
- disass: resolves GBA bios datazones, treats I/O+palette+OAM as DCW datazones
- video: speed-up by using color xlat macros instead of call's to procedures
- vram viewer: oam screen supports laser pointer/red box at signed x/y positions

22nd May 2002 - version 1.1b
- debug main screen: added separate bg0-bg3 in vram viewer "window" menubar
- vram viewer: some new GBA details in OAM screen (instead old no$gmb relicts)
- video: emulated BG mosaic/vsize (tested ok) and OBJ mosaic/vsize (not tested)
- bugfix: fixed bad lockup that occured in v1.1a public cutdown versions
- help: added note that bios RegisterRamReset/clear-OAM does NOT disable OBJs

18th May 2002 - version 1.1a
- webpage: uploaded "Magic Floor" puzzle game with sample source code included
- a22i: implemented .code and .data? directives (aliases for old .rom and .ram)
- bios/xcept: ignores swi=1/bit5=0 garbage write to unused io-port 114h
- fullprot: created new/gba reg keys, fullversions run only with key
- fullprot: improved registration key code confusion
- help: updated the description of the cutdown version
- video: emulates not-displayed OBJ tile numbers 0-511 in bitmap BG modes
- sound: fixed lock-up on dma-sound-output when sound output disabled in setup
- fullprot: improved protection of encrypted full version (forcefield/tables)
- bg gif: draws background gif at 8bit/pix (even if emu uses 15 or 24 bits)
- vram viewer: created separate map-screens for each bg layer bg0-3

24th April 2002 - version 1.1
- video: fixed bg mode 0 double map-ysiz (shr eax,6 (instead 5) for 4000h->100h)
- cutdown: split into separate sound and color versions as additional protection
- io/dma: emulates address reload upon dma re-start (bios dma-fifo intro sound)
- sound: emulates digital FIFO/DMA sound channels (not sure if volume+stereo ok)
- i/o map: bldcnt deciphered (not sure if there may be only ONE target each ?)
- i/o map: deciphers mosaic bits, and bldalpha and bldy (eva,evb,evy)
- help: re-sorted bit numbers in sound chapters (incrementing 0..15 ordering)
- help: added note about buffer synchronization in DMA/FIFO sound chapter
- i/o map: displayed channel 3 waveram banks, deciphered sound control bits
- i/o map: deciphers keycnt irq enable/condition bits
- i/o map: deciphers waitcnt bits, displays bios irq vector [3007FFFh]
- io/timers: added auto-reload for count-up timers
- io/timers: changed timer IRQ address to 202hex (instead 202 decimal)
- io/timers: repaired badly inverted count-up bit
- internal: changed dma/timer macro param ch to chn (ch could be a 8086 reg)
- sound: implemented "FM" channels 1-4 (from no$gmb, with GBA modifications)
- internal: replaced cs32:[gba_intcount] by vals [gba_eintcount] (multi gbas)

17th April 2002 - version 1.0e
- video: added init_color_xlat_table at startup (fixes initially black colors)
- io/dma: emulates vhblank & hblank dma transfers, and repeated dma transfers
- io/dma: emulates mixed incrementing/decrementing dma, and increment-reload
- cpu: fixed thumb ror flags (80x86 ror opcode didn't support zero/sign flags)
- cpu: emulated misdocumented mull V-flag (apparently -same-, not "destroyed")
- cpu: repaired jump addresses to muls/mlas/umulls.. (instead mul/mla/umull..)
- cpu: dis-inverted "cmn" opcode carry (ie. addition-style instead subtraction)
- cpu/xcept: optionally ignores access to cpsr_c in user mode without warning
- help: added note about 'hidden' H-Blanks in DISPSTAT description
- io: writing to DISPSTAT msb and/or lsb may directly generate new IRQs
- io: repaired v-counter interrupt in scanline 0, emulated hblank stat/irqs
- io: emulates 32bit read from dispstat+vcount as one 32bit value
- help: corrected return value of Div (and DivArm) functions (r3 instead of r2)
- i/o map: deciphered control bits for dma, timers, video, and interrupts
- i/o map: split into separate tabbed screens (video,bg,dma,sound,timers,other)
- cartloader: added .mb as gameboy file extension (used by some multiboot demos)
- video: repaired text mode scrolling/size (took size from bgoffs instead bgcnt)

11th April 2002 - version 1.0d
- xcept/debug: moves codewindow cursor onto -previous- opcode (=fault position)
- cpu: emulates misaligned LDM/STM/PUSH/POP base register (warning optional)
- cpu: thumb POP PC ignores PC/Bit0 (always stays in thumb state even if Bit0=0)
- a22i: fixed address operand shifting for thumb mode BL instruction
- a22i: fixed misplaced PC/LR operands for thumb mode PUSH/POP instructions
- video: uses BIG color translation table with 32K entries (eventually faster)
- video: fixed exchanged red/blue, and 24bit-black-blue, hopefully okay now :-)
- cpu: emulated reading of unused cpsr/spsr bits (bits 8-27)
- cpu/xcept: emulates not-existing spsr in user/system mode (alu,msr,mrs,ldm)

9th April 2002 - version 1.0c
- video: colors are not tested (included test-rgb.gba for testing on rgb-vga)
- vram viewer: colors in palette screen, tile screen, enlarged tile, bg map
- disass/dump to file: rejects too large/signed 32bit length (thnx randy+costis)
- video: emulates gba-display-style 'truncated' color intensities (optionally)
- video: color emulation, 15bit and 24bit output

5th April 2002 - version 1.0b
- help: described debug messages, SYM files, debug hotkeys, installation
- cpu/disass/a22i: supports .msg 'string' debug messages (raw text only yet)
- bios: warning message if accessing SWIs other than 2-5 (if GBA.ROM not found)
- bios: built-in mini BIOS supports IRQs and SWI 2-5 (used if GBA.ROM not found)
- cpu: uses separate GETMEM and PUTMEM for SWP opcode (xcept and io handling)
- xcept/flat32: refreshes debugscreen -before- display textbox/warning messages
- xcept/setup: provides strict and bios-compatible memory range checks
- xcept/setup: abbreviated to Halt/IntrWait warning message (formerly clipped)
- cpu/memory: emulates read-protected bios area, and unused 4000-1FFFFFF memory
- help: corrected description of BIOS memory read-protection
- io/memory: emulates unused I/O area 400h and up, and undoc port 800h/mirrors
- a22i: recognizes MOV as alias for both MSR and MRS opcodes
- a22i: recognizes the newer "_csfx" extension/combinations for MSR opcode
- cpu/memory: emulates 64K+32K+32K vram mirrors
- cpu/memory: emulates mis-aligned data memory accesses (aligned/rotated)
- cpu/memory: write-protects readonly memory
- xcept/setup: new/optional warning on writing to readonly memory
- xcept/setup: new/optional warning if memory addresses out of range
- xcept/setup: new/optional warning for 8bit writes to palette/vrom/oam
- xcept/setup: made "Alignment" warnings optional (separately for read/write)
- xcept/setup: made "Bad I/O" and "Reserved CPSR Bits" warnings optional
- xcept/setup: killed old 8bit options, moved some options from other to xcept
- debug/setup: changed emulator identification from HL=0CA5H to R0=0CA5H
- debug/setup: renamed the follow registers HL,BC,DE,SP,PC to R0..R15
- bios: added filename "GBA.ROM" in bios-not-found error message at startup
- xcept: allows RegisterRamReset to write zero's to unused I/O ports
- help: added HEX values for SWI-function numbers and CPU-mode CPSR values
- help: corrected reset function (SWI 0 and SWI 1) descriptions

22nd March 2002 - version 1.0a
- cartloader: fixed fileselect double\\backslash path glitch (also for no$gmb)
- arjzip/preview: long filenames, cmdline/files.lst ARJ:GBA format (from zx81)
- arjzip/preview: autoload if containing 1 file (even misnamed X.GBA in Y.ZIP)
- arjzip/preview: allows to select 1 file if containing multiple files (zx81)
(Requires ARJ.EXE and/or PKUNZIP.EXE installed in a PATH directory.)

13th March 2002 - version 1.0 - first public release
- cutdown: startup message box
- cpu: rev-engineered/emulated LSL/LSR/ASR/ROR with Register-00 shift amounts
- cpu: rev-engineered/emulated THUMB LSL/LSR/ASR with Immediate-00 shift amounts
- a22i: supports pseudo instruction "LDR Rd,=Immediate" by using literal ".pool"
- debug: displays non-symbolic addresses at beginning of datazone lines
- debug: disassembler automatically comments SWI opcodes, eg. "swi 2 ;Halt"
- debug: keystroke/mousebutton breaks wait for completion of BIOS-Halt-handler
- debug: F2-breaks and source code breaks (.brk aka mov r11,r11) working 12/01
- cpu/io: emulated I/O access through ARM mode 32bit ldm/stm instructions
- video: displays truncated left/right offscreen normal and xflipped objs
- setup: optional speedup if emulator caught in Halt/IntrWait-less 'dumb' loops
- video: rotating/scaling OBJs working, rotated/scaled left/right offscreen OBJs
- setup: optional warning message if Halt/IntrWait not used for longer period
- setup: optionally displays topmost screenlines dark as caused by real shadows
- setup: option for executing nintendo-logo bios boot procedure upon reset
- video emulation: variable bg map size in bg modes 0-2
- video emulation: bg rotation/scaling in all bg modes 1-5, yflip in mode 0-1
- video emulation: supported tilebased bg mode 2, and 32K-bitmap bg modes 3,5
- vram viewer: user screen, bg0 map, bg0 tiles, palette viewer
- debug/stck: fixed initial stackwindow position, displays 32bit stack data
- setup: initially defaults to debug font size matching for local display
- news: russian cosmonauts have successfully repaired the mir, 18th Oct 2001
- io/help: rev-engineered, described, and emulated Timers (counter/reload/ctrl)
- a22i: fixed LDR/STR Rd,[Rb,Rm] stack fault lockup
- io: emulated reading from writeonly or unused io-addresses
- cpu/reset: initializes all CPU registers (especially stack ptrs) as by BIOS
- cpu: fixed STM [Rb],...,R15 (probably rarely used though)
- a22i: assembler recognizes ADD Rd,=RelativeAddress in ARM and THUMB modes
- multiboot: added multiboot upload function, and cable description, etc.
- keyb: emulated L/R buttons, added SNESPAD support for GBA (both not tested)
- setup: immediately recognizes changed debug fontsize without re-opening hack

27th August 2001 - version 0.1 -  first nonpublic beta release
- emailed devrs (and received not so much feedback, and lost interest)
- most or all tested games/demos working (chaos89 turned out to be really dull)
- various news, in short, cpu and simple video/keyboard emulation are working

July 2001 - version 0.0 - cpu only - unreleased
23th July 01 - emailed devrs (and received lots of feedback)
20th July 01 - a22i source code assembler, resolves forward references, sym file
19th July 01 - a22i online assembler for 16bit THUMB instruction set
18th July 01 - a22i online assembler for 32bit ARM instruction set
17th July 01 - debugger 32bit addressing (frb,dta,brk lists), F4-key crackbreaks
15th July 01 - cpu_arit_add/sub_flags chaos89 traces forever without lockup
14th July 01 - memory emulation, adjust_addr gba_rom/ramseg, traces 13 opcodes
12th July 01 - succesfully traces through first four (4) opcodes in chaos89 :-)
11th July 01 - assembled TMB emulation core with 0 errors (and lots of notyets)
10th July 01 - assembled ARM emulation core with 0 errors (and lots of notyets)
5th July 01 - beach; completed gba-cpu primary ARM/TMB jump lists
4th July 01 - beach; parts of displayed registers in debugger
3rd July 01 - beach; finished TMB disassembler untested
2nd July 01 - finished ARM disassembler tested with chaos89.bin
1st July 01 - programming started (arm 32bit disassembler)

ARM doc started 27th March 2001, finished 30th March 2001
GBA doc started 22nd March 2001, finished 31st March 2001

No$gba Version Summary
v2.7b - 10 Nov 13 - bigger nds flash.sav, 16bit audio, poc-xboo
v2.7a - 17 Aug 13 - fullscreen, fixes/details, started DSi research
v2.7  - 23 May 13 - various gba/nds/cpu/gui improvements and details
v2.6b - 24 Jan 08 - small bugfix (hll-debug-ver only)
v2.6a - 23 Jan 08 - faster/better/shadow/edge/polyid/capture/backupdetect/etc.
v2.6  - 18 Dec 07 - 3d soft-renderer
v2.5c - 20 Nov 07 - some nice stuff
v2.5b - 03 Nov 07 - 3d frameskip, 3d vram viewer, wifi details
v2.5a - 04 Oct 07 - debug version bugfix
v2.5  - 04 Oct 07 - more and faster (softlight/speedup/timing)
v2.4f - 17 Sep 07 - couple of nice details
v2.4e - 03 Sep 07 - nds ards/cbds cheats
v2.4d - 21 Aug 07 - lots of new info on wifi and ds-lite
v2.4c - 01 Jul 07 - details (ereader and gui)
v2.4b - 05 Jun 07 - DS Wifi, GBA e-Reader
v2.4a - 04 Apr 07 - DS adpcm sound and 3D gxfifo irq fixes
v2.4  - 21 Mar 07 - DS 3D skinning, rear-plane bitmap, screenshots
v2.3d - 23 Feb 07
v2.3c - 04 Feb 07
v2.3b - 20 Jan 07
v2.3a - 04 Nov 06
v2.3  - 04 Aug 06
v2.2f - 18 Jun 06
v2.2e - 18 May 06
v2.2d - 09 May 06
v2.2c - 18 Apr 06
v2.2b - 04 Feb 06
v2.2a - 23 Jan 06
v2.2  - 22 Jan 06
v2.1b - 30 May 05
v2.1a - 23 May 05
v2.1  - 17 May 05
v2.0g - 25 Mar 05
v2.0f - 17 Mar 05
v2.0e - 15 Mar 05
v2.0d - 01 Feb 05
v2.0c - 29 Jan 05
v2.0b - 18 Jan 05
v2.0a - 29 Sep 04
v2.0  - 09 Sep 04
v1.9c - 29 Aug 04
v1.9b - 22 Aug 04
v1.9a - 30 Jul 04
v1.9  - 12 Jul 04
v1.8b - 30 Jun 04
v1.8a - 27 Jun 04
v1.8  - 24 Jun 04
v1.7h - 01 Jun 04
v1.7g - 25 May 04
v1.7f - 30 Apr 04
v1.7e - 29 Apr 04
v1.7d - 29 Apr 04
v1.7c - 28 Oct 03
v1.7b - 23 Oct 03
v1.7a - 24 Sep 03
v1.7  - 15 Sep 03
v1.6c - 18 Jul 03
v1.6b - 15 Jul 03
v1.6a - 23 Jun 03
v1.6  - 25 May 03
v1.5b - 01 May 03
v1.5a - 11 Feb 03
v1.5  - 04 Feb 03
v1.4c - 15 Jan 03
v1.4b - 04 Jan 03
v1.4a - 14 Dec 02
v1.4  - 05 Dec 02
v1.3b - 23 Sep 02
v1.3a - 09 Sep 02
v1.3  - 28 Aug 02
v1.2e - 15 Aug 02
v1.2d - 05 Aug 02
v1.2c - 30 Jul 02
v1.2b - 15 Jul 02
v1.2a - 04 Jul 02
v1.2  - 26 Jun 02
v1.1c - 31 May 02
v1.1b - 22 May 02
v1.1a - 18 May 02
v1.1  - 24 Apr 02
v1.0e - 17 Apr 02
v1.0d - 11 Apr 02
v1.0c - 09 Apr 02
v1.0b - 05 Apr 02
v1.0a - 22 Mar 02
v1.0  - 13 Mar 02
v0.1  - 27 Aug 01
v0.0  - 23 Jul 01
Back to no$gba page