1 ** Liards - You are what you is 2 3 The developer of this library doesn't know what these letters stand for 4 exactly, but he does prefer when it's pronounced "Liiarrdzzzz!!", As if spoken 5 by a highly intoxicated, older slightly overweight and generally off-balanced 6 individual in an overly filled bar. As in "Ye're all a bunzjov liards, in and 7 round dust street!!! I lizpededed on byte-compilin when you'ezz wer cho small 8 zoo lifta cup o coffee. Punks!! Stealin me job, settin back computtin wuznot 9 years. I'l crush you beans... bones... beans.. lika.." *thud* "... zzzzzzz 10 ...." 11 12 13 ** Introduction 14 15 Liards simply wants assembly forms for the arm7 and/or arm9 processor of a 16 Nintendo DS and transforms them into an .nds file, to be executed on a real 17 live DS or a DS emulator. It has also some memory locations defined. Nothing 18 special. Nothing to see. Move along. 19 20 21 ** Licence - LLGPL, see the included LICENSE file 22 23 24 ** Authors 25 26 - Ties Stuij 27 28 29 ** Installation 30 31 To get the latest development version, do a darcs get: 32 33 darcs get http://common-lisp.net/project/liards/darcs/liards 34 35 Liards depends on Armish, Arnesi, Split-sequence and FiveAM (because it's 36 needed by Armish). 37 38 darcs get http://common-lisp.net/project/liards/darcs/umpa-lumpa 39 darcs get http://common-lisp.net/project/armish/darcs/armish 40 darcs get http://common-lisp.net/project/bese/repos/arnesi_dev 41 darcs get http://common-lisp.net/project/bese/repos/fiveam 42 http://ww.telent.net/cclan/split-sequence.tar.gz 43 44 Get them to play nice with asdf and fire up Liards. 45 46 47 ** Testing 48 49 execute: (nds-test-compile (initialize-and-make-red) (arm7-loop) 50 "red-test.nds") 51 52 Where initialize-and-make-red and arm7-loop are functions that output opcodes 53 that have been assembled with assemble. See the test.lisp file. If all went 54 well an .nds file called red-test.nds will lie waiting for you in the test-roms 55 directory. Load it in an emulator or upload it to your Nintendo DS if you've 56 got the know-how. If stuff fails, you'll find some debugging globals and 57 functions in test.lisp to aid you. Of course this shouldn't be the case for 58 this initial setup. If stuff DID fail, send a mail. 59 60 The test.lisp file also contains some extra debugging aids to query 61 headers. Have a look if you feel you have a need. 62 63 The resulting .nds file in the command above has been tested on various 64 emulators, wireless-multiboot and a supercard micro-sd slot-2 card. All but 65 DSEmu did what was expected, and DSEmu failed because it didn't support the arm 66 blx instruction properly. 67 68 69 ** Exported functions 70 71 Well... again... this function is exported, because you have to export at least 72 one function. Is what i think. It's all you need really together with the 73 assemble function from Armish, but this function is just gonna be the base of a 74 larger function/macro structure to write useful stuff. Either i'm gonna write 75 it or you, inside the Liards package or in another, but this function is hardly 76 to be called a proper interface to outside packages. I'm not even satisfied by 77 the argument handling. Still, it's all you need... 78 79 - nds-compile - compiles an .nds file when fed compiled arm9 and arm7 code and 80 optionally a name and a directory. syntax: (nds-compile arm9-code arm7-code 81 &optional (file "my.nds") (dir *rom-dir*)) 82 83 Where arm9-code and arm7-code are lists of opcodes/compiled instructions for 84 the appropriate processor. File and *rom-dir* are file and rom-dir. *rom-dir* 85 is set to the `roms' dir under the liards root. 86 87 example usage: (nds-compile (initialize-and-make-red) (arm7-loop) "red.nds") 88 89 90 ** History 91 92 Almost non-existant 93 94 95 ** Todo 96 97 - a few header entries that should better have values which are better set 98 through calculation are as of now fixed, most notably rom-size.