sabrina 0.5.5.3 → 0.5.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README.rdoc +101 -0
  2. data/lib/sabrina/meta.rb +1 -1
  3. metadata +2 -1
data/README.rdoc ADDED
@@ -0,0 +1,101 @@
1
+ = Sabrina
2
+
3
+ A library for manipulating GBA ROMs of a popular monster collection RPG series.
4
+ It is written entirely in Ruby and uses
5
+ {Chunky PNG}[https://github.com/wvanbergen/chunky_png], which is also a pure
6
+ Ruby library. Compared to the many excellent GUI tools available, Sabrina
7
+ focuses on non-interactive manipulation of ROM data.
8
+
9
+ Source code:: https://github.com/Winterbraid/sabrina_gba
10
+ Gem:: https://rubygems.org/gems/sabrina
11
+ Documentation:: http://rubydoc.info/gems/sabrina/frames
12
+
13
+ == Example use
14
+
15
+ $ irb -r sabrina
16
+ irb(main):001:0> include Sabrina
17
+ => Object
18
+ irb(main):002:0> r = Rom.new "Decap and Attack Rombase 1.5.gba"
19
+ => MrDollSteak's Decap and Attack Rombase [MrDS]
20
+ irb(main):003:0> m = Monster.new r, 36
21
+ => 36. Clef[name redacted]
22
+ irb(main):004:0> puts m.stats.to_json
23
+ {
24
+ "36": {
25
+ "stats": {
26
+ "hp": 95,
27
+ "attack": 70,
28
+ "defense": 73,
29
+ "speed": 60,
30
+ "sp_atk": 85,
31
+ "sp_def": 90,
32
+ "type_1": "23 (Fairy)",
33
+ [output truncated]
34
+ => nil
35
+ irb(main):005:0> m.save_spritesheet
36
+ => #<File:Decap and Attack Rombase 1.5_files/036.png (closed)>
37
+ irb(main):006:0> r.close
38
+ => 0
39
+
40
+ == Sabrina is...
41
+
42
+ <b>...a backend.</b> The main purpose of the library is to be used inside
43
+ other programs. That said, Ruby comes packaged with a robust interactive
44
+ interpreter in the form of +irb+, and the classes and methods of Sabrina are
45
+ intended to be human-friendly enough to easily perform many tasks from the +irb+
46
+ prompt with even a rudimentary knowledge of Ruby.
47
+
48
+ <b>...reasonably quick.</b> While Ruby is not the speediest language out there,
49
+ Sabrina employs internal caching to avoid certain costly operations when
50
+ possible. This design particularly shines in the use case of copying data
51
+ between two ROMs, where Sabrina should always be faster than a tool that relies
52
+ on temporary HDD files or multiple program instances.
53
+
54
+ <b>...extensible.</b> ROM types should be recognized automatically, and adding
55
+ support for new ROM bases is as simple as dropping a JSON file in ~/.sabrina
56
+ (assuming the ROM uses a unique ID). The code is designed to allow easy
57
+ addition of data abstractions, which means new features should arrive at
58
+ a reasonable pace.
59
+
60
+ <b>...mostly clean.</b> The library itself is warning-free (any warnings
61
+ produced with the -w switch come from ChunkyPNG). Adherence to the
62
+ {Ruby Style Guide}[https://github.com/bbatsov/ruby-style-guide], while not
63
+ strict, is kept at what is perceived to be a reasonable level.
64
+
65
+ == Sabrina is not...
66
+
67
+ <b>...complete.</b> Currently the Monster class provides an abstraction for
68
+ dealing with monster data, and handlers exist for sprites and base stats.
69
+ Adding support for other monster-related data sets such as evolutions or dex
70
+ entries is a high priority, after which moves and items may be looked
71
+ at.
72
+
73
+ <b>...a user interface.</b> It comes with no GUI or CLI in the traditional
74
+ sense, and it is unlikely one will be included. However, scripts are in
75
+ the works that should cover many common use cases and provide inspiration for
76
+ advanced users to write their own.
77
+
78
+ <b>...a backup manager.</b> In accordance with the above, all write
79
+ operations will be performed directly on the ROM, without waiting for a
80
+ separate save command, and there is no undo feature. Therefore, it is the
81
+ user's responsibility to maintain backups of ROM files.
82
+
83
+ <b>...a limit remover/table expander.</b> If you need those, you should try
84
+ {G3HS}[https://github.com/thekaratekid552/Secret-Tool/], look for a premade
85
+ expanded ROM base, or refer to a tutorial. However, Sabrina does try to make as
86
+ few assumptions about limits as possible, so expanded ROMs should be supported
87
+ out of the box (although custom IDs and config files might be required if
88
+ table offsets have been changed).
89
+
90
+ == Known issues
91
+
92
+ * Either the Lz77 compressor or the image encoder has a problem with the monster
93
+ no. 360 for some reason. Copying from another ROM still works fine (likely
94
+ because it bypasses the encoding step and uses the data from the source ROM
95
+ directly), but loading from PNG will result in garbled sprites for frames 3-4.
96
+
97
+ Currently missing features include:
98
+ * Support for Sapphire and LeafGreen.
99
+ * Support for additional data abstractions beyond sprite sheets and stats may be
100
+ included depending on resources and feedback.
101
+ * Support for moves.
data/lib/sabrina/meta.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  # Current software version.
3
3
  #
4
4
  # @return [String]
5
- VERSION = '0.5.5.3'
5
+ VERSION = '0.5.5.4'
6
6
 
7
7
  # Date of the current version.
8
8
  #
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sabrina
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5.3
4
+ version: 0.5.5.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -76,6 +76,7 @@ files:
76
76
  - lib/sabrina/sprite.rb
77
77
  - lib/sabrina.rb
78
78
  - LICENSE
79
+ - README.rdoc
79
80
  homepage: https://github.com/Winterbraid/sabrina_gba
80
81
  licenses:
81
82
  - MIT