retrograph_easy 0.1

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.
@@ -0,0 +1,287 @@
1
+ # retrograph/easy/logo - the retrograph logo display magic
2
+ #
3
+ # Copyright (c) 2009 MenTaLguY <mental@rydia.net>
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+ #
23
+
24
+ module Retrograph
25
+ module Easy
26
+
27
+ class Logo
28
+ def initialize(app)
29
+ @app = app
30
+ end
31
+
32
+ def show
33
+ @app.reset_vdu
34
+
35
+ @app.vdu_mode 0x7
36
+
37
+ # setup palette
38
+ @app.palette_entry_rgb 0, 0, 0, 0
39
+ @app.palette_entry_rgb 1, 255, 0, 0
40
+
41
+ # setup patterns
42
+ @app.tile_pattern_4bit(0x0000, START_PATTERN, PATTERN_DATA)
43
+
44
+ num_characters = CHARACTERS.size
45
+
46
+ start_row = (28 - 4) / 2 - 2
47
+ start_col = (32 - (num_characters * 2)) / 2
48
+ name_base = (start_col + start_row * 32) * 2
49
+
50
+ # setup name table
51
+ @app.write_vdu(0x0800 + name_base, LETTER_NAME_DATA)
52
+ name_base += 64
53
+ prepare_led_characters(name_base, num_characters)
54
+
55
+ # start display loop
56
+ characters = [0] * num_characters
57
+ delay = 9
58
+ for revealed in 0..num_characters
59
+ @app.each_of_n_frames(delay) do
60
+ characters.map! { rand(127) + 1 }
61
+ characters[0, revealed] = CHARACTERS[0, revealed]
62
+ show_led_characters(name_base, characters)
63
+ end
64
+ delay = 1
65
+ end
66
+ end
67
+
68
+ def prepare_led_characters(name_base, count)
69
+ count.times do
70
+ prepare_led_character(name_base)
71
+ name_base += 4
72
+ end
73
+ end
74
+
75
+ def prepare_led_character(name_base)
76
+ @app.write_vdu_byte(0x0800 + name_base + 3, 0b00100000)
77
+ @app.write_vdu_byte(0x0800 + name_base + 67, 0b00100000)
78
+ @app.write_vdu_byte(0x0800 + name_base + 129, 0b00010000)
79
+ @app.write_vdu_byte(0x0800 + name_base + 131, 0b00110000)
80
+ end
81
+
82
+ def show_led_characters(name_base, cs)
83
+ cs.each do |c|
84
+ show_led_character(name_base, c)
85
+ name_base += 4
86
+ end
87
+ end
88
+
89
+ def show_led_character(name_base, c)
90
+ for (name_offset, index, mappings) in CHAR_BIT_MAPPINGS
91
+ for (mask, shift) in mappings
92
+ index += (c & mask) >> shift
93
+ end
94
+ @app.write_vdu_byte(0x0800 + name_base + name_offset, index)
95
+ end
96
+ end
97
+ end
98
+
99
+ Logo::START_PATTERN = 1
100
+
101
+ ma_pattern = [
102
+ 0x00000000,
103
+ 0x01001010,
104
+ 0x10101110,
105
+ 0x11101110,
106
+ 0x10101010,
107
+ 0x10101010,
108
+ 0x00000000,
109
+ 0x00000000
110
+ ].pack("V8")
111
+
112
+ de_pattern = [
113
+ 0x00000000,
114
+ 0x11100110,
115
+ 0x00101010,
116
+ 0x01101010,
117
+ 0x00101010,
118
+ 0x11100110,
119
+ 0x00000000,
120
+ 0x00000000
121
+ ].pack("V8")
122
+
123
+ wi_pattern = [
124
+ 0x00000000,
125
+ 0x10101000,
126
+ 0x10101000,
127
+ 0x10101000,
128
+ 0x10111000,
129
+ 0x10111000,
130
+ 0x00000000,
131
+ 0x00000000
132
+ ].pack("V8")
133
+
134
+ th_pattern = [
135
+ 0x00000000,
136
+ 0x10101110,
137
+ 0x10100100,
138
+ 0x11100100,
139
+ 0x10100100,
140
+ 0x10100100,
141
+ 0x00000000,
142
+ 0x00000000
143
+ ].pack("V8")
144
+
145
+ letter_patterns = [
146
+ ma_pattern,
147
+ de_pattern,
148
+ wi_pattern,
149
+ th_pattern
150
+ ]
151
+
152
+ letter_pattern_offset = Logo::START_PATTERN
153
+ n_letter_patterns = letter_patterns.size
154
+
155
+ blank = [
156
+ 0x00000000,
157
+ 0x00000000,
158
+ 0x00000000,
159
+ 0x00000000,
160
+ 0x00000000,
161
+ 0x00000000,
162
+ 0x00000000,
163
+ 0x00000000
164
+ ]
165
+
166
+ corner_horizontal = [
167
+ 0x00000000,
168
+ 0x11111000,
169
+ 0x11110000,
170
+ 0x11100000,
171
+ 0x00000000,
172
+ 0x00000000,
173
+ 0x00000000,
174
+ 0x00000000
175
+ ]
176
+
177
+ corner_vertical = [
178
+ 0x00000000,
179
+ 0x00000000,
180
+ 0x00000010,
181
+ 0x00000110,
182
+ 0x00001110,
183
+ 0x00001110,
184
+ 0x00001110,
185
+ 0x00001110
186
+ ]
187
+
188
+ raw_corner_images = [
189
+ corner_vertical,
190
+ corner_horizontal
191
+ ]
192
+
193
+ corner_pattern_offset = letter_pattern_offset + n_letter_patterns
194
+ n_corner_patterns = 1 << raw_corner_images.size
195
+
196
+ middle_horizontal = [
197
+ 0x00000000,
198
+ 0x00000000,
199
+ 0x11110000,
200
+ 0x11111000,
201
+ 0x11110000,
202
+ 0x00000000,
203
+ 0x00000000,
204
+ 0x00000000
205
+ ]
206
+
207
+ middle_vertical_top = [
208
+ 0x00001110,
209
+ 0x00000110,
210
+ 0x00000010,
211
+ 0x00000000,
212
+ 0x00000000,
213
+ 0x00000000,
214
+ 0x00000000,
215
+ 0x00000000
216
+ ]
217
+
218
+ middle_vertical_bottom = [
219
+ 0x00000000,
220
+ 0x00000000,
221
+ 0x00000000,
222
+ 0x00000000,
223
+ 0x00000010,
224
+ 0x00000110,
225
+ 0x00001110,
226
+ 0x00001110
227
+ ]
228
+
229
+ raw_middle_images = [
230
+ middle_vertical_bottom,
231
+ middle_vertical_top,
232
+ middle_horizontal
233
+ ]
234
+
235
+ middle_pattern_offset = corner_pattern_offset + n_corner_patterns
236
+ n_middle_patterns = 1 << raw_middle_images.size
237
+
238
+ Logo::LETTER_NAME_DATA = (0...n_letter_patterns).map { |i|
239
+ [ i + letter_pattern_offset, 0 ]
240
+ }.flatten.pack("C*")
241
+
242
+ led_patterns = [raw_corner_images, raw_middle_images].map { |raw_images|
243
+ bits = raw_images.size
244
+ (0...(1 << bits)).map { |i|
245
+ image = blank
246
+ for bit in 0...bits
247
+ if ((i >> bit) & 1).nonzero?
248
+ image = image.zip(raw_images[bit]).map { |a, b| a | b }
249
+ end
250
+ end
251
+ image.pack("V8")
252
+ }
253
+ }
254
+
255
+ Logo::PATTERN_DATA = [letter_patterns, led_patterns].flatten.inject("") { |a, b| a + b }
256
+
257
+ Logo::CHARACTERS = [
258
+ 0b00100010, # r
259
+ 0b01111110, # e
260
+ 0b00111010, # t
261
+ 0b00100010, # r
262
+ 0b00110011, # o
263
+ 0b01111101, # g
264
+ 0b00100010, # r
265
+ 0b01110111, # a
266
+ 0b01101110, # P
267
+ 0b00101011 # h
268
+ ]
269
+
270
+ Logo::CHAR_BIT_MAPPINGS = [
271
+ [0, corner_pattern_offset, [[0b01000000, 5], [0b00001000, 3]]],
272
+ [2, corner_pattern_offset, [[0b01000000, 5], [0b00000100, 2]]],
273
+ [64, middle_pattern_offset, [[0b00100000, 3], [0b00001000, 2], [0b00000010, 1]]],
274
+ [66, middle_pattern_offset, [[0b00100000, 3], [0b00000100, 1], [0b00000001, 0]]],
275
+ [128, corner_pattern_offset, [[0b00010000, 3], [0b00000010, 1]]],
276
+ [130, corner_pattern_offset, [[0b00010000, 3], [0b00000001, 0]]]
277
+ ]
278
+
279
+ class App
280
+ def show_retrograph_logo
281
+ Logo.new(self).show
282
+ self
283
+ end
284
+ end
285
+
286
+ end
287
+ end
@@ -0,0 +1,99 @@
1
+ # retrograph/easy/periodic
2
+ #
3
+ # Copyright (c) 2009 MenTaLguY <mental@rydia.net>
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+ #
23
+
24
+ module Retrograph
25
+ module Easy
26
+
27
+ class Periodic
28
+ def initialize(interval, phases)
29
+ @count = 0
30
+ @interval = interval.to_i
31
+ @period = @interval * phases.to_i
32
+ end
33
+
34
+ def phase
35
+ @count / @interval
36
+ end
37
+
38
+ def firing?
39
+ (@count % @interval).zero?
40
+ end
41
+
42
+ def tick
43
+ @count = (@count + 1) % @period
44
+ nil
45
+ end
46
+ end
47
+
48
+ class PeriodicManager
49
+ def initialize
50
+ @named_periodics = {}
51
+ end
52
+
53
+ def start(label, interval, phases)
54
+ label = label.to_sym
55
+ periodic = Periodic.new(interval, phases)
56
+ @named_periodics[label] = periodic
57
+ nil
58
+ end
59
+
60
+ def stop(label)
61
+ label = label.to_sym
62
+ @named_periodics.delete label
63
+ nil
64
+ end
65
+
66
+ def frame_for?(label)
67
+ label = label.to_sym
68
+ begin
69
+ periodic = @named_periodics.fetch label
70
+ rescue IndexError
71
+ return false
72
+ end
73
+ periodic.firing?
74
+ end
75
+
76
+ def already?(label)
77
+ label = label.to_sym
78
+ @named_periodics.has_key? label
79
+ end
80
+
81
+ def phase_of(label)
82
+ label = label.to_sym
83
+ begin
84
+ periodic = @named_periodics.fetch label
85
+ rescue IndexError
86
+ return 0
87
+ end
88
+ periodic.phase
89
+ end
90
+
91
+ def tick
92
+ @named_periodics.each_value do |periodic|
93
+ periodic.tick
94
+ end
95
+ end
96
+ end
97
+
98
+ end
99
+ end
@@ -0,0 +1,133 @@
1
+ # retrograph/easy/sprites
2
+ #
3
+ # Copyright (c) 2009 MenTaLguY <mental@rydia.net>
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+ #
23
+
24
+ class String
25
+ if instance_methods.include? :get_byte # 1.9
26
+ alias_method :_retrograph_get_byte, :get_byte
27
+ else
28
+ alias_method :_retrograph_get_byte, :[]
29
+ end
30
+ if instance_methods.include? :set_byte # 1.9
31
+ alias_method :_retrograph_set_byte, :set_byte
32
+ else
33
+ alias_method :_retrograph_set_byte, :[]=
34
+ end
35
+ end
36
+
37
+ module Retrograph
38
+ module Easy
39
+
40
+ class SpriteManager
41
+ BLANK_SPRITES = ("\000" * 256).freeze
42
+
43
+ def initialize(display)
44
+ @display = display
45
+ @sprite_data = "\000" * 4
46
+ @data_offset = 0
47
+ @flip_flags = 0
48
+ @other_flags = 0
49
+ @x_exp = 0
50
+ @y_exp = 0
51
+ @x = 0
52
+ @y = 0
53
+ @mirror_x = 0
54
+ @mirror_y = 0
55
+ end
56
+
57
+ def add_sprite_group(x, y, width, height, flags)
58
+ saved_flip_flags = @flip_flags
59
+ saved_other_flags = @other_flags
60
+ saved_x_exp = @x_exp
61
+ saved_y_exp = @y_exp
62
+ saved_x = @x
63
+ saved_y = @y
64
+ saved_mirror_x = @mirror_x
65
+ saved_mirror_y = @mirror_y
66
+ begin
67
+ x = @mirror_x - x if (@flip_flags & 0b00100000).nonzero?
68
+ y = @mirror_y - y if (@flip_flags & 0b00010000).nonzero?
69
+ @x = (x << @x_exp) + @x
70
+ @y = (y << @y_exp) + @y
71
+ @flip_flags ^= flags & 0b00110000
72
+ @other_flags |= flags & 0b00001111
73
+ @x_exp = (@flip_flags & 0b00001000) >> 3
74
+ @y_exp = (@flip_flags & 0b00000100) >> 2
75
+ @mirror_x = (width << @x_exp) - (8 << @x_exp)
76
+ @mirror_y = (height << @y_exp) - (8 << @y_exp)
77
+ yield
78
+ rescue
79
+ @flip_flags = saved_flip_flags
80
+ @other_flags = saved_other_flags
81
+ @x_exp = saved_x_exp
82
+ @y_exp = saved_y_exp
83
+ @x = saved_x
84
+ @y = saved_y
85
+ @mirror_x = saved_mirror_x
86
+ @mirror_y = saved_mirror_y
87
+ end
88
+ nil
89
+ end
90
+
91
+ def add_multi_sprite(x, y, pattern, width_tiles, height_tiles, flags)
92
+ add_sprite_group(x, y, width_tiles << 3, height_tiles << 3, flags) do
93
+ row = 0
94
+ while row < height_tiles
95
+ col = 0
96
+ while col < width_tiles
97
+ add_sprite(x + (col << 3), y + (row << 3), (pattern + col) & 0xff, 0)
98
+ col += 1
99
+ end
100
+ pattern += 32
101
+ row += 1
102
+ end
103
+ end
104
+ nil
105
+ end
106
+
107
+ def add_sprite(x, y, pattern, flags)
108
+ return nil unless @data_offset < 256
109
+ x = @mirror_x - x if (@flip_flags & 0b00100000).nonzero?
110
+ y = @mirror_y - y if (@flip_flags & 0b00010000).nonzero?
111
+ x = (x << @x_exp) + @x
112
+ y = (y << @y_exp) + @y
113
+ if x >= 0 and x < 256 and y >= 0 and y < 224
114
+ flags = (flags ^ @flip_flags) | @other_flags
115
+ @sprite_data._retrograph_set_byte(0, x)
116
+ @sprite_data._retrograph_set_byte(1, y + 1)
117
+ @sprite_data._retrograph_set_byte(2, pattern)
118
+ @sprite_data._retrograph_set_byte(3, flags)
119
+ @display.write_vdu(0x7e00 + @data_offset, @sprite_data)
120
+ end
121
+ @data_offset += 4
122
+ nil
123
+ end
124
+
125
+ def clear_sprites
126
+ @display.write_vdu(0x7e00, BLANK_SPRITES)
127
+ @data_offset = 0
128
+ self
129
+ end
130
+ end
131
+
132
+ end
133
+ end
@@ -0,0 +1,32 @@
1
+ # retrograph/easy
2
+ #
3
+ # Copyright (c) 2009 MenTaLguY <mental@rydia.net>
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+ #
23
+
24
+ require 'retrograph/easy/constants'
25
+ require 'retrograph/easy/app'
26
+ require 'retrograph/easy/logo'
27
+
28
+ def Retrograph.app(&block)
29
+ Retrograph::Easy.app do
30
+ self.instance_eval(&block)
31
+ end
32
+ end
@@ -0,0 +1,26 @@
1
+ # retrograph/sdl
2
+ #
3
+ # Copyright (c) 2009 MenTaLguY <mental@rydia.net>
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+
23
+ require 'retrograph'
24
+ require 'sdl'
25
+
26
+ Retrograph._init_sdl
data/lib/retrograph.rb ADDED
@@ -0,0 +1,29 @@
1
+ # retrograph
2
+ #
3
+ # Copyright (c) 2009 MenTaLguY <mental@rydia.net>
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+ #
23
+
24
+ # augment search path for fat binary gems
25
+ ruby_version = /^\d+\.\d+/.match(RUBY_VERSION)[0]
26
+ base_dir = File.dirname(__FILE__)
27
+ $:.push File.join(base_dir, ruby_version)
28
+
29
+ require 'retrograph.so'
data/spec/easy_spec.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'retrograph/easy'
2
+
3
+ describe Retrograph::Easy do
4
+ it "should exist" do
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: retrograph_easy
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - MenTaLguY <mental@rydia.net>
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-24 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: retrograph
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0.5"
24
+ version:
25
+ description: |
26
+ Retrograph/EASY is a simple API built atop Retrograph, a software renderer
27
+ which simulates a late-era 8-bit display with capabilities similar to those
28
+ of the Sega Master System.
29
+
30
+ email: mental@rydia.net
31
+ executables: []
32
+
33
+ extensions: []
34
+
35
+ extra_rdoc_files: []
36
+
37
+ files:
38
+ - Rakefile
39
+ - README
40
+ - COPYING
41
+ - lib/retrograph.rb
42
+ - lib/retrograph/easy.rb
43
+ - lib/retrograph/sdl.rb
44
+ - lib/retrograph/easy/app.rb
45
+ - lib/retrograph/easy/logo.rb
46
+ - lib/retrograph/easy/constants.rb
47
+ - lib/retrograph/easy/display.rb
48
+ - lib/retrograph/easy/controllers.rb
49
+ - lib/retrograph/easy/sprites.rb
50
+ - lib/retrograph/easy/periodic.rb
51
+ - spec/easy_spec.rb
52
+ - demos/defense.rb
53
+ - demos/logo.rb
54
+ has_rdoc: true
55
+ homepage: http://rubyforge.org/projects/retrograph
56
+ licenses: []
57
+
58
+ post_install_message:
59
+ rdoc_options: []
60
+
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ version:
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ requirements: []
76
+
77
+ rubyforge_project: retrograph
78
+ rubygems_version: 1.3.4
79
+ signing_key:
80
+ specification_version: 3
81
+ summary: Retrograph/EASY, a simple API for Retrograph games.
82
+ test_files: []
83
+