rubygb 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/.DS_Store +0 -0
- data/Gemfile.lock +13 -1
- data/README.md +3 -3
- data/lib/galp/memory.inc +153 -0
- data/lib/rgbds/LICENSE +32 -0
- data/lib/rubygb/cli.rb +26 -2
- data/lib/rubygb/template/template.rb +99 -0
- data/lib/rubygb/version.rb +1 -1
- data/lib/rubygb.rb +1 -0
- data/rubygb.gemspec +2 -0
- data/scrap/example/gbhw.inc +645 -0
- data/{lib/galp/EXAMPLE1.TXT → scrap/example/hello-world-with-comments.asm} +123 -113
- data/scrap/example/hello-world-with-comments.gb +0 -0
- data/scrap/example/hello-world-with-comments.map +65 -0
- data/scrap/example/hello-world-with-comments.obj +0 -0
- data/scrap/example/hello-world-with-comments.sym +12 -0
- data/scrap/example/ibmpc1.inc +2400 -0
- data/scrap/test/lib/gbhw.inc +645 -0
- data/scrap/test/lib/ibmpx1.inc +2400 -0
- data/scrap/test/lib/memory.inc +153 -0
- data/scrap/test/test.gb +0 -0
- data/scrap/test/test.map +65 -0
- data/scrap/test/test.obj +0 -0
- data/scrap/test/test.s +91 -0
- data/scrap/test/test.sym +12 -0
- metadata +37 -31
- data/lib/galp/AND.GIF +0 -0
- data/lib/galp/ARROW.GIF +0 -0
- data/lib/galp/C.BAT +0 -5
- data/lib/galp/CHANGES.TXT +0 -5
- data/lib/galp/EXAMPLE.LNK +0 -7
- data/lib/galp/GBSPEC.TXT +0 -1761
- data/lib/galp/INDEX.HTM +0 -23
- data/lib/galp/INSTR.HTM +0 -563
- data/lib/galp/MEM1.HTM +0 -199
- data/lib/galp/OPCODES.HTM +0 -351
- data/lib/galp/OR.GIF +0 -0
- data/lib/galp/README.TXT +0 -4
- data/lib/galp/REGS.HTM +0 -77
- data/lib/galp/RL.GIF +0 -0
- data/lib/galp/RLC.GIF +0 -0
- data/lib/galp/RR.GIF +0 -0
- data/lib/galp/RRC.GIF +0 -0
- data/lib/galp/SETUP.BAT +0 -7
- data/lib/galp/SLA.GIF +0 -0
- data/lib/galp/SRA.GIF +0 -0
- data/lib/galp/SRL.GIF +0 -0
- data/lib/galp/START.HTM +0 -24
- data/lib/galp/SWAP.GIF +0 -0
- data/lib/galp/VID1.HTM +0 -34
- data/lib/galp/XOR.GIF +0 -0
- /data/lib/galp/{GBHW.TXT → gbhw.inc} +0 -0
- /data/lib/galp/{IBMPC1.TXT → ibmpx1.inc} +0 -0
- /data/{lib/galp/MEMORY.TXT → scrap/example/memory.asm} +0 -0
@@ -0,0 +1,153 @@
|
|
1
|
+
|
2
|
+
;*
|
3
|
+
;* MEMORY.ASM - Memory Manipulation Code
|
4
|
+
;* by GABY. Inspired by Carsten Sorensen & others.
|
5
|
+
;*
|
6
|
+
;* V1.0 - Original release
|
7
|
+
;*
|
8
|
+
|
9
|
+
;If all of these are already defined, don't do it again.
|
10
|
+
|
11
|
+
IF !DEF(MEMORY1_ASM)
|
12
|
+
MEMORY1_ASM SET 1
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
; Macro that pauses until VRAM available.
|
17
|
+
|
18
|
+
lcd_WaitVRAM: MACRO
|
19
|
+
ld a,[rSTAT] ; <---+
|
20
|
+
and STATF_BUSY ; |
|
21
|
+
jr nz,@-4 ; ----+
|
22
|
+
ENDM
|
23
|
+
|
24
|
+
PUSHS ; Push the current section onto assember stack.
|
25
|
+
|
26
|
+
SECTION "Memory1 Code",HOME
|
27
|
+
|
28
|
+
;***************************************************************************
|
29
|
+
;*
|
30
|
+
;* mem_Set - "Set" a memory region
|
31
|
+
;*
|
32
|
+
;* input:
|
33
|
+
;* a - value
|
34
|
+
;* hl - pMem
|
35
|
+
;* bc - bytecount
|
36
|
+
;*
|
37
|
+
;***************************************************************************
|
38
|
+
mem_Set::
|
39
|
+
inc b
|
40
|
+
inc c
|
41
|
+
jr .skip
|
42
|
+
.loop ld [hl+],a
|
43
|
+
.skip dec c
|
44
|
+
jr nz,.loop
|
45
|
+
dec b
|
46
|
+
jr nz,.loop
|
47
|
+
ret
|
48
|
+
|
49
|
+
;***************************************************************************
|
50
|
+
;*
|
51
|
+
;* mem_Copy - "Copy" a memory region
|
52
|
+
;*
|
53
|
+
;* input:
|
54
|
+
;* hl - pSource
|
55
|
+
;* de - pDest
|
56
|
+
;* bc - bytecount
|
57
|
+
;*
|
58
|
+
;***************************************************************************
|
59
|
+
mem_Copy::
|
60
|
+
inc b
|
61
|
+
inc c
|
62
|
+
jr .skip
|
63
|
+
.loop ld a,[hl+]
|
64
|
+
ld [de],a
|
65
|
+
inc de
|
66
|
+
.skip dec c
|
67
|
+
jr nz,.loop
|
68
|
+
dec b
|
69
|
+
jr nz,.loop
|
70
|
+
ret
|
71
|
+
|
72
|
+
;***************************************************************************
|
73
|
+
;*
|
74
|
+
;* mem_Copy - "Copy" a monochrome font from ROM to RAM
|
75
|
+
;*
|
76
|
+
;* input:
|
77
|
+
;* hl - pSource
|
78
|
+
;* de - pDest
|
79
|
+
;* bc - bytecount of Source
|
80
|
+
;*
|
81
|
+
;***************************************************************************
|
82
|
+
mem_CopyMono::
|
83
|
+
inc b
|
84
|
+
inc c
|
85
|
+
jr .skip
|
86
|
+
.loop ld a,[hl+]
|
87
|
+
ld [de],a
|
88
|
+
inc de
|
89
|
+
ld [de],a
|
90
|
+
inc de
|
91
|
+
.skip dec c
|
92
|
+
jr nz,.loop
|
93
|
+
dec b
|
94
|
+
jr nz,.loop
|
95
|
+
ret
|
96
|
+
|
97
|
+
|
98
|
+
;***************************************************************************
|
99
|
+
;*
|
100
|
+
;* mem_SetVRAM - "Set" a memory region in VRAM
|
101
|
+
;*
|
102
|
+
;* input:
|
103
|
+
;* a - value
|
104
|
+
;* hl - pMem
|
105
|
+
;* bc - bytecount
|
106
|
+
;*
|
107
|
+
;***************************************************************************
|
108
|
+
mem_SetVRAM::
|
109
|
+
inc b
|
110
|
+
inc c
|
111
|
+
jr .skip
|
112
|
+
.loop push af
|
113
|
+
di
|
114
|
+
lcd_WaitVRAM
|
115
|
+
pop af
|
116
|
+
ld [hl+],a
|
117
|
+
ei
|
118
|
+
.skip dec c
|
119
|
+
jr nz,.loop
|
120
|
+
dec b
|
121
|
+
jr nz,.loop
|
122
|
+
ret
|
123
|
+
|
124
|
+
;***************************************************************************
|
125
|
+
;*
|
126
|
+
;* mem_CopyVRAM - "Copy" a memory region to or from VRAM
|
127
|
+
;*
|
128
|
+
;* input:
|
129
|
+
;* hl - pSource
|
130
|
+
;* de - pDest
|
131
|
+
;* bc - bytecount
|
132
|
+
;*
|
133
|
+
;***************************************************************************
|
134
|
+
mem_CopyVRAM::
|
135
|
+
inc b
|
136
|
+
inc c
|
137
|
+
jr .skip
|
138
|
+
.loop di
|
139
|
+
lcd_WaitVRAM
|
140
|
+
ld a,[hl+]
|
141
|
+
ld [de],a
|
142
|
+
ei
|
143
|
+
inc de
|
144
|
+
.skip dec c
|
145
|
+
jr nz,.loop
|
146
|
+
dec b
|
147
|
+
jr nz,.loop
|
148
|
+
ret
|
149
|
+
|
150
|
+
POPS ; Pop the current section off of assember stack.
|
151
|
+
|
152
|
+
ENDC ;MEMORY1_ASM
|
153
|
+
|
data/scrap/test/test.gb
ADDED
Binary file
|
data/scrap/test/test.map
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
ROM Bank #0 (HOME):
|
2
|
+
SECTION: $0040-$0040 ($0001 bytes)
|
3
|
+
SECTION: $0048-$0048 ($0001 bytes)
|
4
|
+
SECTION: $0050-$0050 ($0001 bytes)
|
5
|
+
SECTION: $0058-$0058 ($0001 bytes)
|
6
|
+
SECTION: $0060-$0060 ($0001 bytes)
|
7
|
+
SECTION: $0100-$09AE ($08AF bytes)
|
8
|
+
$0952 = begin
|
9
|
+
$099E = StopLCD
|
10
|
+
$0150 = TileData
|
11
|
+
$0990 = Title
|
12
|
+
$099E = TitleEnd
|
13
|
+
SECTION: $0061-$00B6 ($0056 bytes)
|
14
|
+
$007B = mem_CopyMono
|
15
|
+
$008B = mem_SetVRAM
|
16
|
+
$00A1 = mem_CopyVRAM
|
17
|
+
$0061 = mem_Set
|
18
|
+
$006D = mem_Copy
|
19
|
+
SLACK: $36F6 bytes
|
20
|
+
|
21
|
+
WRAM Bank #0:
|
22
|
+
EMPTY
|
23
|
+
|
24
|
+
WRAM Bank #1:
|
25
|
+
EMPTY
|
26
|
+
|
27
|
+
WRAM Bank #2:
|
28
|
+
EMPTY
|
29
|
+
|
30
|
+
WRAM Bank #3:
|
31
|
+
EMPTY
|
32
|
+
|
33
|
+
WRAM Bank #4:
|
34
|
+
EMPTY
|
35
|
+
|
36
|
+
WRAM Bank #5:
|
37
|
+
EMPTY
|
38
|
+
|
39
|
+
WRAM Bank #6:
|
40
|
+
EMPTY
|
41
|
+
|
42
|
+
WRAM Bank #7:
|
43
|
+
EMPTY
|
44
|
+
|
45
|
+
VRAM Bank #0:
|
46
|
+
EMPTY
|
47
|
+
|
48
|
+
VRAM Bank #1:
|
49
|
+
EMPTY
|
50
|
+
|
51
|
+
HRAM:
|
52
|
+
EMPTY
|
53
|
+
|
54
|
+
SRAM Bank #0:
|
55
|
+
EMPTY
|
56
|
+
|
57
|
+
SRAM Bank #1:
|
58
|
+
EMPTY
|
59
|
+
|
60
|
+
SRAM Bank #2:
|
61
|
+
EMPTY
|
62
|
+
|
63
|
+
SRAM Bank #3:
|
64
|
+
EMPTY
|
65
|
+
|
data/scrap/test/test.obj
ADDED
Binary file
|
data/scrap/test/test.s
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
; test.s
|
2
|
+
;
|
3
|
+
; TODO: summary
|
4
|
+
|
5
|
+
INCLUDE "lib/gbhw.inc" ; gameboy hardware definitions
|
6
|
+
INCLUDE "lib/ibmpx1.inc" ; ibm ascii font macros
|
7
|
+
|
8
|
+
|
9
|
+
; interrupts
|
10
|
+
SECTION "Vblank",HOME[$0040]
|
11
|
+
reti
|
12
|
+
SECTION "LCDC",HOME[$0048]
|
13
|
+
reti
|
14
|
+
SECTION "Timer_Overflow",HOME[$0050]
|
15
|
+
reti
|
16
|
+
SECTION "Serial",HOME[$0058]
|
17
|
+
reti
|
18
|
+
SECTION "p1thru4",HOME[$0060]
|
19
|
+
reti
|
20
|
+
|
21
|
+
; jump to start of user code at `begin`
|
22
|
+
|
23
|
+
SECTION "start",HOME[$0100]
|
24
|
+
nop
|
25
|
+
jp begin
|
26
|
+
|
27
|
+
; rom header - no memory bank controller, 32k rom, 0; ram
|
28
|
+
ROM_HEADER ROM_NOMBC, ROM_SIZE_32KBYTE, RAM_SIZE_0KBYTE
|
29
|
+
|
30
|
+
|
31
|
+
INCLUDE "lib/memory.inc"; memory copying macros
|
32
|
+
|
33
|
+
TileData:
|
34
|
+
chr_IBMPC1 1,8 ; LOAD ENTIRE CHARACTER SET
|
35
|
+
|
36
|
+
|
37
|
+
; initialization
|
38
|
+
begin:
|
39
|
+
nop
|
40
|
+
di
|
41
|
+
ld sp, $ffff ; set the stack pointer to highest mem location + 1
|
42
|
+
init:
|
43
|
+
ld a, %11100100 ; Window palette colors, from darkest to lightest
|
44
|
+
ld [rBGP], a ; CLEAR THE SCREEN
|
45
|
+
|
46
|
+
ld a,0 ; SET SCREEN TO TO UPPER RIGHT HAND CORNER
|
47
|
+
ld [rSCX], a
|
48
|
+
ld [rSCY], a
|
49
|
+
call StopLCD ; YOU CAN NOT LOAD $8000 WITH LCD ON
|
50
|
+
ld hl, TileData
|
51
|
+
ld de, _VRAM ; $8000
|
52
|
+
ld bc, 8*256 ; the ASCII character set: 256 characters, each with 8 bytes of display data
|
53
|
+
call mem_CopyMono ; load tile data
|
54
|
+
ld a, LCDCF_ON|LCDCF_BG8000|LCDCF_BG9800|LCDCF_BGON|LCDCF_OBJ16|LCDCF_OBJOFF
|
55
|
+
ld [rLCDC], a
|
56
|
+
ld a, 32 ; ASCII FOR BLANK SPACE
|
57
|
+
ld hl, _SCRN0
|
58
|
+
ld bc, SCRN_VX_B * SCRN_VY_B
|
59
|
+
call mem_SetVRAM
|
60
|
+
|
61
|
+
; main
|
62
|
+
ld hl,Title
|
63
|
+
ld de, _SCRN0+3+(SCRN_VY_B*7) ;
|
64
|
+
ld bc, TitleEnd-Title
|
65
|
+
call mem_CopyVRAM
|
66
|
+
|
67
|
+
wait:
|
68
|
+
halt
|
69
|
+
nop
|
70
|
+
jr wait
|
71
|
+
|
72
|
+
Title:
|
73
|
+
DB "test + rubygb!"
|
74
|
+
TitleEnd:
|
75
|
+
|
76
|
+
StopLCD:
|
77
|
+
ld a,[rLCDC]
|
78
|
+
rlca
|
79
|
+
ret nc
|
80
|
+
|
81
|
+
.wait:
|
82
|
+
ld a,[rLY]
|
83
|
+
cp 145
|
84
|
+
jr nz,.wait
|
85
|
+
|
86
|
+
|
87
|
+
ld a,[rLCDC]
|
88
|
+
res 7,a
|
89
|
+
ld [rLCDC],a
|
90
|
+
|
91
|
+
ret
|
data/scrap/test/test.sym
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubygb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Donald Hutchison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry-byebug
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: thor
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,41 +70,17 @@ files:
|
|
56
70
|
- README.md
|
57
71
|
- Rakefile
|
58
72
|
- bin/rubygb
|
59
|
-
- lib/galp/
|
60
|
-
- lib/galp/
|
61
|
-
- lib/galp/
|
62
|
-
- lib/
|
63
|
-
- lib/galp/EXAMPLE.LNK
|
64
|
-
- lib/galp/EXAMPLE1.TXT
|
65
|
-
- lib/galp/GBHW.TXT
|
66
|
-
- lib/galp/GBSPEC.TXT
|
67
|
-
- lib/galp/IBMPC1.TXT
|
68
|
-
- lib/galp/INDEX.HTM
|
69
|
-
- lib/galp/INSTR.HTM
|
70
|
-
- lib/galp/MEM1.HTM
|
71
|
-
- lib/galp/MEMORY.TXT
|
72
|
-
- lib/galp/OPCODES.HTM
|
73
|
-
- lib/galp/OR.GIF
|
74
|
-
- lib/galp/README.TXT
|
75
|
-
- lib/galp/REGS.HTM
|
76
|
-
- lib/galp/RL.GIF
|
77
|
-
- lib/galp/RLC.GIF
|
78
|
-
- lib/galp/RR.GIF
|
79
|
-
- lib/galp/RRC.GIF
|
80
|
-
- lib/galp/SETUP.BAT
|
81
|
-
- lib/galp/SLA.GIF
|
82
|
-
- lib/galp/SRA.GIF
|
83
|
-
- lib/galp/SRL.GIF
|
84
|
-
- lib/galp/START.HTM
|
85
|
-
- lib/galp/SWAP.GIF
|
86
|
-
- lib/galp/VID1.HTM
|
87
|
-
- lib/galp/XOR.GIF
|
73
|
+
- lib/galp/gbhw.inc
|
74
|
+
- lib/galp/ibmpx1.inc
|
75
|
+
- lib/galp/memory.inc
|
76
|
+
- lib/rgbds/LICENSE
|
88
77
|
- lib/rgbds/rgbasm
|
89
78
|
- lib/rgbds/rgbfix
|
90
79
|
- lib/rgbds/rgblink
|
91
80
|
- lib/rubygb.rb
|
92
81
|
- lib/rubygb/cli.rb
|
93
82
|
- lib/rubygb/rubygb.rb
|
83
|
+
- lib/rubygb/template/template.rb
|
94
84
|
- lib/rubygb/version.rb
|
95
85
|
- rubygb.gemspec
|
96
86
|
- scrap/basic.gb
|
@@ -98,6 +88,22 @@ files:
|
|
98
88
|
- scrap/basic.obj
|
99
89
|
- scrap/basic.s
|
100
90
|
- scrap/basic.sym
|
91
|
+
- scrap/example/gbhw.inc
|
92
|
+
- scrap/example/hello-world-with-comments.asm
|
93
|
+
- scrap/example/hello-world-with-comments.gb
|
94
|
+
- scrap/example/hello-world-with-comments.map
|
95
|
+
- scrap/example/hello-world-with-comments.obj
|
96
|
+
- scrap/example/hello-world-with-comments.sym
|
97
|
+
- scrap/example/ibmpc1.inc
|
98
|
+
- scrap/example/memory.asm
|
99
|
+
- scrap/test/lib/gbhw.inc
|
100
|
+
- scrap/test/lib/ibmpx1.inc
|
101
|
+
- scrap/test/lib/memory.inc
|
102
|
+
- scrap/test/test.gb
|
103
|
+
- scrap/test/test.map
|
104
|
+
- scrap/test/test.obj
|
105
|
+
- scrap/test/test.s
|
106
|
+
- scrap/test/test.sym
|
101
107
|
- spec/basic.s
|
102
108
|
- spec/rubygb_spec.rb
|
103
109
|
homepage: https://github.com/rkachowski/rubygb
|
data/lib/galp/AND.GIF
DELETED
Binary file
|
data/lib/galp/ARROW.GIF
DELETED
Binary file
|
data/lib/galp/C.BAT
DELETED
data/lib/galp/CHANGES.TXT
DELETED