|Hotkeys in Debug Mode|
Cursor (*) Move around Cursor Right Follow (in codewin: map window to jump/call dest adr) Cursor Right Follow (in stckwin: map codewin to return adr) Cursor Left Undo follow (if nothing to undo: goto program counter) Page Up/Down (*) Move around Home (*) Goto Start or to 0000 End (*) Goto End or to IO-Area (FF40 codewin, FF10 datawin) Ret (*) Center/Uncenter current line in code window Shift+Cursor Change Active Window (Code,Data,Stck,Regs) Shift+Cursor (*) Toggle between Hex- and Ascii-input in data window Tab (*) Toggle Standard and Symbolic Display in code window Tab (*) Toggle Lower Window (Data or Break/Watch) Ctrl-B Enter Breakpoint Address, Condition Ctrl-N Find Next Breakpoint Ctrl-G Goto Address (prompts for address) (does not affect pc) Ctrl-E (*) Toggle Warnings on/off Ctrl-O OS Shell (calls DOS, type 'exit' to come back) Ctrl-I Inspect (Define Watchpoint address) Ctrl-R Reload Cartridge Ctrl-S Search (see below! this works a bit strange) Ctrl-C Continue Search Ctrl-V (**) Toggle Screen Size 25/50 lines (DOS version only) Ctrl-D Toggle Datazone (see below) Ctrl-A/T/X (*) Add/Toggle/Remove Machine (up to 12 gameboys at 1 time) Ctrl-L/W Load/Save Snapshot (RAM, CPU-state and ROM-cartname) Ctrl-Left/Right (*) Decrease/Increase start address of window by one byte <..> Assemble into Memory (input box appears on 1st char) F1 Help F2 Toggle Breakpoint at cursor F3 Trace with calls executed F4 Run to Cursor F5 VRAM Viewer (last accessed screen, TAB toggles) F6 Jump to Cursor (sets programcounter (pc) and rombank) F7 Trace (Execute one instruction) F8 Run until current sub-routine returns F9 Run (until breakpoint or user break) F10 Hardware Info Screen (splits in 50 lines DOS mode) F11 Setup Screen (last accessed setup window) F12 Cartridge Menu (last accessed, filename or files.lst) Scroll Lock Toggle Datacur follows Codecur (or 16bit reg) on/off Keypad "*" Reset and Run Keypad "-" (*) Continue Run (same as F9) ESC (*) Popup File Menu or close current window/menu Alt-<..> (*) Popup Menus (eg. Alt-F for File Menu) Alt-A Animate (Repeated trace until key pressed) ALT-B Place Bookmark ALT-E Edit File Alt-X Exit No$gba Right Mouse Button (*) DOS: Continue Run (same as F9), Windows: Context Menu Left Mouse Button (*) Select Window, Place Cursor, Toggle Breakpoint or CPU-flag, Open Popup Menu, Click Option, etc.
|Hotkeys in Emulation Mode|
Up Q Cursor-Up Down A Cursor-Down Left O Cursor-Left Right P Cursor-Right Button A Space Keypad-"0" Button B Tab Keypad-"." Select Left-Ctrl Keypad-"3" Start Enter Keypad-Enter Button L Left-Alt L Button R Right-Alt R
Alt+X Exit No$gba Esc Back to debugger keypad"-" or ^pause Back to debugger keypad"*" Reset (Restart Game) keypad"/" or pause Pause (Context Menu) keypad"+" Whoosh. Run at max speed as long as key hold down. Shift+F1..F5 Toggle Video Layers BG0..3,OBJ on/off F1..F4 Toggle Sound Channel 1..4 on/off F5..F6 Toggle Sound FIFO A..B on/off F7 Quickload Snapshot (as 7 looks like L) F8 Quicksave Snapshot (as 8 looks like S) F11 Setup (Options) F12 Cartridge menu both mouse buttons Back to debugger left mouse button Pause (menu) (under windows: right mouse button) other button(s) Joypad emulation (fire/activate) mouse move Joypad emulation (activated by first button click)
$, r0<>0 --> break at cursor position if r0 is non-zero $, r0 & 2 --> break at cursor position if bit 1 of r0 is set $, r0 !& 2 --> break at cursor position if bit 1 of r0 is zero 8001234, [r1]=r2 --> break at 8001234 if r1 points at a value equal to r2 wrchr --> break at wrchr (always, no condition, same as F2-key) wrchr, r0=0d --> break at wrchr if r0 contains 0dh $,  > A0 --> break at cursor if VCOUNT is greater than 0A0h $, r4 <= r5 --> break at cursor if r4 is less or equal than r5 $, [r4] <> [r5] --> break at cursor if r4 points at other value than r5 mainloop, ..5 --> break every 5th time that pc gets to mainloop (timer)
Operators: Operands: Timer Identifier: == = < > & n [nn] r .. != <> <= >= !& nn [rr] rr
r0 = 0 --> break whenever register r0 becomes zero >20 --> break whenever VCOUNT becomes greater than 20h
! ;stops on any byte/halfword/word write to [2000100h] ? ;stops only when writing new/changed data [06000000..06003fff]! ;stops on any write to first 16Kbytes of VRAM [02000000..02003fff]? ;stops only when writing new/changed data
|Profiling & Performance Monitoring|
|Clock Cycle Comments|
mov r12,r12 ;first ID b @@continue ;branch opcode that skips the message data dcw 6464h ;second ID (ascii 'dd') dcw 0 ;reserved for flags dcb 'Hello' ;user defined ascii data (max length 120 bytes) dcb 0 ;ending zero (normally not required, see below) .align 4 ;align following code (use align 2 in thumb mode) @@continue:
r0,r1,r2,...,r15 show register content (displayed as 32bit Hex number) sp,lr,pc alias for r13,r14,r15 scanline show current scanline number frame show total number of frames since coldboot totalclks show total number of clock cycles since coldboot lastclks show number of cycles since previous lastclks (or zeroclks) zeroclks resets the 'lastclks' counter
.msg 'Hello' .msg 'Source Addr = %r0% ; Dest Addr = %r1% ; Length = %r2%' .msg 'Stack Pointer = %SP%' .msg 'Decompression time: %lastclks% cycles'
|Symbolic Debug Info|
;no$gba symbolic information table example 08000000 .arm 080000C0 start 08000124 mainloop 080001EC .thumb 080001EC init_video 08000210 .arm 08000210 irq_handler 08000228 jumplist 08000228 .dbl:0010 08000414 text_array 08000414 .asc:0017 0800042B .asc:000F 0800043A .asc:0012 06000000 vram_base ;...
.arm ;following code is in 32bit/ARM format .thumb ;following code is in 16bit/THUMB format .byt:NNNN ;next NNNN bytes are 8bit data (dcb lines) .wrd:NNNN ;next NNNN bytes are 16bit data (dcw lines) .dbl:NNNN ;next NNNN bytes are 32bit data (dcd lines) .asc:NNNN ;next NNNN bytes are ascii data (quoted dcb lines) .pool ;dummy label (indicates that following is literal pool)
|The No$gba Protection|
1) Cartridge/ROM emulation program code is missing in both versions. 2) Sound emulation program code missing in color version. 3) Color emulation program code missing in sound version.
1) The program is shipped in form of an encrypted data file. 2) The data file is completely useless without decryption program. 3) The decrypter translates the data file into exe file. 4) The program will not work without registration key file. 5) The key contains user name, user number, checksum etc. 6) The key also contains emulation-data that is used by the program. 7) The user name/number are stored at various locations in executable. 8) That is parts of as clean ascii, but mostly encrypted text/numbers. 9) The fullversion costs $X000 US, it is not available to gamers. 10) That provides that only a few people will get hold of it. 11) A password is required to install the program on a new computer.
"For normal word processing, as used by university students for example, it would be suitable to buy an older 1GHz computer." - Public Wisdom
:Chapter IV - Showdown at Snadra Peak ;:---Sound Engine---
Up Move line up Down Move line down Left Move character left Right Move character right Pgup Scroll page up / to top of screen Pgdn Scroll page down / to bottom of screen Ctrl+Pgup Go to start of file (or Ctrl+Home) Ctrl+Pgdn Go to end of file (or Ctrl+End) Home Go to start of line End Go to end of line Ctrl+Left Move word left Ctrl+Right Move word right Ins Toggle Insert/Overwrite mode Del Delete char below cursor Backspace Delete char left of cursor Tab Move to next tabulation mark Enter New line/paragraph end Esc Quit (or Alt+X, F3+Q, Ctrl+K+D, Ctrl+K+Q, Ctrl+K+X)
Ctrl+Y Delete line (or Alt+K) Alt+L Delete to line end (or Ctrl+Q,Y) Alt+V Caseflip to line end Ctrl+V Caseflip from line beginning
Alt+F Norton - search/replace, forwards Ctrl+F Norton - search/replace, backwards Alt+C Norton - continue search/replace, forwards Ctrl+C Norton - continue search/replace, backwards
Ctrl+Q,F Wordstar - search Ctrl+Q,A Wordstar - replace Ctrl+L Wordstar - continue search/replace
F3,E Save+exit F3,S Save (or Ctrl+K,S) F3,N Edit new file F3,A Append a file
Shift+Cursor Select block begin..end Ctrl+K,B Set block begin (or F4,S) Ctrl+K,K Set block end (or F4,S) Ctrl+K,H Remove/hide block markers (or F4,R) F4,L Mark line including ending CRLF (or Ctrl+K,L) F4,E Mark line excluding ending CRLF Ctrl+K,T Mark word Ctrl+K,N Toggle normal/column blocktype
Shift+Ins Paste from Clipboard Shift+Del Cut to Clipboard Ctrl+Ins Copy to Clipboard Ctrl+Del Delete Block
Ctrl+K,C Copy block (or F4,C) Ctrl+K,V Move block (or F4,M) Ctrl+K,Y Delete block (or F4,D) Ctrl+K,P Print block (or F7,B) Ctrl+Q,B Find block begin (or F4,F) Ctrl+Q,K Find block end (or F4,F) Ctrl+K,R Read block from disk towards cursor location Ctrl+K,W Write block to disk Ctrl+K,U Unindent block (delete one space at begin of each line) Ctrl+K,I Indent block (insert one space at begin of each line) F5,F Format block (with actual x-wrap size) (or ;Ctrl+B) F8,A Add values within column-block
F11 Setup menu (or F8,S) F5,S Save editor configuration F5,L Set line len for word wrap (or Ctrl+O,R) F5,W Wordwrap on/off (or Ctrl+O,W) (*) F5,I Auto indent on/off (or Ctrl+O,I) F5,T Set tab display spacing
F1 Help F2 Status (displays info about file & currently selected block) F8,M Make best fill tabs F8,T Translate all tabs to spaces SrcLock Freeze cursor when typing text ("useful" for backwards writing) Ctrl+O,C Center current line Ctrl+K,# Set marker (#=0..9) Ctrl+Q,# Move to marker (#=0..9) Ctrl+Q,P Move to previous pos F6,C Condensed display mode on/off (*) Ctrl+G Go to line nnnn (or F6,G) (or commandline switch /l:nnnn)
Tab Toggle between HEX and ASC mode (or Shift+Left/Right) Ctrl+Arrow Step left/right one full byte (instead one single HEX digit) Ctrl+G Goto hex-address Ctrl+K,S Save file (as usually)
F7,P Print file F7,B Print block (or Ctrl+K,P) F7,E Eject page F7,S Set page size
|XED Assembler/Debugger Interface|
|XED Commandline based standalone version|
no$xxx /x <filename> Edit text file in standalone mode no$xxx /b <filename> Edit binary file in standalone hexedit mode
<name> Filename, optionally d:\path\name.ext /? Displays commandline help /l:<nnn> Moves to line number nnn after loading
VSEG:77*2 Exit code (00h=Exit normal, F9h=Exit by F9-key) VSEG:78*2 Line number (Lower 8bits, 1..65536 in total) VSEG:79*2 Line number (Upper 8bits)
|XED Copyright & Homepage|
|The A22i Assembler|