From b94208489b4481ad57d03528c58a46a38a399a65 Mon Sep 17 00:00:00 2001 From: Safiire Date: Wed, 18 Feb 2015 18:44:17 -0800 Subject: [PATCH] Updaing readme, adding an image --- README.md | 2 ++ assembler_demo.png | Bin 0 -> 12601 bytes 2 files changed, 2 insertions(+) create mode 100644 assembler_demo.png diff --git a/README.md b/README.md index 59e8426..f488aa4 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ An NES assembler for the 6502 microprocessor written in Ruby I have used this to compile some code for the NES, and it ran correctly on FCEUX, got it to make some sounds, load tiles, sprites, and scrolling. + ![Scrolling NES Demo](assembler_demo.png) + Some Todos: - I may make this into a Rubygem - Maybe I can put some better error messages. diff --git a/assembler_demo.png b/assembler_demo.png new file mode 100644 index 0000000000000000000000000000000000000000..bde07645251dc337543e72379086f57782f02d93 GIT binary patch literal 12601 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 WDSc;h{8u;D%f9^}RrK2M$NvDU_vj@6 literal 0 HcmV?d00001