rnes 0.1.1 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 768392aacc5ad611aa059d5ef7a7c23c78ca1088
4
- data.tar.gz: 37881bb61c15ed1f35c5015174bf47d26b8fc50f
3
+ metadata.gz: 6d3d1d154a09065286af7ca812325aa2b1685cbf
4
+ data.tar.gz: cfa99900503dd5d59f6553f7ee3c81f4fd292dc3
5
5
  SHA512:
6
- metadata.gz: 65ec79252019d26f9d6fa5aa471ecb031adcbeb067c7413a54e0c8dd58a7dbb989d9989638861694caab9ea03dce11625743c0bdcfb05919da3f7c5a9d8b11e0
7
- data.tar.gz: 5af737101697e45640a8e211423f5dcbd858c0de846fe2b63d52d197bbd3abdf2baf53d089a3fe7c47440d6f3e6b36bd6597332945ab62a180af62ecd96987ec
6
+ metadata.gz: 859089e4d81fb3888ea5e52b95de2695f48acf3346b219a5e579ebcdd6516ff92ce709a798334afc60e2adf76c078898d6d79fb866c8cb6659fff149360f983e
7
+ data.tar.gz: 3e69abecdf78153e5ceca5090fbf8b6202fb936f710eb49a659a6b3d25756d4e52d245c93bbad73b4ca7ed8a55419b329276a6d97cf490ec4e1387be0b5ab187
@@ -3,6 +3,9 @@ jobs:
3
3
  machine: true
4
4
  steps:
5
5
  - checkout
6
+ - run:
7
+ command: gem install bundler -v 1.17.1
8
+ name: gem install bundler -v 1.17.1
6
9
  - run:
7
10
  command: bundle install
8
11
  name: bundle install
@@ -13,6 +16,9 @@ jobs:
13
16
  machine: true
14
17
  steps:
15
18
  - checkout
19
+ - run:
20
+ command: gem install bundler -v 1.17.1
21
+ name: gem install bundler -v 1.17.1
16
22
  - run:
17
23
  command: bundle install
18
24
  name: bundle install
@@ -1,13 +1,28 @@
1
- ## 0.1.1 - 2018-11-12
1
+ ## Unreleased
2
2
 
3
- ### Changed
3
+ ## 0.2.0 - 2018-11-17
4
4
 
5
- - Improve logger format for compatibility with nestest.log.
5
+ ### Added
6
+
7
+ - Add CLI options and help message.
8
+ - Add PPU sprite reverse.
9
+
10
+ ### Fixed
11
+
12
+ - Fix PPU sprites rendering.
13
+ - Fix PPU sprite pattern addressing.
14
+ - Fix PPU background pattern attribute addressing.
15
+
16
+ ## 0.1.1 - 2018-11-12
6
17
 
7
18
  ### Added
8
19
 
9
20
  - Allow break-less input on key input.
10
21
 
22
+ ### Changed
23
+
24
+ - Improve logger format for compatibility with nestest.log.
25
+
11
26
  ### Fixed
12
27
 
13
28
  - Fix CPU ADC instruction.
data/Gemfile CHANGED
@@ -4,3 +4,7 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in rnes.gemspec
6
6
  gemspec
