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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/Gemfile.lock +13 -1
  4. data/README.md +3 -3
  5. data/lib/galp/memory.inc +153 -0
  6. data/lib/rgbds/LICENSE +32 -0
  7. data/lib/rubygb/cli.rb +26 -2
  8. data/lib/rubygb/template/template.rb +99 -0
  9. data/lib/rubygb/version.rb +1 -1
  10. data/lib/rubygb.rb +1 -0
  11. data/rubygb.gemspec +2 -0
  12. data/scrap/example/gbhw.inc +645 -0
  13. data/{lib/galp/EXAMPLE1.TXT → scrap/example/hello-world-with-comments.asm} +123 -113
  14. data/scrap/example/hello-world-with-comments.gb +0 -0
  15. data/scrap/example/hello-world-with-comments.map +65 -0
  16. data/scrap/example/hello-world-with-comments.obj +0 -0
  17. data/scrap/example/hello-world-with-comments.sym +12 -0
  18. data/scrap/example/ibmpc1.inc +2400 -0
  19. data/scrap/test/lib/gbhw.inc +645 -0
  20. data/scrap/test/lib/ibmpx1.inc +2400 -0
  21. data/scrap/test/lib/memory.inc +153 -0
  22. data/scrap/test/test.gb +0 -0
  23. data/scrap/test/test.map +65 -0
  24. data/scrap/test/test.obj +0 -0
  25. data/scrap/test/test.s +91 -0
  26. data/scrap/test/test.sym +12 -0
  27. metadata +37 -31
  28. data/lib/galp/AND.GIF +0 -0
  29. data/lib/galp/ARROW.GIF +0 -0
  30. data/lib/galp/C.BAT +0 -5
  31. data/lib/galp/CHANGES.TXT +0 -5
  32. data/lib/galp/EXAMPLE.LNK +0 -7
  33. data/lib/galp/GBSPEC.TXT +0 -1761
  34. data/lib/galp/INDEX.HTM +0 -23
  35. data/lib/galp/INSTR.HTM +0 -563
  36. data/lib/galp/MEM1.HTM +0 -199
  37. data/lib/galp/OPCODES.HTM +0 -351
  38. data/lib/galp/OR.GIF +0 -0
  39. data/lib/galp/README.TXT +0 -4
  40. data/lib/galp/REGS.HTM +0 -77
  41. data/lib/galp/RL.GIF +0 -0
  42. data/lib/galp/RLC.GIF +0 -0
  43. data/lib/galp/RR.GIF +0 -0
  44. data/lib/galp/RRC.GIF +0 -0
  45. data/lib/galp/SETUP.BAT +0 -7
  46. data/lib/galp/SLA.GIF +0 -0
  47. data/lib/galp/SRA.GIF +0 -0
  48. data/lib/galp/SRL.GIF +0 -0
  49. data/lib/galp/START.HTM +0 -24
  50. data/lib/galp/SWAP.GIF +0 -0
  51. data/lib/galp/VID1.HTM +0 -34
  52. data/lib/galp/XOR.GIF +0 -0
  53. /data/lib/galp/{GBHW.TXT → gbhw.inc} +0 -0
  54. /data/lib/galp/{IBMPC1.TXT → ibmpx1.inc} +0 -0
  55. /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
+
Binary file
@@ -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
+
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
@@ -0,0 +1,12 @@
1
+ ;File generated by rgblink
2
+
3
+ 00:0952 begin
4
+ 00:099E StopLCD
5
+ 00:0150 TileData
6
+ 00:0990 Title
7
+ 00:099E TitleEnd
8
+ 00:007B mem_CopyMono
9
+ 00:008B mem_SetVRAM
10
+ 00:00A1 mem_CopyVRAM
11
+ 00:0061 mem_Set
12
+ 00:006D mem_Copy
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.1.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-24 00:00:00.000000000 Z
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/AND.GIF
60
- - lib/galp/ARROW.GIF
61
- - lib/galp/C.BAT
62
- - lib/galp/CHANGES.TXT
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
@@ -1,5 +0,0 @@
1
- rgbasm -oexample.obj example.asm
2
- rgblink -mmap example.lnk
3
- rgbfix -v example
4
- del *.obj
5
-
data/lib/galp/CHANGES.TXT DELETED
@@ -1,5 +0,0 @@
1
- GALP History
2
- ------------
3
-
4
- V1.0 - Original version
5
-
data/lib/galp/EXAMPLE.LNK DELETED
@@ -1,7 +0,0 @@
1
- # Linkfile for Pan Library Demo
2
-
3
- [Objects]
4
- example.obj
5
-
6
- [Output]
7
- example.gb