rubygb 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.DS_Store +0 -0
  3. data/.gitignore +5 -0
  4. data/.travis.yml +20 -0
  5. data/CHANGELOG.md +6 -0
  6. data/Gemfile +5 -0
  7. data/Gemfile.lock +23 -0
  8. data/MIT-LICENSE.txt +53 -0
  9. data/README.md +30 -0
  10. data/Rakefile +30 -0
  11. data/bin/rubygb +5 -0
  12. data/lib/galp/AND.GIF +0 -0
  13. data/lib/galp/ARROW.GIF +0 -0
  14. data/lib/galp/C.BAT +5 -0
  15. data/lib/galp/CHANGES.TXT +5 -0
  16. data/lib/galp/EXAMPLE.LNK +7 -0
  17. data/lib/galp/EXAMPLE1.TXT +266 -0
  18. data/lib/galp/GBHW.TXT +645 -0
  19. data/lib/galp/GBSPEC.TXT +1761 -0
  20. data/lib/galp/IBMPC1.TXT +2400 -0
  21. data/lib/galp/INDEX.HTM +23 -0
  22. data/lib/galp/INSTR.HTM +563 -0
  23. data/lib/galp/MEM1.HTM +199 -0
  24. data/lib/galp/MEMORY.TXT +160 -0
  25. data/lib/galp/OPCODES.HTM +351 -0
  26. data/lib/galp/OR.GIF +0 -0
  27. data/lib/galp/README.TXT +4 -0
  28. data/lib/galp/REGS.HTM +77 -0
  29. data/lib/galp/RL.GIF +0 -0
  30. data/lib/galp/RLC.GIF +0 -0
  31. data/lib/galp/RR.GIF +0 -0
  32. data/lib/galp/RRC.GIF +0 -0
  33. data/lib/galp/SETUP.BAT +7 -0
  34. data/lib/galp/SLA.GIF +0 -0
  35. data/lib/galp/SRA.GIF +0 -0
  36. data/lib/galp/SRL.GIF +0 -0
  37. data/lib/galp/START.HTM +24 -0
  38. data/lib/galp/SWAP.GIF +0 -0
  39. data/lib/galp/VID1.HTM +34 -0
  40. data/lib/galp/XOR.GIF +0 -0
  41. data/lib/rgbds/rgbasm +0 -0
  42. data/lib/rgbds/rgbfix +0 -0
  43. data/lib/rgbds/rgblink +0 -0
  44. data/lib/rubygb/cli.rb +11 -0
  45. data/lib/rubygb/rubygb.rb +15 -0
  46. data/lib/rubygb/version.rb +4 -0
  47. data/lib/rubygb.rb +7 -0
  48. data/rubygb.gemspec +23 -0
  49. data/scrap/basic.gb +0 -0
  50. data/scrap/basic.map +55 -0
  51. data/scrap/basic.obj +0 -0
  52. data/scrap/basic.s +176 -0
  53. data/scrap/basic.sym +8 -0
  54. data/spec/basic.s +176 -0
  55. data/spec/rubygb_spec.rb +19 -0
  56. metadata +129 -0