7
+
8
+ gem 'pry'
9
+ gem 'rspec'
10
+ gem 'rubocop'
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rnes (0.1.0)
4
+ rnes (0.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -52,8 +52,8 @@ DEPENDENCIES
52
52
  pry
53
53
  rake (~> 10.0)
54
54
  rnes!
55
- rspec (= 3.7.0)
56
- rubocop (= 0.60.0)
55
+ rspec
56
+ rubocop
57
57
 
58
58
  BUNDLED WITH
59
59
  1.17.1
data/README.md CHANGED
@@ -22,7 +22,7 @@ gem install rnes
22
22
  Pass ROM file path to `rnes` executable.
23
23
 
24
24
  ```sh
25
- rnes <FILE>
25
+ Usage: rnes [options] <FILE>
26
26
  ```
27
27
 
28
28
  ## Controls
data/exe/rnes CHANGED
@@ -1,10 +1,24 @@
1
1
  #!/usr/bin/env ruby
2
2
  $LOAD_PATH.unshift File.expand_path('../lib', __dir__)
3
+ require 'optparse'
3
4
  require 'rnes'
4
5
 
5
- path = ARGV[0]
6
+ options = ARGV.getopts('h', 'help', 'log:')
7
+ log_file_path = options['log']
8
+ args = ARGV.parse!
9
+ help_message = "Usage: #{$PROGRAM_NAME} [options] <FILE>"
10
+ if options['h'] || options['help']
11
+ puts help_message
12
+ exit
13
+ end
14
+
15
+ path = args.first
16
+ unless path
17
+ abort help_message
18
+ end
19
+
6
20
  io = File.binread(path)
7
21
  bytes = io.bytes
8
- emulator = Rnes::Emulator.new
22
+ emulator = Rnes::Emulator.new(log_file_path: log_file_path)
9
23
  emulator.load_rom(bytes)
10
24
  emulator.run
@@ -5,9 +5,8 @@ require 'rnes/rom_loader'
5
5
 
6
6
  module Rnes
7
7
  class Emulator
8
- LOG_FILE_NAME = 'rnes.log'.freeze
9
-
10
- def initialize
8
+ # @param [String] log_file_path
9
+ def initialize(log_file_path: nil)
11
10
  parts_factory = ::Rnes::PartsFactory.new
12
11
  @cpu = parts_factory.cpu
13
12
  @cpu_bus = parts_factory.cpu_bus
@@ -16,7 +15,9 @@ module Rnes
16
15
  @keypad2 = parts_factory.keypad2
17
16
  @ppu = parts_factory.ppu
18
17
  @ppu_bus = parts_factory.ppu_bus
19
- @logger = ::Rnes::Logger.new(cpu: @cpu, path: LOG_FILE_NAME, ppu: @ppu)
18
+ if log_file_path
19
+ @logger = ::Rnes::Logger.new(cpu: @cpu, path: log_file_path, ppu: @ppu)
20
+ end
20
21
  end
21
22
 
22
23
  # @param [Array<Integer>] rom_bytes
@@ -6,6 +6,8 @@ require 'rnes/ram'
6
6
 
7
7
  module Rnes
8
8
  class Ppu
9
+ ADDRESS_TO_FINISH_SPRITE_PALETTE_TABLE = 0x3F1F
10
+
9
11
  ADDRESS_TO_START_ATTRIBUTE_TABLE = 0x23C0
10
12
 
11
13
  ADDRESS_TO_START_NAME_TABLE = 0x2000
@@ -20,6 +22,8 @@ module Rnes
20
22
 
21
23
  CYCLES_PER_LINE = 341
22
24
 
25
+ PALETTE_ADDRESS_RANGE = (ADDRESS_TO_START_BACKGROUND_PALETTE_TABLE..ADDRESS_TO_FINISH_SPRITE_PALETTE_TABLE).freeze
26
+
23
27
  SPRITE_RAM_BYTESIZE = 2**8
24
28
 
25
29
  SPRITES_COUNT = 64
@@ -34,6 +38,14 @@ module Rnes
34
38
 
35
39
  WINDOW_WIDTH = 256
36
40
 
41
+ ENCODED_ATTRIBUTES_HEIGHT = BLOCK_HEIGHT * 2
42
+
43
+ ENCODED_ATTRIBUTES_WIDTH = BLOCK_WIDTH * 2
44
+
45
+ ENCODED_ATTRIBUTES_COUNT_IN_HORIZONTAL_LINE = WINDOW_WIDTH / ENCODED_ATTRIBUTES_WIDTH
46
+
47
+ ENCODED_ATTRIBUTES_COUNT_IN_VERTICAL_LINE = 256 / ENCODED_ATTRIBUTES_HEIGHT
48
+
37
49
  TILES_COUNT_IN_HORIZONTAL_LINE = WINDOW_WIDTH / TILE_WIDTH
38
50
 
39
51
  TILES_COUNT_IN_VERTICAL_LINE = WINDOW_HEIGHT / TILE_HEIGHT
@@ -180,6 +192,23 @@ module Rnes
180
192
  end
181
193
  end
182
194
 
195
+ # +---+---+
196
+ # | 0 | 1 |
197
+ # +---+---+
198
+ # | 2 | 3 |
199
+ # +---+---+
200
+ # @return [Integer] Integer from 0 to 3.
201
+ def block_id_in_encoded_attributes
202
+ (x_of_block.even? ? 0 : 1) + (y_of_block.even? ? 0 : 2)
203
+ end
204
+
205
+ # @return [Integer] Integer from 0 to 63.
206
+ def object_attribute_index
207
+ (y_of_encoded_attributes % ENCODED_ATTRIBUTES_COUNT_IN_VERTICAL_LINE) * ENCODED_ATTRIBUTES_COUNT_IN_HORIZONTAL_LINE +
208
+ x_of_encoded_attributes % ENCODED_ATTRIBUTES_COUNT_IN_HORIZONTAL_LINE +
209
+ background_pattern_index_paging_offset
210
+ end
211
+
183
212
  def check_sprite_hit
184
213
  if read_from_sprite_ram(0) == y && @registers.background_enabled? && @registers.sprite_enabled?
185
214
  registers.sprite_hit = true
@@ -199,25 +228,21 @@ module Rnes
199
228
  end
200
229
 
201
230
  def draw_background_8pixels
202
- base_pattern_table_address = base_background_pattern_table_address
203
- character_index = read_character_index(tile_index)
204
- character_line_low_byte_address = TILE_HEIGHT * 2 * character_index + y_in_tile + base_pattern_table_address
205
- character_line_low_byte = read_character_data(character_line_low_byte_address)
206
- character_line_high_byte = read_character_data(character_line_low_byte_address + TILE_HEIGHT)
207
-
208
- block_id = 0
209
- block_id |= 0b01 if (x % BLOCK_WIDTH).odd?
210
- block_id |= 0b10 if (y % BLOCK_HEIGHT).odd?
211
- mini_palette_ids_byte = read_object_attribute(tile_index)
212
- mini_palette_id = (mini_palette_ids_byte >> (block_id * 2)) & 0b11
213
-
214
- TILE_WIDTH.times do |x_in_character|
215
- index_in_character_line_byte = TILE_WIDTH - 1 - x_in_character
216
- background_palette_index = character_line_low_byte[index_in_character_line_byte] | character_line_high_byte[index_in_character_line_byte] << 1 | mini_palette_id << 2
231
+ pattern_index = read_pattern_index(background_pattern_index)
232
+ pattern_line_low_byte_address = TILE_HEIGHT * 2 * pattern_index + y_in_tile
233
+ pattern_line_low_byte = read_background_pattern_line(pattern_line_low_byte_address)
234
+ pattern_line_high_byte = read_background_pattern_line(pattern_line_low_byte_address + TILE_HEIGHT)
235
+
236
+ mini_palette_ids_byte = read_object_attribute(object_attribute_index)
237
+ mini_palette_id = (mini_palette_ids_byte >> (block_id_in_encoded_attributes * 2)) & 0b11
238
+
239
+ TILE_WIDTH.times do |x_in_pattern|
240
+ index_in_pattern_line_byte = TILE_WIDTH - 1 - x_in_pattern
241
+ background_palette_index = pattern_line_low_byte[index_in_pattern_line_byte] | (pattern_line_high_byte[index_in_pattern_line_byte] << 1) | (mini_palette_id << 2)
217
242
  color_id = read_color_id(background_palette_index)
218
243
  @image.write(
219
244
  value: ::Rnes::Ppu::COLORS[color_id],
220
- x: x + x_in_character,
245
+ x: x + x_in_pattern,
221
246
  y: y,
222
247
  )
223
248
  end
@@ -237,31 +262,31 @@ module Rnes
237
262
  # |`------- horizontal flip
238
263
  # `-------- vertical flip
239
264
  def draw_sprites
240
- base_pattern_table_address = base_sprite_pattern_table_address
241
- SPRITES_COUNT.times do |i|
242
- base_sprite_ram_address = i * 4
265
+ 0.step(SPRITES_COUNT - 1, 4) do |base_sprite_ram_address|
243
266
  y_for_sprite = (read_from_sprite_ram(base_sprite_ram_address) - TILE_HEIGHT)
244
267
  next if y_for_sprite.negative?
245
- name_table_index = read_from_sprite_ram(base_sprite_ram_address + 1)
268
+ pattern_index = read_from_sprite_ram(base_sprite_ram_address + 1)
246
269
  sprite_attribute_byte = read_from_sprite_ram(base_sprite_ram_address + 2)
247
270
  x_for_sprite = read_from_sprite_ram(base_sprite_ram_address + 3)
248
271
 
249
- character_index = read_character_index(name_table_index)
250
-
251
272
  mini_palette_id = sprite_attribute_byte & 0b11
252
-
253
- TILE_HEIGHT.times do |y_in_character|
254
- character_line_low_byte_address = TILE_HEIGHT * 2 * character_index + y_in_character + base_pattern_table_address
255
- character_line_low_byte = read_character_data(character_line_low_byte_address)
256
- character_line_high_byte = read_character_data(character_line_low_byte_address + TILE_HEIGHT)
257
- TILE_WIDTH.times do |x_in_character|
258
- index_in_character_line_byte = TILE_WIDTH - 1 - x_in_character
259
- background_palette_index = character_line_low_byte[index_in_character_line_byte] | character_line_high_byte[index_in_character_line_byte] << 1 | mini_palette_id << 2
273
+ reversed_horizontally = sprite_attribute_byte[6] == 1
274
+ reversed_vertically = sprite_attribute_byte[7] == 1
275
+
276
+ TILE_HEIGHT.times do |y_in_pattern|
277
+ pattern_line_low_byte_address = TILE_HEIGHT * 2 * pattern_index + y_in_pattern
278
+ pattern_line_low_byte = read_sprite_pattern_line(pattern_line_low_byte_address)
279
+ pattern_line_high_byte = read_sprite_pattern_line(pattern_line_low_byte_address + TILE_HEIGHT)
280
+ TILE_WIDTH.times do |x_in_pattern|
281
+ index_in_pattern_line_byte = TILE_WIDTH - 1 - x_in_pattern
282
+ background_palette_index = pattern_line_low_byte[index_in_pattern_line_byte] | pattern_line_high_byte[index_in_pattern_line_byte] << 1 | mini_palette_id << 2
260
283
  color_id = read_color_id(background_palette_index)
284
+ y_in_pattern = TILE_HEIGHT - 1 - y_in_pattern if reversed_vertically
285
+ x_in_pattern = TILE_WIDTH - 1 - x_in_pattern if reversed_horizontally
261
286
  @image.write(
262
287
  value: ::Rnes::Ppu::COLORS[color_id],
263
- x: x_for_sprite + x_in_character,
264
- y: y_for_sprite + y_in_character,
288
+ x: x_for_sprite + x_in_pattern,
289
+ y: y_for_sprite + y_in_pattern,
265
290
  )
266
291
  end
267
292
  end
@@ -288,16 +313,15 @@ module Rnes
288
313
  (0...WINDOW_WIDTH).cover?(x) && (0...WINDOW_HEIGHT).cover?(y)
289
314
  end
290
315
 
291
- # @param [Integer] index
292
- # @return [Integer]
293
- def read_character_data(index)
294
- @bus.read(index)
316
+ # @return [Boolean]
317
+ def palette_data_requested?
318
+ PALETTE_ADDRESS_RANGE.cover?(@registers.video_ram_address % 0x4000)
295
319
  end
296
320
 
297
- # @param [Integer] index
321
+ # @param [Integer] index.
298
322
  # @return [Integer]
299
- def read_character_index(index)
300
- @bus.read(base_name_table_address + index)
323
+ def read_background_pattern_line(index)
324
+ read_pattern_line(base_background_pattern_table_address + index)
301
325
  end
302
326
 
303
327
  # @param [Integer] index
@@ -312,15 +336,9 @@ module Rnes
312
336
  @sprite_ram.read(address)
313
337
  end
314
338
 
315
- # @param [Integer] index
316
- # @return [Integer] 4-color-palette IDs of 4 blocks, as 8 bit data.
317
- def read_object_attribute(index)
318
- @bus.read(ADDRESS_TO_START_ATTRIBUTE_TABLE + index)
319
- end
320
-
321
339
  # @return [Integer]
322
340
  def read_from_video_ram_for_cpu
323
- if (0x3F00..0x3F1F).cover?(@registers.video_ram_address % 0x4000)
341
+ if palette_data_requested?
324
342
  value = @bus.read(@registers.video_ram_address)
325
343
  @video_ram_reading_buffer = @bus.read(@registers.video_ram_address - 0x1000)
326
344
  else
@@ -331,6 +349,30 @@ module Rnes
331
349
  value
332
350
  end
333
351
 
352
+ # @param [Integer] index
353
+ # @return [Integer] 4-color-palette IDs of 4 blocks, as 8 bit data.
354
+ def read_object_attribute(index)
355
+ @bus.read(ADDRESS_TO_START_ATTRIBUTE_TABLE + index)
356
+ end
357
+
358
+ # @param [Integer] index
359
+ # @return [Integer]
360
+ def read_pattern_line(index)
361
+ @bus.read(index)
362
+ end
363
+
364
+ # @param [Integer] index.
365
+ # @return [Integer]
366
+ def read_sprite_pattern_line(index)
367
+ read_pattern_line(base_sprite_pattern_table_address + index)
368
+ end
369
+
370
+ # @param [Integer] index
371
+ # @return [Integer]
372
+ def read_pattern_index(index)
373
+ @bus.read(base_name_table_address + index)
374
+ end
375
+
334
376
  def render_image
335
377
  @renderer.render(@image)
336
378
  end
@@ -345,23 +387,23 @@ module Rnes
345
387
  # | 2(0x0800) | 3(0x0C00) |
346
388
  # +-----------+-----------+
347
389
  # @return [Integer] Integer from 0x0000 to 0x0FC0.
348
- def tile_index
349
- tile_index_in_window + tile_index_paging_offset
390
+ def background_pattern_index
391
+ background_pattern_index_in_window + background_pattern_index_paging_offset
350
392
  end
351
393
 
352
394
  # @return [Integer] Integer from 0x0000 to 0x03C0.
353
- def tile_index_in_window
395
+ def background_pattern_index_in_window
354
396
  (y_of_tile % TILES_COUNT_IN_VERTICAL_LINE) * TILES_COUNT_IN_HORIZONTAL_LINE + x_of_tile % TILES_COUNT_IN_HORIZONTAL_LINE
355
397
  end
356
398
 
357
399
  # @return [Integer] Integer from 0 to 3.
358
- def tile_index_page
400
+ def background_pattern_index_page
359
401
  x_of_tile / TILES_COUNT_IN_HORIZONTAL_LINE + y_of_tile / TILES_COUNT_IN_VERTICAL_LINE * 2
360
402
  end
361
403
 
362
404
  # @return [Integer] 0x0000, 0x0400, 0x0800, or 0x0C00.
363
- def tile_index_paging_offset
364
- tile_index_page * 0x0400
405
+ def background_pattern_index_paging_offset
406
+ background_pattern_index_page * 0x0400
365
407
  end
366
408
 
367
409
  # @return [Boolean]
@@ -381,7 +423,7 @@ module Rnes
381
423
  # @param [Integer] value
382
424
  def write_to_sprite_ram_for_cpu(value)
383
425
  @sprite_ram.write(@registers.sprite_ram_address, value)
384
- @registers.sprite_ram_address += 1
426
+ @registers.sprite_ram_address = (@registers.sprite_ram_address + 1) & 0xFF
385
427
  end
386
428
 
387
429
  # @param [Integer] value
@@ -397,12 +439,27 @@ module Rnes
397
439
 
398
440
  # @return [Integer]
399
441
  def x_in_tile
400
- x % TILE_WIDTH
442
+ x_with_scroll % TILE_WIDTH
443
+ end
444
+
445
+ # @return [Integer]
446
+ def x_of_block
447
+ x_with_scroll / BLOCK_WIDTH
448
+ end
449
+
450
+ # @return [Integer]
451
+ def x_of_encoded_attributes
452
+ x_with_scroll / ENCODED_ATTRIBUTES_WIDTH
401
453
  end
402
454
 
403
455
  # @return [Integer]
404
456
  def x_of_tile
405
- (x + @registers.scroll_x) / TILE_WIDTH
457
+ x_with_scroll / TILE_WIDTH
458
+ end
459
+
460
+ # @return [Integer]
461
+ def x_with_scroll
462
+ x + @registers.scroll_x
406
463
  end
407
464
 
408
465
  # @return [Integer]
@@ -412,12 +469,27 @@ module Rnes
412
469
 
413
470
  # @return [Integer]
414
471
  def y_in_tile
415
- y % TILE_HEIGHT
472
+ y_with_scroll % TILE_HEIGHT
473
+ end
474
+
475
+ # @return [Integer]
476
+ def y_of_block
477
+ y_with_scroll / BLOCK_HEIGHT
478
+ end
479
+
480
+ # @return [Integer]
481
+ def y_of_encoded_attributes
482
+ y_with_scroll / ENCODED_ATTRIBUTES_HEIGHT
416
483
  end
417
484
 
418
485
  # @return [Integer]
419
486
  def y_of_tile
420
- (y + @registers.scroll_y) / TILE_HEIGHT
487
+ y_with_scroll / TILE_HEIGHT
488
+ end
489
+
490
+ # @return [Integer]
491
+ def y_with_scroll
492
+ y + @registers.scroll_y
421
493
  end
422
494
  end
423
495
  end
@@ -6,7 +6,6 @@ module Rnes
6
6
  attr_reader :character_ram
7
7
 
8
8
  # @param [Rnes::Ram] character_ram
9
- # @param [Rnes::Ram] sprite_ram
10
9
  # @param [Rnes::Ram] video_ram
11
10
  def initialize(character_ram:, video_ram:)
12
11
  @character_ram = character_ram
@@ -38,8 +38,8 @@ module Rnes
38
38
  @sprite_ram_address = 0x00
39
39
  @video_ram_address = 0x0000
40
40
 
41
- @address_latch = false
42
- @scroll_latch = false
41
+ @buffer = 0x00
42
+ @latch = false
43
43
  end
44
44
 
45
45
  # @return [Boolean]
@@ -124,12 +124,13 @@ module Rnes
124
124
 
125
125
  # @param [Integer] value
126
126
  def scroll=(value)
127
- if @scroll_latch
127
+ if @latch
128
+ @scroll_x = @buffer
128
129
  @scroll_y = value
129
130
  else
130
- @scroll_x = value
131
+ @buffer = value
131
132
  end
132
- @scroll_latch = !@scroll_latch
133
+ toggle_latch
133
134
  end
134
135
 
135
136
  # @return [Boolean]
@@ -161,23 +162,26 @@ module Rnes
161
162
  def status
162
163
  value = @status
163
164
  self.in_v_blank = false
164
- @address_latch = false
165
- @scroll_latch = false
165
+ @latch = false
166
166
  value
167
167
  end
168
168
 
169
169
  # @param [Integer] value
170
170
  def video_ram_address=(value)
171
- if @address_latch
172
- @video_ram_address |= value
171
+ if @latch
172
+ @video_ram_address = value + (@buffer << 8)
173
173
  else
174
- @video_ram_address = value << 8
174
+ @buffer = value
175
175
  end
176
- @address_latch = !@address_latch
176
+ toggle_latch
177
177
  end
178
178
 
179
179
  private
180
180
 
181
+ def toggle_latch
182
+ @latch = !@latch
183
+ end
184
+
181
185
  # @param [Integer] index
182
186
  # @param [Boolean] boolean
183
187
  def toggle_status_bit(index, boolean)
@@ -1,3 +1,3 @@
1
1
  module Rnes
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
@@ -24,8 +24,5 @@ Gem::Specification.new do |spec|
24
24
  spec.required_ruby_version = '>= 2.2'
25
25
 
26
26
  spec.add_development_dependency 'bundler', '~> 1.17'
27
- spec.add_development_dependency 'pry'
28
27
  spec.add_development_dependency 'rake', '~> 10.0'
29
- spec.add_development_dependency 'rspec', '3.7.0'
30
- spec.add_development_dependency 'rubocop', '0.60.0'
31
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rnes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-12 00:00:00.000000000 Z
11
+ date: 2018-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.17'
27
- - !ruby/object:Gem::Dependency
28
- name: pry
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'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,34 +38,6 @@ dependencies:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
40
  version: '10.0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
61
- version: 3.7.0
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 3.7.0
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '='
74
- - !ruby/object:Gem::Version
75
- version: 0.60.0
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '='
81
- - !ruby/object:Gem::Version
82
- version: 0.60.0
83
41
  description:
84
42
  email:
85
43
  - r7kamura@gmail.com