Thanks MenTaLguY!

I've been making some tools to help me do level design in ruby for the
uzebox (http://belogic.com/uzebox/) and this looks like just the
thing!

On Sat, Jul 25, 2009 at 12:58 AM, Devyn Cairns<[email protected]> wrote:
> WOW! That's pretty cool. It should probably be easier to put into
> Shoes than SDL, that's my experience. But.... WOW!
>
> On Fri, Jul 24, 2009 at 4:44 PM, MenTaLguY<[email protected]> wrote:
>> I sent this to ruby-talk, but it might also be of latent interest to
>> Shoes adventurers.  Essentially, Retrograph is the visual equivalent of
>> the bloopsaphone (minus a nice API -- it's all authentic 80s graph paper
>> and hex numbers at the moment).
>>
>> retrograph isn't especially useful with Shoes yet (the only currently
>> supported display is via Ruby/SDL), but I'm hopeful that we can work out
>> some allowances from Shoes so it can render to a Shoes window too.  I
>> also have a somewhat nicer API in the works.
>>
>> == What is Retrograph? ==
>>
>> Retrograph is a Ruby library which emulates the video
>> display unit from a hypothetical late-80s 8-bit game
>> console.  It is similar in capability to the Sega Master
>> System's VDP, with some additional features and direct
>> support for text modes.
>>
>> Retrograph doesn't do its own screen output but rather
>> works with other libraries.  Currently, it supports
>> Ruby/SDL, but other output targets are planned for the
>> future.
>>
>> == Where can I get it? ==
>>
>> Retrograph is available via RubyGems, or via Rubyforge
>> downloads:
>>
>>  http://rubyforge.org/frs/?group_id=8410
>>
>> Cursory documentation is available on the
>> corresponding github wiki:
>>
>>  http://wiki.github.com/mental/retrograph
>>
>> == Feature Overview ==
>>
>>  * 256x244 pixel display
>>  * 16k VRAM
>>  * 64 colors total
>>  * max 31 simultaneous colors (16 background, 15 sprite)
>>  * 40x25 and 32x28 text modes
>>  * 32x32 tile background, 8x8 pixel tiles
>>  * 64 8x8 sprites, max 8 per scanline
>>
>> == Usage ==
>>
>> Retrograph's simulated Video Display Unit (or VDU) is
>> represented by an instance of the Retrograph::VDU class.
>> You can interact with the VDU by writing byte strings
>> into its memory using Retrograph::VDU#write, which takes
>> a start address (in the VDU's 16-bit address space) and
>> a string to write.  The method Retrograph::VDU#write_byte
>> is also provided for writing individual bytes.
>>
>> (See the wiki for a map of memory locations.)
>>
>> To render a frame of video with SDL, use
>> Retrograph::VDU#render_frame_sdl, which returns an
>> SDL::Surface containing the VDU output.  The returned
>> surface remains valid until the next call to
>> Retrograph::VDU#render_frame_sdl on the same VDU instance.
>>
>> Scanline-based effects are possible if you provide a block
>> to Retrograph::VDU#render_frame_sdl.  Ordinarily, rendering
>> will not begin until the block completes, but within the
>> block you can call Retrograph::VDU#wait_scanlines to render
>> a given number of scanlines before continuing.  This allows
>> you to make changes to the VDU state part-way through
>> rendering a frame.
>>
>> For example, if we wanted palette entry 0 to be blue within
>> the top half of the display and red within the bottom half
>> of the display, we could write:
>>
>>  require 'retrograph/sdl'
>>
>>  vdu = Retrograph::VDU.new
>>
>>  vdu.write_byte(0x7f00, 0x03)
>>  output = vdu.render_frame_sdl do
>>   vdu.wait_scanlines(Retrograph::DISPLAY_HEIGHT/2)
>>   vdu.write_byte(0x7f00, 0x30)
>>  end
>>
>> (For display, is still necessary at this point to copy the
>> output surface to the screen.)
>>
>> Love,
>> -mental
>>
>>
>>
>
>
>
> --
>    ~devyn
>

Reply via email to