| Contents |
| Debugging |
| 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) |
| Breakpoints |
$, 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 $, [4000006] > 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 [4000006]>20 --> break whenever VCOUNT becomes greater than 20h |
[02000100]! ;stops on any byte/halfword/word write to [2000100h] [02000100]? ;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 |
| Cycle Counters |
| Debug Messages |
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) |
| Installation |
| 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. |
| XED Editor |
| XED About |
"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--- |
| XED Hotkeys |
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 |