/
/README
 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.