burn 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +56 -569
- data/lib/burn.rb +5 -3
- data/lib/burn/cli.rb +160 -199
- data/lib/burn/config.rb +4 -0
- data/lib/burn/config/app.rb +15 -0
- data/lib/burn/config/config_base.rb +16 -0
- data/lib/burn/config/loader.rb +23 -0
- data/lib/burn/config/server.rb +11 -0
- data/lib/burn/fuel.rb +11 -0
- data/lib/burn/{dsl → fuel}/dsl_base.rb +1 -1
- data/lib/burn/fuel/rom/channel_stream.rb +106 -0
- data/lib/burn/fuel/rom/declare.rb +43 -0
- data/lib/burn/fuel/rom/music.rb +37 -0
- data/lib/burn/fuel/rom/note.rb +126 -0
- data/lib/burn/fuel/rom/scene.rb +279 -0
- data/lib/burn/fuel/rom/sound.rb +31 -0
- data/lib/burn/fuel/rom/sound_effect.rb +92 -0
- data/lib/burn/fuel/telnet/declare.rb +26 -0
- data/lib/burn/fuel/telnet/scene.rb +112 -0
- data/lib/burn/generator.rb +10 -3
- data/lib/burn/generator/rom/assembly_music.rb +49 -0
- data/lib/burn/generator/rom/assembly_sound_effect.rb +35 -0
- data/lib/burn/generator/rom/c_source.rb +55 -0
- data/lib/burn/generator/{template → rom/template}/mus_template.s +0 -0
- data/lib/burn/generator/{template → rom/template}/template.c +0 -0
- data/lib/burn/generator/rom_builder.rb +67 -0
- data/lib/burn/generator/telnet/jit_compiler.rb +41 -0
- data/lib/burn/generator/telnet/screen.rb +86 -0
- data/lib/burn/generator/telnet/sprite.rb +16 -0
- data/lib/burn/generator/telnet/user_input.rb +25 -0
- data/lib/burn/generator/telnet_vm.rb +50 -0
- data/lib/burn/pxes.rb +3 -0
- data/lib/burn/{util/pxes.rb → pxes/cc65_transpiler.rb} +8 -14
- data/lib/burn/pxes/cruby_transpiler.rb +189 -0
- data/lib/burn/pxes/transpiler_base.rb +14 -0
- data/lib/burn/server.rb +2 -0
- data/lib/burn/server/rom.rb +24 -0
- data/lib/burn/server/telnet.rb +120 -0
- data/lib/burn/util.rb +1 -2
- data/lib/burn/util/logo.rb +68 -0
- data/lib/burn/util/os.rb +1 -1
- data/lib/burn/version.rb +1 -1
- metadata +53 -19
- data/lib/burn/builder.rb +0 -65
- data/lib/burn/dsl.rb +0 -8
- data/lib/burn/dsl/channel_stream.rb +0 -105
- data/lib/burn/dsl/declare.rb +0 -42
- data/lib/burn/dsl/music.rb +0 -36
- data/lib/burn/dsl/note.rb +0 -125
- data/lib/burn/dsl/scene.rb +0 -278
- data/lib/burn/dsl/sound.rb +0 -30
- data/lib/burn/dsl/sound_effect.rb +0 -91
- data/lib/burn/generator/assembly_music.rb +0 -47
- data/lib/burn/generator/assembly_sound_effect.rb +0 -33
- data/lib/burn/generator/c_source.rb +0 -54
- data/lib/burn/util/server.rb +0 -21
data/lib/burn/server.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
module Burn
|
2
|
+
module Server
|
3
|
+
class Rom
|
4
|
+
require 'webrick'
|
5
|
+
|
6
|
+
def initialize(document_root, conf)
|
7
|
+
@server = WEBrick::HTTPServer.new({:DocumentRoot => document_root,
|
8
|
+
:BindAddress => conf.server.ip_addr,
|
9
|
+
:Port => conf.server.port,
|
10
|
+
:MaxClients => conf.server.max_clients})
|
11
|
+
trap 'INT' do
|
12
|
+
@server.shutdown
|
13
|
+
end
|
14
|
+
@server.mount_proc('/shutdown'){ |req, resp|
|
15
|
+
@server.stop
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
def start
|
20
|
+
@server.start
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
module Burn
|
2
|
+
module Server
|
3
|
+
class Telnet
|
4
|
+
require 'eventmachine'
|
5
|
+
include Debug
|
6
|
+
|
7
|
+
def initialize(fuel, conf)
|
8
|
+
@@op = nil
|
9
|
+
@@screen_buffer = nil
|
10
|
+
@@conf = conf
|
11
|
+
@fuel = fuel
|
12
|
+
verbose conf.app.verbose
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.vm
|
16
|
+
@@vm
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.op(receive=nil)
|
20
|
+
if receive.nil? then
|
21
|
+
@@op
|
22
|
+
else
|
23
|
+
@@op = receive
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.conf
|
28
|
+
@@conf
|
29
|
+
end
|
30
|
+
|
31
|
+
class Messenger < EM::Connection
|
32
|
+
include Debug
|
33
|
+
@@channel = EM::Channel.new
|
34
|
+
|
35
|
+
def post_init
|
36
|
+
if EM::connection_count <= Telnet.conf.server.max_clients then
|
37
|
+
log "-- someone connected"
|
38
|
+
@sid = @@channel.subscribe { |data| send_data data }
|
39
|
+
log @sid
|
40
|
+
# display current screen for newly connected user
|
41
|
+
@@channel.push Telnet.vm.screen.to_terminal
|
42
|
+
else
|
43
|
+
send_data "Burn telnet server refused to establish connection, since there is no remaining connection slots. Please try later."
|
44
|
+
close_connection true
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def receive_data(data)
|
49
|
+
#@@channel.push data
|
50
|
+
#puts data # only shown in server's terminal
|
51
|
+
receive = proc do
|
52
|
+
#"user=#{@sid} typed [" + data + "]"
|
53
|
+
Telnet.vm.interrupt data.ord
|
54
|
+
log "...ord=#{data.ord},#{data}"
|
55
|
+
end
|
56
|
+
Telnet.op receive
|
57
|
+
end
|
58
|
+
|
59
|
+
def unbind
|
60
|
+
log "-- someone(#{@sid}) disconnected from the server"
|
61
|
+
@@channel.unsubscribe(@sid)
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.publish(message)
|
65
|
+
@@channel.push message
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
def start
|
71
|
+
@@vm = Generator::TelnetVm.new(@fuel, @@conf)
|
72
|
+
|
73
|
+
EM::run do
|
74
|
+
EM::start_server(@@conf.server.ip_addr, @@conf.server.port, Messenger)
|
75
|
+
|
76
|
+
# view
|
77
|
+
EM::add_periodic_timer(frame_rate) do
|
78
|
+
if @@vm.screen.to_terminal != @@screen_buffer then
|
79
|
+
log "both screen and @screen_buffer is updated!"
|
80
|
+
Messenger.publish @@vm.screen.to_terminal
|
81
|
+
@@screen_buffer = @@vm.screen.to_terminal
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
# controller + model
|
86
|
+
EM::add_periodic_timer(frame_rate) do
|
87
|
+
if !@@op.nil? then
|
88
|
+
callback = proc do |s|
|
89
|
+
@@op=nil
|
90
|
+
log "callback is called."
|
91
|
+
end
|
92
|
+
EM::defer(@@op, callback)
|
93
|
+
log "EM::defer is called."
|
94
|
+
end
|
95
|
+
@@vm.next_frame
|
96
|
+
end
|
97
|
+
|
98
|
+
#EM::set_quantum 10
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
private
|
104
|
+
|
105
|
+
def frame_rate
|
106
|
+
case @@conf.app.frame_rate
|
107
|
+
when :high then 0.03
|
108
|
+
when :normal then 0.5
|
109
|
+
when :slow then 1.0
|
110
|
+
else 0.5
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def verbose(flag)
|
115
|
+
Debug::Logger.new.enabled flag
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
data/lib/burn/util.rb
CHANGED
@@ -0,0 +1,68 @@
|
|
1
|
+
module Burn
|
2
|
+
module Util
|
3
|
+
class Logo
|
4
|
+
def initialize(version)
|
5
|
+
@version = version
|
6
|
+
end
|
7
|
+
|
8
|
+
def to_s
|
9
|
+
# used a icon from noun project. Thanks Jenny!
|
10
|
+
# http://thenounproject.com/term/fire/24187/
|
11
|
+
<<-EOS
|
12
|
+
|
13
|
+
`.::-`
|
14
|
+
:hNMMNNds/.
|
15
|
+
:dMMMMMMNdo.
|
16
|
+
`oNMMMMMMMNh:
|
17
|
+
/NMMMMMMMMNy.
|
18
|
+
+MMMMMMMMMMm/
|
19
|
+
dMMMMMMMMMMNo
|
20
|
+
oMMMMMMMMMMMM+
|
21
|
+
+MMMMMMMMMMMMN/
|
22
|
+
sMMMMMMMMMMMMMm.
|
23
|
+
`mMMMMMMMMMMMMMMs ::`
|
24
|
+
/MMMMMMMMMMMMMMMN. `hh/`
|
25
|
+
`dMMMMMMMMMMMMMMMMo -NMd/`
|
26
|
+
sMMMMMMMMMMMMMMMMMd yMMMh-
|
27
|
+
/MMMMMMMMMMMMMMMMMMN. /MMMMN+
|
28
|
+
:NMMMMMMMMMMMMMMMMMMM- :MMMMMMo`
|
29
|
+
-mMMMMMMMMMMMMMMMMMMMM/ oMMMMMMMo
|
30
|
+
.dMMMMMMMMMMMMMMMMMMMMMo .mMMMMMMMN:
|
31
|
+
.dMMMMMMMMMMMMMMMMMMMMMMm` .dMMMMMMMMMm`
|
32
|
+
`dMMMMMMMMMMMMMMMMMMMMMMMMy.```/mMMMMMMMMMMMo
|
33
|
+
`hMMMMMMMMMMMMMMMNNNMMMMMMMMNhhmMMMMMMMMMMMMMm`
|
34
|
+
`hMMMMMMMMMMMMMMMN/`-/yNMMMMMMMMMMMMMMMMMMMMMMM:
|
35
|
+
`yMMMMMMMMMMMMMMMMMN- .hMMMMMMMMMMMMMMMMMMMMMMy
|
36
|
+
sMMMMMMMMMMMMMMMMMMMy sMMMMMMMMMMMMMMMMMMMMMd
|
37
|
+
+MMMMMMMMMMMMMMMMMMMMd `hMMMMMMMMMMMMMMMMMMMMN`
|
38
|
+
-NMMMMMMMMMMMMMMMMMMMMs .NMMMMMMMMMMMMMMMMMMMM-
|
39
|
+
`dMMMMMMMMMMMMMMMMMMMMm. sMMMMMMMMMMMMMMMMMMMM:
|
40
|
+
+MMMMMMMMMMMMMMMMMMMMN- -MMMMMMMMMMMMMMMMMMMM.
|
41
|
+
`mMMMMMMMMMMMMMMMMMMMm- NMMMN+NMMMMMMMMMMMMN
|
42
|
+
/MMMMMMMMMMMMMMMMMMMh. NMMMM--mMMMMMMMMMMMh
|
43
|
+
yMMMMMMMMMMMMMMMMMN+` .MMMMM+ -mMMMMMMMMMM+
|
44
|
+
`mMMMMMMMMMMMMMMMMh- +MMMMM: /MMMMMMMMMN.
|
45
|
+
-MMMMMMMMMMMMMMMN+` yMMMMs hMMMMMMMMy
|
46
|
+
:MMMMMMMMMMMMMMd- :hhy:` /MMMMMMMN.
|
47
|
+
.NMMMMMMMMMMMMy. `` -MMMMMMMo
|
48
|
+
dMMMMMMMMMMMs` .MMMMMMd`
|
49
|
+
+MMMMMMMMMMy` :MMMMMN-
|
50
|
+
`dMMMMMMMMN. sMMMMN/
|
51
|
+
:NMMMMMMMh `mMMMN+
|
52
|
+
+MMMMMMMs burn oMMMN+
|
53
|
+
+NMMMMMh -NMMm:
|
54
|
+
/mMMMMN- v#{@version} .dMNy.
|
55
|
+
.hNMMMh` .dNh:
|
56
|
+
`/mMMMh. -hy:`
|
57
|
+
`+mMMm/` `:+.
|
58
|
+
`/hNMd+. ``
|
59
|
+
.+hNNy/.
|
60
|
+
`-/oo:
|
61
|
+
|
62
|
+
|
63
|
+
EOS
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
data/lib/burn/util/os.rb
CHANGED
data/lib/burn/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: burn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-08-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -43,6 +43,22 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: eventmachine
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
46
62
|
- !ruby/object:Gem::Dependency
|
47
63
|
name: rake
|
48
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,34 +88,52 @@ files:
|
|
72
88
|
- LICENSE
|
73
89
|
- README.md
|
74
90
|
- bin/burn
|
75
|
-
- lib/burn/builder.rb
|
76
91
|
- lib/burn/cli.rb
|
92
|
+
- lib/burn/config/app.rb
|
93
|
+
- lib/burn/config/config_base.rb
|
94
|
+
- lib/burn/config/loader.rb
|
95
|
+
- lib/burn/config/server.rb
|
96
|
+
- lib/burn/config.rb
|
77
97
|
- lib/burn/debug.rb
|
78
|
-
- lib/burn/
|
79
|
-
- lib/burn/
|
80
|
-
- lib/burn/
|
81
|
-
- lib/burn/
|
82
|
-
- lib/burn/
|
83
|
-
- lib/burn/
|
84
|
-
- lib/burn/
|
85
|
-
- lib/burn/
|
86
|
-
- lib/burn/
|
87
|
-
- lib/burn/
|
88
|
-
- lib/burn/
|
89
|
-
- lib/burn/generator/
|
90
|
-
- lib/burn/generator/
|
91
|
-
- lib/burn/generator/
|
98
|
+
- lib/burn/fuel/dsl_base.rb
|
99
|
+
- lib/burn/fuel/rom/channel_stream.rb
|
100
|
+
- lib/burn/fuel/rom/declare.rb
|
101
|
+
- lib/burn/fuel/rom/music.rb
|
102
|
+
- lib/burn/fuel/rom/note.rb
|
103
|
+
- lib/burn/fuel/rom/scene.rb
|
104
|
+
- lib/burn/fuel/rom/sound.rb
|
105
|
+
- lib/burn/fuel/rom/sound_effect.rb
|
106
|
+
- lib/burn/fuel/telnet/declare.rb
|
107
|
+
- lib/burn/fuel/telnet/scene.rb
|
108
|
+
- lib/burn/fuel.rb
|
109
|
+
- lib/burn/generator/rom/assembly_music.rb
|
110
|
+
- lib/burn/generator/rom/assembly_sound_effect.rb
|
111
|
+
- lib/burn/generator/rom/c_source.rb
|
112
|
+
- lib/burn/generator/rom/template/mus_template.s
|
113
|
+
- lib/burn/generator/rom/template/template.c
|
114
|
+
- lib/burn/generator/rom_builder.rb
|
115
|
+
- lib/burn/generator/telnet/jit_compiler.rb
|
116
|
+
- lib/burn/generator/telnet/screen.rb
|
117
|
+
- lib/burn/generator/telnet/sprite.rb
|
118
|
+
- lib/burn/generator/telnet/user_input.rb
|
119
|
+
- lib/burn/generator/telnet_vm.rb
|
92
120
|
- lib/burn/generator.rb
|
121
|
+
- lib/burn/pxes/cc65_transpiler.rb
|
122
|
+
- lib/burn/pxes/cruby_transpiler.rb
|
123
|
+
- lib/burn/pxes/transpiler_base.rb
|
124
|
+
- lib/burn/pxes.rb
|
125
|
+
- lib/burn/server/rom.rb
|
126
|
+
- lib/burn/server/telnet.rb
|
127
|
+
- lib/burn/server.rb
|
93
128
|
- lib/burn/tools/mac.tar.gz
|
94
129
|
- lib/burn/tools/make_exec.sh
|
95
130
|
- lib/burn/tools/other.tar.gz
|
96
131
|
- lib/burn/tools/src.tar.gz
|
97
132
|
- lib/burn/tools/win.tar.gz
|
98
133
|
- lib/burn/tools/workspace_default.tar.gz
|
134
|
+
- lib/burn/util/logo.rb
|
99
135
|
- lib/burn/util/os.rb
|
100
136
|
- lib/burn/util/patternizer.rb
|
101
|
-
- lib/burn/util/pxes.rb
|
102
|
-
- lib/burn/util/server.rb
|
103
137
|
- lib/burn/util/unpack.rb
|
104
138
|
- lib/burn/util.rb
|
105
139
|
- lib/burn/version.rb
|
data/lib/burn/builder.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
module Burn
|
2
|
-
class Builder
|
3
|
-
include Dsl
|
4
|
-
include Generator
|
5
|
-
include Debug
|
6
|
-
|
7
|
-
def initialize(workspace_root)
|
8
|
-
@workspace_root = workspace_root
|
9
|
-
|
10
|
-
@game_generator = CSource.new(@workspace_root)
|
11
|
-
@music_generator = AssemblyMusic.new(@workspace_root)
|
12
|
-
@sound_effect_generator = AssemblySoundEffect.new(@workspace_root)
|
13
|
-
end
|
14
|
-
|
15
|
-
def verbose(flag)
|
16
|
-
Debug::Logger.new.enabled flag
|
17
|
-
end
|
18
|
-
|
19
|
-
def load(dsl_raw_text)
|
20
|
-
self.instance_eval dsl_raw_text
|
21
|
-
end
|
22
|
-
|
23
|
-
def generate
|
24
|
-
@game_generator.generate
|
25
|
-
@music_generator.generate
|
26
|
-
@sound_effect_generator.generate
|
27
|
-
end
|
28
|
-
|
29
|
-
def method_missing(method_symbol, *args, &block)
|
30
|
-
log :method_symbol=>method_symbol, :args=>args, :block=>block
|
31
|
-
if method_symbol == :music then
|
32
|
-
Music.new(args[0], @music_generator.get_context).instance_eval(&block)
|
33
|
-
|
34
|
-
elsif method_symbol == :scene then
|
35
|
-
# preprocess
|
36
|
-
args[0] = "main" if args[0].nil?
|
37
|
-
@game_generator.get_context.instance_exec args[0], &lambda{|resource_name|
|
38
|
-
[
|
39
|
-
"",
|
40
|
-
"//#{resource_name} label starts",
|
41
|
-
"#{resource_name}:"
|
42
|
-
].each {|p| @code_blocks.push p}
|
43
|
-
}
|
44
|
-
|
45
|
-
# execute dsls
|
46
|
-
Scene.new(args[0], @game_generator.get_context).instance_eval(&block)
|
47
|
-
|
48
|
-
# postprocess - To deal with the case of on_enter_frame not found, adding while loop at the end of program
|
49
|
-
@game_generator.get_context.instance_exec {@code_blocks.push "ppu_on_all();", "while(1);"}
|
50
|
-
|
51
|
-
elsif method_symbol == :declare then
|
52
|
-
Declare.new(args[0], @game_generator.get_context).instance_eval(&block)
|
53
|
-
|
54
|
-
elsif method_symbol == :sound then
|
55
|
-
Sound.new(args[0], @sound_effect_generator.get_context).instance_eval(&block)
|
56
|
-
|
57
|
-
# postprocess
|
58
|
-
@game_generator.get_context.instance_exec(@sound_effect_generator.resources.count-1) do |count|
|
59
|
-
@global.push "#define SFX_#{args[0].upcase} #{count.to_s}"
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|