rubygb 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+