@@ -0,0 +1,351 @@
1
+ <!DOCTYPE HTML PUBLIC "-//SQ//DTD HTML 2.0 HoTMetaL + extensions//EN">
2
+ <HTML><HEAD><TITLE>GameBoy Opcodes Summary</TITLE></HEAD>
3
+ <BODY><H1>GameBoy Opcode Summary</H1>
4
+ <P>The GameBoy has instructions &amp; registers similiar to the 8080, 8085, &amp;
5
+ Z80 microprocessors. The internal 8-bit registers are A, B, C, D, E, F, H, &amp;
6
+ L. Theses registers may be used in pairs for 16-bit operations as AF, BC, DE, &amp;
7
+ HL. The two remaining 16-bit registers are the program counter (PC) and the
8
+ stack pointer (SP).</P>
9
+ <P>The F register holds the cpu flags. The operation of these flags is
10
+ identical to their Z80 relative. The lower four bits of this register always
11
+ read zero even if written with a one.</P>
12
+ <TABLE BORDER="1"><TR><TD ALIGN="CENTER" COLSTART="1" COLSPAN="8">Flag
13
+ Register</TD></TR><TR><TD COLSTART="1">7</TD><TD COLSTART="2">6</TD><TD
14
+ COLSTART="3">5</TD><TD COLSTART="4">4</TD><TD COLSTART="5">3</TD><TD
15
+ COLSTART="6">2</TD><TD COLSTART="7">1</TD><TD COLSTART="8">0</TD></TR><TR><TD
16
+ COLSTART="1">Z</TD><TD COLSTART="2">N</TD><TD COLSTART="3">H</TD><TD
17
+ COLSTART="4">C</TD><TD COLSTART="5">0</TD><TD COLSTART="6">0</TD><TD
18
+ COLSTART="7">0</TD><TD COLSTART="8">0</TD></TR>
19
+
20
+ </TABLE>
21
+ <P>The GameBoy CPU is based on a subset of the Z80 microprocessor. A summary of
22
+ these commands is given below.</P>
23
+ <TABLE BORDER="3"><TR><TD COLSTART="1">Mnemonic</TD><TD COLSTART="2">Symbolic
24
+ Operation</TD><TD COLSTART="3">Comments</TD><TD COLSTART="4">CPU Clocks</TD><TD
25
+ COLSTART="5">Flags - Z,N,H,C</TD></TR>
26
+
27
+ </TABLE>
28
+ <H3>8-Bit Loads</H3>
29
+ <TABLE BORDER="1"><TR><TD COLSTART="1">LD r,s</TD><TD COLSTART="2">r
30
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> s</TD><TD
31
+ ALIGN="CENTER" COLSTART="3">s=r,n,(HL)</TD><TD ALIGN="CENTER" COLSTART="4">r=4,
32
+ n=8, (HL)=8</TD><TD ALIGN="CENTER" COLSTART="5"></TD></TR><TR><TD COLSTART="1">LD
33
+ d,r</TD><TD COLSTART="2">d
34
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> r</TD><TD
35
+ ALIGN="CENTER" COLSTART="3" ROWSPAN="2">d=r,(HL)</TD><TD
36
+ ALIGN="CENTER" COLSTART="4">r=4, (HL)=8</TD><TD ALIGN="CENTER" COLSTART="5"></TD></TR>
37
+ <TR><TD COLSTART="1">LD d,n</TD><TD COLSTART="2">d
38
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> n</TD><TD
39
+ ALIGN="CENTER" COLSTART="4">r=8, (HL)=12</TD><TD ALIGN="CENTER" COLSTART="5"></TD></TR>
40
+ <TR><TD COLSTART="1">LD A,(ss)</TD><TD COLSTART="2">A
41
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> (ss)</TD><TD
42
+ ALIGN="CENTER" COLSTART="3">ss=BC,DE,HL,nn</TD><TD COLSTART="4" ROWSPAN="2">[BC,DE,HL]=8,
43
+ nn=16</TD><TD COLSTART="5" ROWSPAN="1"></TD></TR><TR><TD COLSTART="1">LD
44
+ (dd),A</TD><TD COLSTART="2">(dd)
45
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A</TD><TD
46
+ COLSTART="3">dd=BC,DE,HL,nn</TD><TD COLSTART="5"></TD></TR><TR><TD
47
+ COLSTART="1" ROWSPAN="2">LD A,(C)</TD><TD COLSTART="2" ROWSPAN="2">A
48
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> ($FF00+C)</TD><TD
49
+ ALIGN="CENTER" COLSTART="3" ROWSPAN="9">-</TD><TD
50
+ ALIGN="CENTER" COLSTART="4" ROWSPAN="2">8</TD><TD
51
+ ALIGN="CENTER" COLSTART="5" ROWSPAN="1"></TD></TR><TR><TD
52
+ ALIGN="CENTER" COLSTART="5" ROWSPAN="1"></TD></TR><TR><TD COLSTART="1">LD
53
+ (C),A</TD><TD COLSTART="2">($FF00+C)
54
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A</TD><TD
55
+ ALIGN="CENTER" COLSTART="4">8</TD><TD ALIGN="CENTER" COLSTART="5"></TD></TR><TR><TD
56
+ COLSTART="1">LDD A,(HL)</TD><TD COLSTART="2">A
57
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> (HL), HL
58
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> HL - 1</TD><TD
59
+ ALIGN="CENTER" COLSTART="4">8</TD><TD ALIGN="CENTER" COLSTART="5"></TD></TR><TR><TD
60
+ COLSTART="1">LDD (HL),A</TD><TD COLSTART="2">(HL)
61
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A, HL
62
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> HL - 1</TD><TD
63
+ ALIGN="CENTER" COLSTART="4">8</TD><TD ALIGN="CENTER" COLSTART="5"></TD></TR><TR><TD
64
+ COLSTART="1">LDI A,(HL)</TD><TD COLSTART="2">A
65
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> (HL), HL
66
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> HL + 1</TD><TD
67
+ ALIGN="CENTER" COLSTART="4">8</TD><TD ALIGN="CENTER" COLSTART="5"></TD></TR><TR><TD
68
+ COLSTART="1">LDI (HL),A</TD><TD COLSTART="2">(HL)
69
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A, HL
70
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> HL + 1</TD><TD
71
+ ALIGN="CENTER" COLSTART="4">8</TD><TD ALIGN="CENTER" COLSTART="5"></TD></TR><TR><TD
72
+ COLSTART="1">LDH (n),A</TD><TD COLSTART="2">($FF00+n)
73
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A</TD><TD
74
+ ALIGN="CENTER" COLSTART="4">12</TD><TD ALIGN="CENTER" COLSTART="5"></TD></TR><TR><TD
75
+ COLSTART="1">LDH A,(n)</TD><TD COLSTART="2">A
76
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> ($FF00+n)</TD><TD
77
+ ALIGN="CENTER" COLSTART="4">12</TD><TD ALIGN="CENTER" COLSTART="5"></TD></TR>
78
+
79
+
80
+ </TABLE>
81
+ <H3>16-Bit Loads</H3>
82
+ <TABLE BORDER="1"><TR><TD COLSTART="1">LD dd,nn</TD><TD COLSTART="2">dd
83
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> nn</TD><TD
84
+ COLSTART="3">dd=BC,DE,HL,SP</TD><TD COLSTART="4">12</TD><TD
85
+ COLSTART="5" ROWSPAN="3">-</TD><TD COLSTART="6" ROWSPAN="3">-</TD><TD
86
+ COLSTART="7" ROWSPAN="3">-</TD><TD COLSTART="8" ROWSPAN="3">-</TD><TD
87
+ COLSTART="9" ROWSPAN="1"></TD></TR><TR><TD COLSTART="1">LD (nn),SP</TD><TD
88
+ COLSTART="2">(nn)
89
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> SP
90
+ </TD><TD ALIGN="CENTER" COLSTART="3" ROWSPAN="3">-</TD><TD COLSTART="4">20</TD><TD
91
+ COLSTART="9"></TD></TR>
92
+ <TR><TD COLSTART="1">LD SP,HL
93
+ </TD><TD COLSTART="2">SP
94
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> HL</TD><TD
95
+ ALIGN="CENTER" COLSTART="4">8</TD><TD ALIGN="CENTER" COLSTART="9"></TD></TR><TR><TD
96
+ COLSTART="1">LD HL,(SP+e)</TD><TD COLSTART="2">HL
97
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> (SP+e)</TD><TD
98
+ COLSTART="4">12</TD><TD COLSTART="5">0</TD><TD COLSTART="6">0</TD><TD
99
+ COLSTART="7">*</TD><TD COLSTART="8">*</TD><TD COLSTART="9"></TD></TR><TR><TD
100
+ COLSTART="1" ROWSPAN="2">PUSH ss</TD><TD COLSTART="2" ROWSPAN="2">
101
+ (SP-1) <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> ssh,
102
+ (SP-2) <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> ssl, SP<IMG
103
+ ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7">SP-2
104
+ </TD><TD COLSTART="3" ROWSPAN="2">ss=BC,DE,HL,AF</TD><TD
105
+ COLSTART="4" ROWSPAN="2">16</TD><TD COLSTART="5" ROWSPAN="3">-</TD><TD
106
+ COLSTART="6" ROWSPAN="3">-</TD><TD COLSTART="7" ROWSPAN="3">-</TD><TD
107
+ COLSTART="8" ROWSPAN="3">-</TD><TD COLSTART="9" ROWSPAN="1"></TD></TR><TR><TD
108
+ COLSTART="9" ROWSPAN="1"></TD></TR><TR><TD COLSTART="1">POP dd
109
+ </TD><TD COLSTART="2">ddl
110
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> (SP), ddh
111
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> (SP+1), SP<IMG
112
+ ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7">SP+2
113
+ </TD><TD COLSTART="3">dd=BC,DE,HL,AF
114
+ </TD><TD COLSTART="4">12</TD><TD COLSTART="9"></TD></TR>
115
+
116
+
117
+ </TABLE>
118
+ <H3>8-Bit ALU</H3>
119
+ <TABLE BORDER="1"><TR><TD COLSTART="1">ADD A,s</TD><TD COLSTART="2">A
120
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A + s
121
+ </TD><TD COLSTART="3" ROWSPAN="8">CY is the carry flag. s=r,n,(HL)</TD><TD
122
+ COLSTART="4" ROWSPAN="8">r=4, n=8, (HL)=8</TD><TD COLSTART="5" ROWSPAN="2">*</TD><TD
123
+ COLSTART="6" ROWSPAN="2">0</TD><TD COLSTART="7" ROWSPAN="2">*</TD><TD
124
+ COLSTART="8" ROWSPAN="2">*</TD>
125
+ </TR><TR><TD COLSTART="1">ADC A,s</TD><TD COLSTART="2">A
126
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A + s + CY
127
+ </TD></TR><TR><TD COLSTART="1">SUB s</TD><TD COLSTART="2">A
128
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A - s
129
+ </TD><TD COLSTART="5" ROWSPAN="2">*</TD><TD COLSTART="6" ROWSPAN="2">1</TD><TD
130
+ COLSTART="7" ROWSPAN="2">*</TD><TD COLSTART="8" ROWSPAN="2">*</TD>
131
+ </TR><TR><TD COLSTART="1">SBC A,s</TD><TD COLSTART="2">A
132
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A - s - CY
133
+ </TD></TR><TR><TD COLSTART="1">AND s</TD><TD COLSTART="2">A
134
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A
135
+ <IMG ALIGN="BOTTOM" SRC="and.gif" WIDTH="8" HEIGHT="8"> s</TD><TD COLSTART="5">*</TD>
136
+ <TD COLSTART="6">0</TD><TD COLSTART="7">1</TD><TD COLSTART="8">0</TD></TR><TR>
137
+
138
+ <TD COLSTART="1">OR s</TD><TD COLSTART="2">A
139
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A
140
+ <IMG ALIGN="BOTTOM" SRC="or.gif" WIDTH="8" HEIGHT="8"> s
141
+ </TD><TD COLSTART="5" ROWSPAN="2">*</TD><TD COLSTART="6" ROWSPAN="2">0</TD><TD
142
+ COLSTART="7" ROWSPAN="2">0</TD><TD COLSTART="8" ROWSPAN="2">0</TD></TR><TR><TD
143
+ COLSTART="1">XOR s</TD><TD COLSTART="2">A
144
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> A
145
+ <IMG ALIGN="BOTTOM" SRC="xor.gif" WIDTH="7" HEIGHT="7"> s
146
+ </TD></TR><TR><TD COLSTART="1">CP s</TD><TD COLSTART="2">A - s</TD><TD
147
+ COLSTART="5">*</TD><TD COLSTART="6">1</TD><TD COLSTART="7">*</TD><TD
148
+ COLSTART="8">*</TD></TR><TR><TD COLSTART="1">INC s</TD><TD COLSTART="2">s
149
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> s + 1
150
+ </TD><TD ALIGN="CENTER" COLSTART="3" ROWSPAN="2">s=r,(HL)</TD><TD
151
+ ALIGN="CENTER" COLSTART="4" ROWSPAN="2">r=4, (HL)=12</TD><TD
152
+ ALIGN="CENTER" COLSTART="5">*</TD><TD ALIGN="CENTER" COLSTART="6">0</TD><TD
153
+ ALIGN="CENTER" COLSTART="7">*</TD><TD ALIGN="CENTER" COLSTART="8">-</TD></TR><TR><TD
154
+ COLSTART="1">DEC s</TD>
155
+ <TD COLSTART="2">s
156
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> s - 1
157
+ </TD><TD COLSTART="5">*</TD><TD COLSTART="6">1</TD><TD COLSTART="7">*</TD><TD
158
+ ALIGN="CENTER" COLSTART="8">-</TD></TR>
159
+
160
+ </TABLE>
161
+ <H3>16-Bit Arithmetic</H3>
162
+ <TABLE BORDER="1"><TR><TD COLSTART="1">ADD HL,ss</TD><TD COLSTART="2">HL
163
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> HL + ss
164
+ </TD><TD COLSTART="3" ROWSPAN="4">ss=BC,DE,HL,SP</TD><TD
165
+ ALIGN="CENTER" COLSTART="4">8</TD><TD ALIGN="CENTER" COLSTART="5">-</TD><TD
166
+ ALIGN="CENTER" COLSTART="6">0</TD><TD ALIGN="CENTER" COLSTART="7">*</TD><TD
167
+ ALIGN="CENTER" COLSTART="8">*</TD></TR><TR><TD COLSTART="1">ADD SP,e</TD><TD
168
+ COLSTART="2">SP
169
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> SP + e
170
+ </TD><TD COLSTART="4">16</TD><TD COLSTART="5">0</TD><TD COLSTART="6">0</TD><TD
171
+ COLSTART="7">*</TD><TD COLSTART="8">*</TD></TR><TR><TD COLSTART="1">INC ss</TD><TD
172
+ COLSTART="2">ss
173
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> ss + 1
174
+ </TD><TD ALIGN="CENTER" COLSTART="4">8</TD><TD
175
+ ALIGN="CENTER" COLSTART="5" ROWSPAN="2">-</TD><TD
176
+ ALIGN="CENTER" COLSTART="6" ROWSPAN="2">-</TD><TD
177
+ ALIGN="CENTER" COLSTART="7" ROWSPAN="2">-</TD><TD
178
+ ALIGN="CENTER" COLSTART="8" ROWSPAN="2">-</TD></TR><TR><TD COLSTART="1">DEC
179
+ ss</TD><TD COLSTART="2">ss
180
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> ss - 1
181
+ </TD><TD ALIGN="CENTER" COLSTART="4">8</TD></TR>
182
+
183
+ </TABLE>
184
+ <H3>Miscellaneous</H3>
185
+ <TABLE BORDER="1"><TR><TD COLSTART="1">SWAP s</TD><TD COLSTART="2"><IMG
186
+ ALIGN="BOTTOM" SRC="swap.gif" WIDTH="70" HEIGHT="37"></TD><TD COLSTART="3">Swap
187
+ nibbles. s=r,(HL)</TD><TD COLSTART="4">r=8, (HL)=16</TD><TD COLSTART="5">*</TD><TD
188
+ COLSTART="6">0</TD><TD COLSTART="7">0</TD><TD COLSTART="8">0</TD></TR><TR><TD
189
+ COLSTART="1">DAA</TD><TD COLSTART="2">Converts A into packed BCD.</TD><TD
190
+ ALIGN="CENTER" COLSTART="3" ROWSPAN="2">-</TD><TD ALIGN="CENTER" COLSTART="4">4</TD>
191
+ <TD ALIGN="CENTER" COLSTART="5">*</TD><TD ALIGN="CENTER" COLSTART="6">-</TD><TD
192
+ ALIGN="CENTER" COLSTART="7">0</TD><TD ALIGN="CENTER" COLSTART="8">*</TD></TR>
193
+ <TR><TD COLSTART="1">CPL</TD><TD COLSTART="2">A
194
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> /A</TD><TD
195
+ ALIGN="CENTER" COLSTART="4">4</TD><TD ALIGN="CENTER" COLSTART="5">-</TD><TD
196
+ ALIGN="CENTER" COLSTART="6">1</TD><TD ALIGN="CENTER" COLSTART="7">1</TD><TD
197
+ ALIGN="CENTER" COLSTART="8">-</TD></TR><TR><TD COLSTART="1">CCF</TD><TD
198
+ COLSTART="2">
199
+ CY <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> /CY
200
+ </TD><TD COLSTART="3" ROWSPAN="2">CY is the carry flag.</TD><TD
201
+ ALIGN="CENTER" COLSTART="4">4</TD><TD ALIGN="CENTER" COLSTART="5">-</TD><TD
202
+ ALIGN="CENTER" COLSTART="6">0</TD><TD ALIGN="CENTER" COLSTART="7">0</TD><TD
203
+ ALIGN="CENTER" COLSTART="8">*</TD></TR>
204
+ <TR><TD COLSTART="1">SCF</TD><TD COLSTART="2">CY
205
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> 1</TD><TD
206
+ ALIGN="CENTER" COLSTART="4">4</TD><TD ALIGN="CENTER" COLSTART="5">-</TD><TD
207
+ ALIGN="CENTER" COLSTART="6">0</TD><TD ALIGN="CENTER" COLSTART="7">0</TD><TD
208
+ ALIGN="CENTER" COLSTART="8">1</TD></TR><TR><TD COLSTART="1">NOP</TD><TD
209
+ COLSTART="2">No operation.</TD><TD ALIGN="CENTER" COLSTART="3" ROWSPAN="5">-</TD><TD
210
+ ALIGN="CENTER" COLSTART="4">4</TD><TD ALIGN="CENTER" COLSTART="5" ROWSPAN="5">-</TD>
211
+ <TD ALIGN="CENTER" COLSTART="6" ROWSPAN="5">-</TD><TD
212
+ ALIGN="CENTER" COLSTART="7" ROWSPAN="5">-</TD><TD
213
+ ALIGN="CENTER" COLSTART="8" ROWSPAN="5">-</TD></TR><TR><TD COLSTART="1">HALT</TD><TD
214
+ COLSTART="2">Halt CPU until an interrupt occurs.</TD><TD
215
+ ALIGN="CENTER" COLSTART="4">4</TD></TR><TR><TD COLSTART="1">STOP
216
+ </TD><TD COLSTART="2">Halt CPU.</TD><TD ALIGN="CENTER" COLSTART="4">4</TD></TR><TR
217
+ ><TD COLSTART="1">DI</TD><TD COLSTART="2">Disable Interrupts.</TD><TD
218
+ ALIGN="CENTER" COLSTART="4">4</TD></TR>
219
+ <TR><TD COLSTART="1">EI</TD><TD COLSTART="2">Enable Interrupts.
220
+ </TD><TD ALIGN="CENTER" COLSTART="4">4</TD></TR>
221
+
222
+ </TABLE>
223
+ <H3>Rotates &amp; Shifts</H3>
224
+ <TABLE BORDER="1"><TR><TD COLSTART="1">RLCA</TD><TD COLSTART="2"><IMG
225
+ SRC="rlc.gif" WIDTH="92" HEIGHT="22"></TD><TD COLSTART="3" ROWSPAN="4"></TD><TD
226
+ COLSTART="4" ROWSPAN="4">4</TD><TD COLSTART="5" ROWSPAN="4">0</TD><TD
227
+ COLSTART="6" ROWSPAN="4">0</TD><TD COLSTART="7" ROWSPAN="4">0</TD><TD
228
+ COLSTART="8" ROWSPAN="4">*</TD></TR><TR><TD COLSTART="1">RLA</TD><TD
229
+ COLSTART="2"><IMG ALIGN="BOTTOM" SRC="rl.gif" WIDTH="92" HEIGHT="22"></TD></TR><TR
230
+ ><TD COLSTART="1">RRCA</TD><TD COLSTART="2"><IMG
231
+ ALIGN="BOTTOM" SRC="rrc.gif" WIDTH="92" HEIGHT="22"></TD></TR><TR><TD
232
+ COLSTART="1">RRA</TD><TD COLSTART="2"><IMG
233
+ ALIGN="BOTTOM" SRC="rr.gif" WIDTH="92" HEIGHT="22"></TD></TR><TR><TD
234
+ COLSTART="1">RLC s</TD><TD COLSTART="2"><IMG
235
+ SRC="rlc.gif" WIDTH="92" HEIGHT="22"></TD><TD COLSTART="3" ROWSPAN="4">s=A,r,(HL)</TD>
236
+ <TD COLSTART="4" ROWSPAN="4">r=8, (HL)=16</TD><TD COLSTART="5" ROWSPAN="7">*</TD><TD
237
+ COLSTART="6" ROWSPAN="7">0</TD><TD COLSTART="7" ROWSPAN="7">0</TD><TD
238
+ COLSTART="8" ROWSPAN="7">*</TD>
239
+ </TR><TR><TD COLSTART="1">RL s</TD><TD COLSTART="2"><IMG
240
+ ALIGN="BOTTOM" SRC="rl.gif" WIDTH="92" HEIGHT="22"></TD></TR><TR><TD
241
+ COLSTART="1">RRC s</TD><TD COLSTART="2"><IMG
242
+ ALIGN="BOTTOM" SRC="rrc.gif" WIDTH="92" HEIGHT="22"></TD></TR><TR><TD
243
+ COLSTART="1">RR s</TD><TD COLSTART="2"><IMG
244
+ ALIGN="BOTTOM" SRC="rr.gif" WIDTH="92" HEIGHT="22"></TD></TR><TR><TD
245
+ COLSTART="1">SLA s</TD><TD COLSTART="2"><IMG
246
+ ALIGN="BOTTOM" SRC="sla.gif" WIDTH="92" HEIGHT="23"></TD><TD
247
+ COLSTART="3" ROWSPAN="3">s=r,(HL)</TD><TD COLSTART="4" ROWSPAN="3">r=8,
248
+ (HL)=16</TD></TR><TR><TD COLSTART="1">SRA s</TD><TD COLSTART="2"><IMG
249
+ ALIGN="BOTTOM" SRC="sra.gif" WIDTH="92" HEIGHT="22"></TD></TR><TR><TD
250
+ COLSTART="1">SRL s</TD><TD COLSTART="2"><IMG
251
+ ALIGN="BOTTOM" SRC="srl.gif" WIDTH="92" HEIGHT="22"></TD></TR>
252
+
253
+
254
+ </TABLE>
255
+ <H3>Bit Opcodes</H3>
256
+ <TABLE BORDER="1"><TR><TD COLSTART="1">BIT b,s</TD><TD COLSTART="2">Z
257
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> /sb</TD><TD
258
+ COLSTART="3" ROWSPAN="3">Z is zero flag. s=r,(HL)</TD><TD COLSTART="4">r=8,
259
+ (HL)=12</TD><TD COLSTART="5">*</TD><TD COLSTART="6">0</TD><TD COLSTART="7">1</TD><TD
260
+ COLSTART="8">-</TD></TR><TR><TD COLSTART="1">SET b,s</TD><TD COLSTART="2">sb
261
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> 1</TD><TD
262
+ COLSTART="4" ROWSPAN="2">r=8, (HL)=16</TD><TD COLSTART="5" ROWSPAN="2">-</TD><TD
263
+ COLSTART="6" ROWSPAN="2">-</TD><TD COLSTART="7" ROWSPAN="2">-</TD><TD
264
+ COLSTART="8" ROWSPAN="2">-</TD></TR><TR><TD COLSTART="1">RES b,s</TD><TD
265
+ COLSTART="2">sb
266
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> 0</TD>
267
+ </TR>
268
+
269
+ </TABLE>
270
+ <H3>Jumps</H3>
271
+ <TABLE BORDER="1"><TR><TD COLSTART="1">JP nn</TD><TD COLSTART="2">PC
272
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> nn</TD><TD
273
+ ALIGN="CENTER" COLSTART="3" ROWSPAN="5">-</TD><TD ALIGN="CENTER" COLSTART="4">16</TD></TR>
274
+ <TR><TD COLSTART="1">JP cc,nn</TD><TD COLSTART="2">If cc is true, PC
275
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> nn, else continue.</TD><TD
276
+ COLSTART="4">If cc is true, 16 else 12.</TD></TR><TR><TD COLSTART="1">JP
277
+ (HL)</TD><TD COLSTART="2">PC
278
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> HL</TD><TD
279
+ ALIGN="CENTER" COLSTART="4">4</TD></TR><TR><TD COLSTART="1">JR e</TD><TD
280
+ COLSTART="2">PC
281
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> PC + e
282
+ </TD><TD ALIGN="CENTER" COLSTART="4">12</TD></TR><TR><TD COLSTART="1">JR cc,e</TD>
283
+ <TD COLSTART="2">if cc is true, PC
284
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> PC + e, else
285
+ continue.</TD><TD COLSTART="4">If cc is true, 12 else 8.</TD></TR>
286
+
287
+
288
+ </TABLE>
289
+ <H3>Calls</H3>
290
+ <TABLE BORDER="1"><TR><TD COLSTART="1">CALL nn</TD><TD COLSTART="2">(SP-1)
291
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> PCh, (SP-2)
292
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> PCl, PC
293
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> nn, SP<IMG
294
+ ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7">SP-2
295
+ </TD><TD ALIGN="CENTER" COLSTART="3" ROWSPAN="2">-</TD><TD
296
+ ALIGN="CENTER" COLSTART="4">24</TD></TR><TR><TD COLSTART="1">CALL cc,nn</TD><TD
297
+ COLSTART="2">If condition cc is false continue, else same as CALL nn.</TD><TD
298
+ COLSTART="4">If cc is true, 24 else 12.</TD></TR>
299
+
300
+ </TABLE>
301
+ <H3>Restarts</H3>
302
+ <TABLE BORDER="1"><TR><TD COLSTART="1">RST f</TD><TD COLSTART="2">(SP-1)
303
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> PCh, (SP-2)
304
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> PCl, PCh
305
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> 0, PCl
306
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> f, SP<IMG
307
+ ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7">SP-2
308
+ </TD><TD ALIGN="CENTER" COLSTART="3">-
309
+ </TD><TD ALIGN="CENTER" COLSTART="4">16</TD></TR>
310
+
311
+ </TABLE>
312
+ <H3>Returns</H3>
313
+ <TABLE BORDER="1"><TR><TD COLSTART="1">RET</TD><TD COLSTART="2">pcl
314
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> (SP), pch
315
+ <IMG ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7"> (SP+1), SP<IMG
316
+ ALIGN="BOTTOM" SRC="arrow.gif" WIDTH="15" HEIGHT="7">SP+2
317
+ </TD><TD ALIGN="CENTER" COLSTART="3" ROWSPAN="3">-</TD><TD
318
+ ALIGN="CENTER" COLSTART="4">16</TD></TR><TR><TD COLSTART="1">RET cc</TD><TD
319
+ COLSTART="2">If cc is true, RET else continue.</TD><TD COLSTART="4">If cc is
320
+ true, 20 else 8.</TD></TR><TR><TD COLSTART="1">RETI</TD><TD COLSTART="2">Return
321
+ then enable interrupts.</TD><TD ALIGN="CENTER" COLSTART="4">16</TD></TR>
322
+
323
+
324
+ </TABLE>
325
+ <H3>Terminology</H3>
326
+ <TABLE BORDER="1"><TR><TD COLSTART="1">-</TD><TD COLSTART="2">Flag is not
327
+ affected by this operation.</TD></TR><TR><TD COLSTART="1">*</TD><TD
328
+ COLSTART="2">Flag is affected according to result of operation.</TD></TR><TR><TD
329
+ COLSTART="1">b</TD><TD COLSTART="2">A bit number in any 8-bit register or
330
+ memory location.</TD></TR><TR><TD COLSTART="1">C</TD><TD COLSTART="2">Carry
331
+ flag.</TD></TR><TR><TD COLSTART="1">cc
332
+ </TD><TD COLSTART="2">Flag condition code: C,NC,NZ,Z</TD></TR><TR><TD
333
+ COLSTART="1">d</TD><TD COLSTART="2">Any 8-bit destination register or memory
334
+ location.</TD></TR><TR><TD COLSTART="1">dd</TD><TD COLSTART="2">Any 16-bit
335
+ destination register or memory location.</TD></TR><TR><TD COLSTART="1">e</TD><TD
336
+ COLSTART="2">8-bit signed 2's complement displacement.</TD></TR><TR><TD
337
+ COLSTART="1">f</TD><TD COLSTART="2">8 special call locations in page zero.
338
+ </TD></TR><TR><TD COLSTART="1">H</TD><TD COLSTART="2">Half-carry flag.</TD></TR><TR
339
+ ><TD COLSTART="1">N</TD><TD COLSTART="2">Subtraction flag.</TD></TR><TR><TD
340
+ COLSTART="1">NC</TD><TD COLSTART="2">Not carry flag</TD></TR><TR><TD
341
+ COLSTART="1">NZ</TD><TD COLSTART="2">Not zero flag.</TD></TR><TR><TD
342
+ COLSTART="1">n</TD><TD COLSTART="2">Any 8-bit binary number.</TD></TR><TR><TD
343
+ COLSTART="1">nn</TD><TD COLSTART="2">Any 16-bit binary number.</TD></TR><TR><TD
344
+ COLSTART="1">r</TD><TD COLSTART="2">Any 8-bit register. (A,B,C,D,E,H, or L)</TD></TR>
345
+ <TR><TD COLSTART="1">s</TD><TD COLSTART="2">Any 8-bit source register or
346
+ memory location.</TD></TR><TR><TD COLSTART="1">sb</TD><TD COLSTART="2">A bit
347
+ in a specific 8-bit register or memory location.</TD></TR><TR><TD COLSTART="1">ss</TD>
348
+ <TD COLSTART="2">Any 16-bit source register or memory location.</TD></TR><TR><TD
349
+ COLSTART="1">Z</TD><TD COLSTART="2">Zero Flag.</TD></TR>
350
+ </TABLE></BODY>
351
+ </HTML>
data/lib/galp/OR.GIF ADDED
Binary file
@@ -0,0 +1,4 @@
1
+
2
+ To view these documents, open the file INDEX.HTM
3
+ with a web browser.
4
+
data/lib/galp/REGS.HTM ADDED
@@ -0,0 +1,77 @@
1
+ <!DOCTYPE HTML PUBLIC "-//SQ//DTD HTML 2.0 HoTMetaL + extensions//EN">
2
+ <HTML><HEAD><TITLE>GameBoy Assembly Language Primer - Registers</TITLE></HEAD>
3
+ <BODY><CENTER><H2>GameBoy Assembly Language Primer</H2></CENTER>
4
+ <HR>
5
+ <CENTER><H2>GameBoy CPU Registers</H2></CENTER>
6
+ <P>The GameBoy has instructions &amp; registers similar to the Intel 8080,
7
+ Intel 8085, &amp; Zilog Z80 microprocessors. It has eight 8-bit registers
8
+ A,B,C,D,E,F,H,L and two 16-bit registers SP &amp; PC:</P>
9
+ <CENTER><TABLE BORDER="1" WIDTH="200"><TR><TD COLSTART="1" ALIGN="CENTER">15....8</TD>
10
+ <TD COLSTART="2" ALIGN="CENTER">7......0</TD></TR><TR><TD
11
+ COLSTART="1" WIDTH="10" ALIGN="CENTER"><STRONG>A</STRONG></TD><TD
12
+ COLSTART="2" ALIGN="CENTER"><STRONG>F</STRONG></TD></TR><TR><TD
13
+ COLSTART="1" ALIGN="CENTER"><STRONG>B</STRONG></TD><TD
14
+ COLSTART="2" ALIGN="CENTER"><STRONG>C</STRONG></TD></TR><TR><TD
15
+ COLSTART="1" ALIGN="CENTER"><STRONG>D</STRONG></TD><TD
16
+ COLSTART="2" ALIGN="CENTER"><STRONG>E</STRONG></TD></TR><TR><TD
17
+ COLSTART="1" ALIGN="CENTER"><STRONG>H</STRONG></TD><TD
18
+ COLSTART="2" ALIGN="CENTER"><STRONG>L</STRONG></TD></TR><TR><TD
19
+ COLSTART="1" COLSPAN="2" ALIGN="CENTER"><STRONG>SP</STRONG></TD></TR><TR><TD
20
+ COLSTART="1" COLSPAN="2" ALIGN="CENTER"><STRONG>PC</STRONG></TD></TR></TABLE></CENTER>
21
+ <P>Some instructions, however, allow you to use the registers A,B,C,D,E,H, &amp;
22
+ L as 16-bit registers by pairing them up in the following manner: <STRONG>AF,BC,DE,
23
+ &amp; HL</STRONG>. The <STRONG>F</STRONG> register is indirectly accessible by
24
+ the programmer and is used to store the results of various math operations.</P>
25
+ <P>The <STRONG>PC</STRONG>, or Program Counter, register points to the next
26
+ instruction to be executed in the GameBoy memory. The <STRONG>SP</STRONG>, or
27
+ Stack Pointer, register points to the current stack position.</P>
28
+ <HR>
29
+ <H2>Program Counter</H2>
30
+ <P>On power up, the GameBoy Program Counter is initialized to $100 (100 hex)
31
+ and the instruction found at this location in ROM is executed. The Program
32
+ Counter from this point on is controlled, indirectly, by the program
33
+ instructions themselves that were generated by the programmer of the ROM cart.</P>
34
+ <H2>Stack Pointer</H2>
35
+ <P>A big key to understanding programming in assembly language on the GameBoy
36
+ is understanding the concept of a stack pointer. A familiarity with assembly
37
+ language for other processors helps greatly as the concepts are the same.</P>
38
+ <P>The GameBoy Stack Pointer is used to keep track of the top of the &quot;stack&quot;.
39
+ The stack is used for saving variables, saving return addresses, passing
40
+ arguments to subroutines, and various other uses that might be conceived by the
41
+ individual programmer.</P>
42
+ <P>The instructions CALL, PUSH, and RST all put information onto the stack. The
43
+ instructions POP, RET, and RETI all take information off of the stack.
44
+ (Interrupts put a return address on the stack and remove it at their completion
45
+ as well.) As information is put onto the stack, the stack grows downward in RAM
46
+ memory. As a result, the Stack Pointer should always be initialized at the
47
+ highest location of RAM space that has been allocated for use by the stack. For
48
+ instance, if a programmer wishes to locate the Stack Pointer at the top of low
49
+ RAM space ($C000-$DFFF) he would set the Stack Pointer to $E000 using the
50
+ command <STRONG>LD SP,$E000</STRONG>. (The Stack Pointer automatically
51
+ decrements before it puts something onto the stack so it is perfectly acceptable
52
+ to assign it a value which points to a memory address which is one location past
53
+ the end of available RAM.)</P>
54
+ <P>The GameBoy stack pointer is initialized to $FFFE on power up but a
55
+ programmer should not rely on this setting and rather should explicitly set its
56
+ value.</P>
57
+ <H2>Flag Register</H2>
58
+ <CENTER><TABLE BORDER="1" WIDTH="200"><TR><TD COLSTART="1">7</TD><TD
59
+ COLSTART="2">6</TD><TD COLSTART="3">5</TD><TD COLSTART="4">4</TD><TD
60
+ COLSTART="5">3</TD><TD COLSTART="6">2</TD><TD COLSTART="7">1</TD><TD
61
+ COLSTART="8">0</TD></TR><TR><TD COLSTART="1"><STRONG>Z</STRONG></TD><TD
62
+ COLSTART="2"><STRONG>N</STRONG></TD><TD COLSTART="3"><STRONG>H</STRONG></TD><TD
63
+ COLSTART="4"><STRONG>C</STRONG></TD><TD COLSTART="5"><STRONG>0</STRONG></TD><TD
64
+ COLSTART="6"><STRONG>0</STRONG></TD>
65
+ <TD COLSTART="7"><STRONG>0</STRONG></TD><TD COLSTART="8"><STRONG>0</STRONG></TD></TR></TABLE></CENTER>
66
+ <UL>
67
+ <LI><STRONG>Zero Flag (Z)</STRONG> - This bit is set when the result of a math
68
+ operation is zero or two values match when using the CP instruction. </LI>
69
+ <LI><STRONG>Subtract Flag (N)</STRONG> - This bit is set if a subtraction was
70
+ performed in the last math instruction.</LI>
71
+ <LI><STRONG>Half Carry Flag (H)</STRONG> - This bit is set if a carry occurred
72
+ from the lower nibble in the last math operation.</LI>
73
+ <LI><STRONG>Carry Flag (C)</STRONG> - This bit is set if a carry occurred from
74
+ the last math operation or if register A is the smaller value when executing the
75
+ CP instruction.</LI>
76
+ </UL>
77
+ <HR></BODY></HTML>
data/lib/galp/RL.GIF ADDED
Binary file
data/lib/galp/RLC.GIF ADDED
Binary file
data/lib/galp/RR.GIF ADDED
Binary file
data/lib/galp/RRC.GIF ADDED
Binary file
@@ -0,0 +1,7 @@
1
+ mkdir example1
2
+ copy c.bat example1\c.bat
3
+ copy example.lnk example1\example.lnk
4
+ copy example1.txt example1\example.asm
5
+ copy gbhw.txt example1\gbhw.inc
6
+ copy ibmpc1.txt example1\ibmpc1.inc
7
+ copy memory.txt example1\memory.asm
data/lib/galp/SLA.GIF ADDED
Binary file
data/lib/galp/SRA.GIF ADDED
Binary file
data/lib/galp/SRL.GIF ADDED
Binary file
@@ -0,0 +1,24 @@
1
+ <!DOCTYPE HTML PUBLIC "-//SQ//DTD HTML 2.0 HoTMetaL + extensions//EN">
2
+ <HTML><HEAD><TITLE>GameBoy Assembly Language Primer - Registers</TITLE></HEAD>
3
+ <BODY><CENTER><H2>GameBoy Assembly Language Primer</H2></CENTER>
4
+ <HR>
5
+ <CENTER><H2>Getting Started</H2></CENTER>
6
+ <P>This primer is geared towards beginners but it might be helpful to those
7
+ that have more advanced knowledge as well. It is designed to let a person
8
+ immediately try the samples to familiarize them with GameBoy Programming.</P>
9
+ <P>The samples in this primer are geared around the RGBDS GameBoy Assembler
10
+ written by Carsten Sorensen. This assember was chosen because it is by far the
11
+ most powerful GameBoy assembler currently available and it is also currently
12
+ free as well. To compile the samples found in these examples you need the
13
+ following files from the RGBDS distribution somewhere in the DOS path: <STRONG>RGBASM.EXE,
14
+ RGBFIX.EXE, </STRONG>and <STRONG>XLINK.EXE</STRONG> (or RGBLINK.EXE). If you
15
+ are not sure how to include these in the DOS path then just copy them to
16
+ C:\WINDOWS and you should be set.</P>
17
+ <P>The samples you see in the following pages are automatically put into their
18
+ own directory for compiling/testing by going to the DOS directory that contains
19
+ these html pages and just typing: <STRONG>SETUP</STRONG>. Then, to compile
20
+ Example 1 (for instance) you just do a <STRONG>cd example1</STRONG> and then
21
+ just type <STRONG>c</STRONG> to compile Example 1 into a standard .GB ROM file.
22
+ This ROM file is then useable on a GameBoy Emulator or on the real GameBoy
23
+ hardware with a suitable flash cartridge or other setup.</P>
24
+ <HR></BODY></HTML>
data/lib/galp/SWAP.GIF ADDED
Binary file
data/lib/galp/VID1.HTM ADDED
@@ -0,0 +1,34 @@
1
+ <!DOCTYPE HTML PUBLIC "-//SQ//DTD HTML 2.0 HoTMetaL + extensions//EN">
2
+ <HTML><HEAD><TITLE>GameBoy Assembly Language Primer - Registers</TITLE></HEAD>
3
+ <BODY><CENTER><H2>GameBoy Assembly Language Primer</H2></CENTER>
4
+ <HR>
5
+ <CENTER><H2>GameBoy Video Hardware</H2></CENTER>
6
+ <P>The GameBoy has physical memory space from $0000 to $FFFF:</P>
7
+ <CENTER><TABLE BORDER="1"><TR><TD COLSTART="1">$9800</TD><TD COLSTART="2">$9801</TD>
8
+ <TD COLSTART="3">$9802</TD><TD COLSTART="4">$9803</TD><TD COLSTART="5">....</TD><TD
9
+ COLSTART="6">$981F</TD></TR><TR><TD COLSTART="1">$9820</TD><TD COLSTART="2">$9821</TD>
10
+ <TD COLSTART="3">$9822</TD><TD COLSTART="4">....</TD><TD COLSTART="5">....</TD><TD
11
+ COLSTART="6">....</TD></TR><TR><TD COLSTART="1">$9840</TD><TD COLSTART="2">$9841</TD>
12
+ <TD COLSTART="3">....</TD><TD COLSTART="4">....</TD><TD COLSTART="5">....</TD><TD
13
+ COLSTART="6">....</TD></TR><TR><TD COLSTART="1">$9860</TD><TD COLSTART="2">....</TD>
14
+ <TD COLSTART="3">....</TD><TD COLSTART="4">....</TD><TD COLSTART="5">....</TD><TD
15
+ COLSTART="6">....</TD></TR><TR><TD COLSTART="1">....</TD><TD COLSTART="2">....</TD>
16
+ <TD COLSTART="3">....</TD><TD COLSTART="4">....</TD><TD COLSTART="5">....</TD><TD
17
+ COLSTART="6">....</TD></TR><TR><TD COLSTART="1">$9BE0</TD><TD COLSTART="2">....</TD>
18
+ <TD COLSTART="3">....</TD><TD COLSTART="4">....</TD><TD COLSTART="5">....</TD><TD
19
+ COLSTART="6">$9BFF</TD></TR></TABLE></CENTER>
20
+ <CENTER><TABLE BORDER="1"><TR><TD COLSTART="1">$9C00</TD><TD COLSTART="2">$9C01</TD>
21
+ <TD COLSTART="3">$9C02</TD><TD COLSTART="4">$9C03</TD><TD COLSTART="5">....</TD><TD
22
+ COLSTART="6">$9C1F</TD></TR><TR><TD COLSTART="1">$9C20</TD><TD COLSTART="2">$9C21</TD>
23
+ <TD COLSTART="3">$9C22</TD><TD COLSTART="4">....</TD><TD COLSTART="5">....</TD><TD
24
+ COLSTART="6">....</TD></TR><TR><TD COLSTART="1">$9C40</TD><TD COLSTART="2">$9C41</TD>
25
+ <TD COLSTART="3">....</TD><TD COLSTART="4">....</TD><TD COLSTART="5">....</TD><TD
26
+ COLSTART="6">....</TD></TR><TR><TD COLSTART="1">$9C60</TD><TD COLSTART="2">....</TD>
27
+ <TD COLSTART="3">....</TD><TD COLSTART="4">....</TD><TD COLSTART="5">....</TD><TD
28
+ COLSTART="6">....</TD></TR><TR><TD COLSTART="1">....</TD><TD COLSTART="2">....</TD>
29
+ <TD COLSTART="3">....</TD><TD COLSTART="4">....</TD><TD COLSTART="5">....</TD><TD
30
+ COLSTART="6">....</TD></TR><TR><TD COLSTART="1">$9FE0</TD><TD COLSTART="2">....</TD>
31
+ <TD COLSTART="3">....</TD><TD COLSTART="4">....</TD><TD COLSTART="5">....</TD><TD
32
+ COLSTART="6">$9FFF</TD></TR></TABLE></CENTER>
33
+ <HR>
34
+ </BODY></HTML>
data/lib/galp/XOR.GIF ADDED
Binary file
data/lib/rgbds/rgbasm ADDED
Binary file
data/lib/rgbds/rgbfix ADDED
Binary file
data/lib/rgbds/rgblink ADDED
Binary file
data/lib/rubygb/cli.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'thor'
2
+
3
+ module Rubygb
4
+ class CLI < Thor
5
+ desc 'build FILENAME', 'attempt to assemble, link and fix FILENAME and create a gb rom from it'
6
+ option :no_fix, :type => :boolean
7
+ def build filename
8
+ Rubygb.build filename, options
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ module Rubygb
2
+ def self.build filename, options={}
3
+ unless File.exists? filename
4
+ raise "Fatal: can't find #{filename}"
5
+ end
6
+
7
+ base = File.basename(filename, ".*")
8
+
9
+ exe_path = File.expand_path(File.join(File.dirname(__FILE__),"..","rgbds"))
10
+ puts `#{exe_path}/rgbasm -v -o#{base}.obj #{filename}`
11
+ puts `#{exe_path}/rgblink -m#{base}.map -n#{base}.sym -o#{base}.gb #{base}.obj`
12
+ puts `#{exe_path}/rgbfix -p0 -v #{base}.gb` unless options[:no_fix]
13
+ end
14
+ end
15
+
@@ -0,0 +1,4 @@
1
+ module Rubygb
2
+ VERSION = "0.1.0".freeze
3
+ end
4
+
data/lib/rubygb.rb ADDED
@@ -0,0 +1,7 @@
1
+ require_relative "rubygb/version"
2
+ require_relative "rubygb/rubygb"
3
+ require_relative "rubygb/cli"
4
+
5
+ module Rubygb
6
+ end
7
+