gbtiles 0.0.3 → 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.
- checksums.yaml +4 -4
- data/README.md +14 -0
- data/bin/gbm +0 -3
- data/bin/gbr +0 -3
- data/lib/gbtiles/gbm/cli/convert.rb +8 -17
- data/lib/gbtiles/gbm/export/asm/asm.h.erb +3 -3
- data/lib/gbtiles/gbm/export/asm/asm.rb +7 -1
- data/lib/gbtiles/gbm/export/asm/asm.s.erb +4 -4
- data/lib/gbtiles/gbm/import/gbm_file.rb +24 -13
- data/lib/gbtiles/gbm/layer.rb +9 -0
- data/lib/gbtiles/gbm/map/map_set.rb +22 -11
- data/lib/gbtiles/gbm/map/object.rb +0 -5
- data/lib/gbtiles/gbm/map/object_type.rb +8 -8
- data/lib/gbtiles/gbm/map/objects/map.rb +1 -14
- data/lib/gbtiles/gbm/map/objects/map_export_settings.rb +1 -28
- data/lib/gbtiles/gbm/map/objects/map_settings.rb +1 -26
- data/lib/gbtiles/gbm/map/objects/map_tile_data.rb +1 -2
- data/lib/gbtiles/gbm/map/objects/map_tile_data_record.rb +0 -9
- data/lib/gbtiles/gbm/map/objects/producer.rb +2 -7
- data/lib/gbtiles/gbm/map/objects/unknown.rb +0 -1
- data/lib/gbtiles/gbr/cli/convert.rb +2 -19
- data/lib/gbtiles/gbr/export/asm/asm.rb +0 -1
- data/lib/gbtiles/gbr/import/gbr_file.rb +37 -21
- data/lib/gbtiles/gbr/tile_set/color_set.rb +6 -6
- data/lib/gbtiles/gbr/tile_set/export_type.rb +7 -7
- data/lib/gbtiles/gbr/tile_set/object.rb +0 -3
- data/lib/gbtiles/gbr/tile_set/object_type.rb +10 -10
- data/lib/gbtiles/gbr/tile_set/objects/palettes.rb +1 -10
- data/lib/gbtiles/gbr/tile_set/objects/producer.rb +1 -6
- data/lib/gbtiles/gbr/tile_set/objects/tile_data.rb +2 -13
- data/lib/gbtiles/gbr/tile_set/objects/tile_export.rb +1 -42
- data/lib/gbtiles/gbr/tile_set/objects/tile_import.rb +1 -18
- data/lib/gbtiles/gbr/tile_set/objects/tile_pal.rb +1 -10
- data/lib/gbtiles/gbr/tile_set/objects/tile_settings.rb +1 -22
- data/lib/gbtiles/gbr/tile_set/objects/unknown.rb +0 -1
- data/lib/gbtiles/gbr/tile_set/sgb_palettes.rb +7 -7
- data/lib/gbtiles/gbr/tile_set/split_order.rb +6 -6
- data/lib/gbtiles/gbr/tile_set/tile_set.rb +20 -9
- data/lib/gbtiles/{data_type.rb → helpers/data_type.rb} +19 -11
- data/lib/gbtiles/version.rb +1 -1
- metadata +47 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c47f1925b50e61d331766cb83c1bbc9c6212189
|
4
|
+
data.tar.gz: e4dbe6e1333ae545493ed3a307713cdb19c675fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff753667dc247a29dd990fdf2914aecb6c40e23fe5ec7314b92f633fe17da31cc33d5944a27c880ec3b1530dfb0b1c7b28df346febb728776f64adf583f4de9e
|
7
|
+
data.tar.gz: fae1c944cd637d8278d5e49f484bc5554994bb742365bb4850ab0ba20794c5c787543e1aa4086770661a1e846d19c0b95390e9864c9664e820974fe876837b1b
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# GBTiles
|
2
2
|
|
3
|
+
[](https://app.wercker.com/project/bykey/c42dc696662599ce8eb787410c3b8780) [](https://codeclimate.com/github/bashaus/gbtiles) [](https://codeclimate.com/github/bashaus/gbtiles/coverage)
|
4
|
+
|
3
5
|
Converts `.GBR` files created with
|
4
6
|
[Harry Mulder's Tile Designer (GBTD)](http://www.devrs.com/gb/hmgd/gbtd.html)
|
5
7
|
and `.GBM` files created with
|
@@ -32,6 +34,9 @@ a C file `*.h` for convenience.
|
|
32
34
|
|
33
35
|
gbr convert --output "sample.s" sample.gbr
|
34
36
|
|
37
|
+
Omitting the input file `.gbm` file will default to `STDIN`. Omitting the
|
38
|
+
output file `.s` will default to `STDOUT`.
|
39
|
+
|
35
40
|
### GBM (GBMB files)
|
36
41
|
|
37
42
|
Converts a Map Builder file `*.gbm` to an ASM file `*.s` and generates
|
@@ -39,6 +44,15 @@ a C file `*.h` for convenience.
|
|
39
44
|
|
40
45
|
gbm convert --output "sample.s" sample.gbm
|
41
46
|
|
47
|
+
You can also specify the target layer of a map specifying a layer flag.
|
48
|
+
Acceptable values: `bkg` for the background, `win` for the window overlay or
|
49
|
+
`sprite` for sprites. Default value: `bkg`.
|
50
|
+
|
51
|
+
gbm convert --output "sample.s" --layer=bkg sample.gbm
|
52
|
+
|
53
|
+
Omitting the input file `.gbm` file will default to `STDIN`. Omitting the
|
54
|
+
output file `.s` will default to `STDOUT`.
|
55
|
+
|
42
56
|
## Contributors
|
43
57
|
|
44
58
|
* @bashaus -- [Bashkim Isai](http://www.bashkim.com.au/)
|
data/bin/gbm
CHANGED
data/bin/gbr
CHANGED
@@ -1,29 +1,19 @@
|
|
1
|
-
require "gbtiles/data_type"
|
2
|
-
|
1
|
+
require "gbtiles/helpers/data_type"
|
3
2
|
require "gbtiles/gbm/import/gbm_file"
|
4
|
-
|
5
|
-
require "gbtiles/gbm/map/map_set"
|
6
|
-
|
7
|
-
require "gbtiles/gbm/map/object"
|
8
|
-
require "gbtiles/gbm/map/object_type"
|
9
|
-
|
10
|
-
require "gbtiles/gbm/map/objects/producer"
|
11
|
-
require "gbtiles/gbm/map/objects/map"
|
12
|
-
require "gbtiles/gbm/map/objects/map_tile_data"
|
13
|
-
require "gbtiles/gbm/map/objects/map_tile_data_record"
|
14
|
-
require "gbtiles/gbm/map/objects/map_settings"
|
15
|
-
require "gbtiles/gbm/map/objects/map_export_settings"
|
16
|
-
require "gbtiles/gbm/map/objects/unknown"
|
17
|
-
|
18
3
|
require "gbtiles/gbm/export/asm/asm"
|
19
4
|
|
20
5
|
desc "Convert a file from GBM format"
|
21
6
|
arg_name "input"
|
22
7
|
command :convert do |c|
|
23
8
|
|
24
|
-
c.desc "Output filename
|
9
|
+
c.desc "Output filename [*.s]"
|
25
10
|
c.flag :output
|
26
11
|
|
12
|
+
c.desc "Layer type of the map [bkg, win, sprite]"
|
13
|
+
c.flag :layer,
|
14
|
+
:must_match => [:bkg, :win, :sprite],
|
15
|
+
:default_value => :bkg
|
16
|
+
|
27
17
|
c.action do |global_options,options,args|
|
28
18
|
# Prepare input file
|
29
19
|
if !args[0].nil? then
|
@@ -50,6 +40,7 @@ command :convert do |c|
|
|
50
40
|
# Do export
|
51
41
|
export = GBTiles::GBM::Export::ASM::ASM.new
|
52
42
|
export.map_set = import.map_set
|
43
|
+
export.layer = options[:layer]
|
53
44
|
export.write(output_file)
|
54
45
|
output_file.close
|
55
46
|
end
|
@@ -4,11 +4,11 @@
|
|
4
4
|
* GBTiles Ruby Gem (v<%= GBTiles::VERSION %>) - GBM
|
5
5
|
*
|
6
6
|
* .GBM created with
|
7
|
-
* <%= map_set.
|
8
|
-
* <%= map_set.
|
7
|
+
* <%= map_set.producer.first.name %> (v<%= map_set.producer.first.version %>)
|
8
|
+
* <%= map_set.producer.first.info %>
|
9
9
|
*/
|
10
10
|
|
11
|
-
<% map_set.
|
11
|
+
<% map_set.map.each do |map| -%>
|
12
12
|
// Helper: Map dimensions
|
13
13
|
#define <%= map_export_settings.label_name %>Width <%= map.width %>
|
14
14
|
#define <%= map_export_settings.label_name %>Height <%= map.height %>
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require "gbtiles/gbm/layer"
|
2
|
+
|
1
3
|
require "erb"
|
2
4
|
|
3
5
|
module GBTiles
|
@@ -8,7 +10,7 @@ module GBTiles
|
|
8
10
|
include ERB::Util
|
9
11
|
|
10
12
|
attr_accessor :map_set
|
11
|
-
|
13
|
+
attr_accessor :layer
|
12
14
|
|
13
15
|
def initialize
|
14
16
|
end
|
@@ -17,6 +19,10 @@ module GBTiles
|
|
17
19
|
if @map_set.nil? then
|
18
20
|
raise "Missing required map"
|
19
21
|
end
|
22
|
+
|
23
|
+
if @layer.nil? then
|
24
|
+
raise "Missing required layer (bkg, win, sprite)"
|
25
|
+
end
|
20
26
|
end
|
21
27
|
|
22
28
|
def render_s
|
@@ -3,12 +3,12 @@
|
|
3
3
|
; GBTiles Ruby Gem (v<%= GBTiles::VERSION %>) - GBM
|
4
4
|
;
|
5
5
|
; .GBM created with
|
6
|
-
; <%= map_set.
|
7
|
-
; <%= map_set.
|
6
|
+
; <%= map_set.producer.first.name %> (v<%= map_set.producer.first.version %>)
|
7
|
+
; <%= map_set.producer.first.info %>
|
8
8
|
|
9
9
|
.area _CODE_<%= map_export_settings.bank -%>
|
10
10
|
|
11
|
-
<% map_set.
|
11
|
+
<% map_set.map.each do |map| -%>
|
12
12
|
<% map_tile_data = map_set.map_tile_data(map.master_id).first -%>
|
13
13
|
|
14
14
|
; Map <%= "(#{map.name})" unless map.name.nil? %>
|
@@ -21,7 +21,7 @@ _<%= map_export_settings.label_name %>:
|
|
21
21
|
<% row_tile_data = map_tile_data.row(row, 16) -%>
|
22
22
|
<% if !row_tile_data.nil? -%>
|
23
23
|
.db <%= row_tile_data
|
24
|
-
.map {|x| sprintf("0x%02x", x.tile_number) }
|
24
|
+
.map {|x| sprintf("0x%02x", x.tile_number + GBTiles::GBM::LAYER[layer]) }
|
25
25
|
.join(',')
|
26
26
|
%>
|
27
27
|
<% end -%>
|
@@ -1,3 +1,17 @@
|
|
1
|
+
require "gbtiles/helpers/fixnum"
|
2
|
+
|
3
|
+
require "gbtiles/gbm/map/map_set"
|
4
|
+
require "gbtiles/gbm/map/object"
|
5
|
+
require "gbtiles/gbm/map/object_type"
|
6
|
+
|
7
|
+
require "gbtiles/gbm/map/objects/producer"
|
8
|
+
require "gbtiles/gbm/map/objects/map"
|
9
|
+
require "gbtiles/gbm/map/objects/map_tile_data"
|
10
|
+
require "gbtiles/gbm/map/objects/map_tile_data_record"
|
11
|
+
require "gbtiles/gbm/map/objects/map_settings"
|
12
|
+
require "gbtiles/gbm/map/objects/map_export_settings"
|
13
|
+
require "gbtiles/gbm/map/objects/unknown"
|
14
|
+
|
1
15
|
module GBTiles
|
2
16
|
module GBM
|
3
17
|
module Import
|
@@ -6,28 +20,25 @@ module GBTiles
|
|
6
20
|
OBJECT_MARKER = "HPJMTL"
|
7
21
|
|
8
22
|
attr_accessor :version
|
9
|
-
@version
|
10
|
-
|
11
23
|
attr_accessor :map_set
|
12
|
-
@map_set
|
13
24
|
|
14
|
-
def initialize
|
25
|
+
def initialize
|
15
26
|
@map_set = GBTiles::GBM::Map::MapSet.new
|
16
27
|
end
|
17
28
|
|
18
|
-
def self.open
|
29
|
+
def self.open file
|
19
30
|
import = GBTiles::GBM::Import::GBMFile.new
|
20
31
|
|
21
32
|
# Check to see if this is a valid file type
|
22
33
|
if (file.read(3) != "GBO") then
|
23
|
-
raise
|
34
|
+
raise IOError, "Not a valid file (expected: GBO)"
|
24
35
|
end
|
25
36
|
|
26
37
|
# Version number
|
27
38
|
import.version = file.read(1)
|
28
39
|
|
29
40
|
if import.version != "1" then
|
30
|
-
raise
|
41
|
+
raise IOError, "Cannot import version #{import.version}"
|
31
42
|
end
|
32
43
|
|
33
44
|
# For each object
|
@@ -46,20 +57,20 @@ module GBTiles
|
|
46
57
|
object_len = GBTiles::DataType.long(file.read(4))
|
47
58
|
object_data = file.read(object_len)
|
48
59
|
|
49
|
-
case object_type
|
50
|
-
when
|
60
|
+
case GBTiles::GBM::Map::OBJECT_TYPE.key(object_type)
|
61
|
+
when :producer
|
51
62
|
object = GBTiles::GBM::Map::Objects::Producer.initFromBitString object_data
|
52
63
|
|
53
|
-
when
|
64
|
+
when :map
|
54
65
|
object = GBTiles::GBM::Map::Objects::Map.initFromBitString object_data
|
55
66
|
|
56
|
-
when
|
67
|
+
when :map_tile_data
|
57
68
|
object = GBTiles::GBM::Map::Objects::MapTileData.initFromBitString object_data
|
58
69
|
|
59
|
-
when
|
70
|
+
when :map_settings
|
60
71
|
object = GBTiles::GBM::Map::Objects::MapSettings.initFromBitString object_data
|
61
72
|
|
62
|
-
when
|
73
|
+
when :map_export_settings
|
63
74
|
object = GBTiles::GBM::Map::Objects::MapExportSettings.initFromBitString object_data
|
64
75
|
|
65
76
|
else
|
@@ -4,51 +4,62 @@ module GBTiles
|
|
4
4
|
class MapSet
|
5
5
|
|
6
6
|
attr_accessor :objects
|
7
|
-
@objects
|
8
7
|
|
9
8
|
def initialize
|
10
9
|
@objects = []
|
11
10
|
end
|
12
11
|
|
13
|
-
def
|
12
|
+
def producer master_id = nil
|
14
13
|
@objects.select{ |a|
|
15
|
-
a.
|
14
|
+
a.object_type == GBTiles::GBM::Map::OBJECT_TYPE[:producer]
|
16
15
|
}.select{ |a|
|
17
16
|
master_id.nil? || a.object_id = master_id
|
18
17
|
}
|
19
18
|
end
|
20
19
|
|
21
|
-
def
|
20
|
+
def map master_id = nil
|
22
21
|
@objects.select{ |a|
|
23
|
-
a.
|
22
|
+
a.object_type == GBTiles::GBM::Map::OBJECT_TYPE[:map]
|
24
23
|
}.select{ |a|
|
25
24
|
master_id.nil? || a.object_id = master_id
|
26
25
|
}
|
27
26
|
end
|
28
27
|
|
29
|
-
def
|
28
|
+
def map_tile_data master_id = nil
|
30
29
|
@objects.select{ |a|
|
31
|
-
a.
|
30
|
+
a.object_type == GBTiles::GBM::Map::OBJECT_TYPE[:map_tile_data]
|
32
31
|
}.select{ |a|
|
33
32
|
master_id.nil? || a.object_id = master_id
|
34
33
|
}
|
35
34
|
end
|
36
35
|
|
37
|
-
def
|
36
|
+
def map_settings master_id = nil
|
38
37
|
@objects.select{ |a|
|
39
|
-
a.
|
38
|
+
a.object_type == GBTiles::GBM::Map::OBJECT_TYPE[:map_settings]
|
40
39
|
}.select{ |a|
|
41
40
|
master_id.nil? || a.object_id = master_id
|
42
41
|
}
|
43
42
|
end
|
44
43
|
|
45
|
-
def
|
44
|
+
def map_export_settings master_id = nil
|
46
45
|
@objects.select{ |a|
|
47
|
-
a.
|
46
|
+
a.object_type == GBTiles::GBM::Map::OBJECT_TYPE[:map_export_settings]
|
48
47
|
}.select{ |a|
|
49
48
|
master_id.nil? || a.object_id = master_id
|
50
49
|
}
|
51
50
|
end
|
51
|
+
|
52
|
+
def deleted
|
53
|
+
@objects.select{ |a|
|
54
|
+
a.object_type == GBTiles::GBM::Map::OBJECT_TYPE[:deleted]
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
def unknown
|
59
|
+
@objects.select{ |a|
|
60
|
+
GBTiles::GBM::Map::OBJECT_TYPE.key(a.object_type).nil?
|
61
|
+
}
|
62
|
+
end
|
52
63
|
end
|
53
64
|
end
|
54
65
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
module GBTiles
|
2
2
|
module GBM
|
3
3
|
module Map
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
4
|
+
OBJECT_TYPE = {
|
5
|
+
:producer => 0x01,
|
6
|
+
:map => 0x02,
|
7
|
+
:map_tile_data => 0x03,
|
8
|
+
:map_settings => 0x07,
|
9
|
+
:map_export_settings => 0x09,
|
10
|
+
:deleted => 0xFF
|
11
|
+
}
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -5,28 +5,15 @@ module GBTiles
|
|
5
5
|
class Map < GBTiles::GBM::Map::Object
|
6
6
|
|
7
7
|
attr_accessor :name
|
8
|
-
@name
|
9
|
-
|
10
8
|
attr_accessor :width
|
11
|
-
@width
|
12
|
-
|
13
9
|
attr_accessor :height
|
14
|
-
@height
|
15
|
-
|
16
10
|
attr_accessor :prop_count
|
17
|
-
@prop_count
|
18
|
-
|
19
11
|
attr_accessor :tile_file
|
20
|
-
@tile_file
|
21
|
-
|
22
12
|
attr_accessor :tile_count
|
23
|
-
@tile_count
|
24
|
-
|
25
13
|
attr_accessor :prop_color_count
|
26
|
-
@prop_color_count
|
27
14
|
|
28
15
|
def initialize
|
29
|
-
super GBTiles::GBM::Map::
|
16
|
+
super GBTiles::GBM::Map::OBJECT_TYPE[:map]
|
30
17
|
end
|
31
18
|
|
32
19
|
def self.initFromBitString src
|
@@ -5,49 +5,22 @@ module GBTiles
|
|
5
5
|
class MapExportSettings < GBTiles::GBM::Map::Object
|
6
6
|
|
7
7
|
attr_accessor :file_name
|
8
|
-
@file_name
|
9
|
-
|
10
8
|
attr_accessor :file_type
|
11
|
-
@file_type
|
12
|
-
|
13
9
|
attr_accessor :section_name
|
14
|
-
@section_name
|
15
|
-
|
16
10
|
attr_accessor :label_name
|
17
|
-
@label_name
|
18
|
-
|
19
11
|
attr_accessor :bank
|
20
|
-
@bank
|
21
|
-
|
22
12
|
attr_accessor :plane_count
|
23
|
-
@plane_count
|
24
|
-
|
25
13
|
attr_accessor :plane_order
|
26
|
-
@plane_order
|
27
|
-
|
28
14
|
attr_accessor :map_layout
|
29
|
-
@map_layout
|
30
|
-
|
31
15
|
attr_accessor :split
|
32
|
-
@split
|
33
|
-
|
34
16
|
attr_accessor :split_size
|
35
|
-
@split_size
|
36
|
-
|
37
17
|
attr_accessor :split_bank
|
38
|
-
@split_bank
|
39
|
-
|
40
18
|
attr_accessor :sel_tab
|
41
|
-
@sel_tab
|
42
|
-
|
43
19
|
attr_accessor :prop_count
|
44
|
-
@prop_count
|
45
|
-
|
46
20
|
attr_accessor :tile_offset
|
47
|
-
@tile_offset
|
48
21
|
|
49
22
|
def initialize
|
50
|
-
super GBTiles::GBM::Map::
|
23
|
+
super GBTiles::GBM::Map::OBJECT_TYPE[:map_export_settings]
|
51
24
|
end
|
52
25
|
|
53
26
|
def self.initFromBitString src
|