Beiträge von Laz0r

    Willkommen im Mapping Bereich.




    ~Laz0r

    Hallo, meinst du diese Herzen und Musiknoten?
    Das sind Emoticons, die du hier finden kannst.


    Viel Spaß noch mit dem Mappen :-)


    Edit: Achso, du meinst die Map selber.
    Du kannst sie entweder selber mappen, oder jemanden aus dem Board fragen,
    ob du seine Map zuschneiden und als BG verwenden darfst ;-)

    Vorwort


    Hallo und herzlich Willkommen zu meinem Rom-Hacking Guide!
    Dies ist Einführung, die euch Tipps & Tricks oder Anleitungen gibt, um euch das Romhacking zu erleichtern.
    Außerdem vergisst man so nicht wichtige Sachen, wenn man diesem Guide folgt.
    Besonders für Anfänger ist dieses Tutorial geeignet!


    Einleitung


    Was ist überhaupt Romhacking?
    Unter Romhacking versteht man das Modifizieren oder Abändern eines ROMs (Read Only Memory)
    Der Begriff "Modifikation" hat sich als leichte Abänderung des Spiels eingebürgert, wie z.B Trainer stärker machen o.Ä.
    Ein "Hack" hingegen ist das volle Programm: Tileänderung, Mapänderung, ...


    Vorbereitung


    Bevor wir anfangen, zu hacken, müssen wir uns zuerst ein paar Dinge zurechtlegen.
    Zuerst downloadet euch ein ROM, welches ihr hacken wollt.
    Diese findet ihr über Google, Direktlinks sind im Bisaboard untersagt!


    Haben wir die 16 MB große ROM auf dem Desktop gespeichert, machen wir einen Ordner namens "Pokemon Hack".
    Dort machen wir folgende Unterordner: "ROM"; "Grafiken"; "Maps"; "Scripts"; "Dokumentation" und "Notizen".
    Die zuvor gedownloadete Datei geben wir in den ROM-Ordner. :-) (falls ihr eine .zip gedownloadet habt, entzippt sie!)


    Wenden wir uns jetzt dem Dokumentations-Ordner zu.
    Erstellt dort 3 Textdateien: "Flags-Doku"; "Variablen-Doku"; "Grafik-Offsets"
    Für was ihr diese drei verwendet, erfährt ihr ein paar Kapitel später.. =)


    Wenn ihr wollt, könnt ihr jetzt im Ordner "Notizen" eine Textdatei namens "Storyline" erstellen, falls ihr schon eine Geschichte für euren Hack habt. ;-)


    Grundkenntnisse


    Damit ihr ohne Einschränkung hacken könnt, müsst ihr euch mit einigen Begriffen und Systemen vertraut machen.
    Da wären z.B das Hexadezimal-System und das Binär-System.
    Ihr werdet am Anfang nur das Hexadezimal-System brauchen, weshalb ich dieses jetzt erkläre.





    Fangen wir an!


    Ich, als langjähriger Hacker, empfehle euch, mit dem Tiles einfügen zu beginnen.
    Dies hat mehrere Gründe, unter Anderem kann es problematisch werden, wenn man
    schon gemappt hat und dann noch Tiles einfügt. Die Blöcke werden mit Sicherheit
    an einer anderen Stelle als die vorherigen sein und schlimmstenfalls die ganze Map zerschießen..


    Wenn man sich ein wenig damit beschäftigt, fällt es einem leicht.
    Für die ganz Faulen gibt es auch die Möglichkeit, eine Rombase (bzw Tilebase) zu verwenden.
    Dort sind die Tiles schon gehackt und ihr könnt sofort mit dem Mapping anfangen.


    Rombasen findet ihr hier und hier.


    Falls ihr nicht wisst, wie man so eine patcht, schaut hier vorbei ;-)


    Mapping


    Logischerweise sollte man nach dem Tiles-einfügen zum Mappen beginnen.
    Denn ohne Maps kann man auch die Scripts auf dieser nicht erstellen bzw koordinieren.


    Es ist übrigens für Anfänger empfohlen, die bestehenden Maps zu hacken, da dies weniger Verwirrung und
    Extra-Arbeit stiftet. Man könnte die Maps auch zuerst löschen und danach neue erstellen, aber dann gäbe es
    Probleme mit den "sethealingplaces" und den Flug-Positionen (rotes F in AM).


    Wenn ihr lernen wollt, wie man gute Maps erstellt, geht hierher.


    Events erstellen


    Es gibt verschiedene Arten von Events.

    • Personen (Grüne P-Felder bzw. der Sprite)
      Die NPCs, die man auf Maps ansprechen kann
    • Signposts (rote S-Felder)
      Schilder oder Tafeln, auf denen etwas steht.
    • Warps (lila W-Felder)
      Wenn du auf einen Warp trittst, wird du auf eine andere Map gewarpt.
    • Script-Felder (grüne S-Felder)
      Diese grünen Felder werden beim Betreten ausgelöst und leiten meist ein spezielles Event ein.
    • Flug-Positionen (rote F-Felder)
      Wenn du Fliegen einsetzt, wirst du an diese Position "abgesetzt".


    Events kannst du Erstellen, indem du unter "Eventmenge" die Zahlen veränderst.


    Personen


    Personen haben die Meisten Funktionen:


    -Bewegung
    -Trainer
    -Ansprechen
    (-man kann sie auch verschwinden lassen)


    Alle gleichfarbigen Elemente haben etwas miteinander zu tun.


    Kommen wir als Erstes zur Bewegung.
    Den Bewegungs-Typ könnt ihr aus der Liste auswählen.
    Aber was bedeuten die anderen Kästchen?
    Unter "Bewegung" könnt ihr schreiben, um wie viele Felder die Person auf/ab oder links/rechts gehen kann.
    Wenn ihr z.B "Herumgehen" und bei Bewegung "$22" stehen habt, wird die Person maximal 2 rauf und runter
    und maximal 2 Felder nach links und rechts gehen.
    "Unbekannt" ist ziemlich unwichtig, in der Regel steht hier immer "$00".


    Die Trainer-Funktion ist auch sehr praktisch.
    Um zu definieren, dass die Person ein Trainer ist, macht ihr bei "Trainer" ein "$01" hin.
    Die Sichtweite gibt an, bei wie vielen Feldern dich der Trainer "erwischen" kann.
    Wenn dort z.B "2" steht, kann der Trainer 2 Felder weit blicken und dich in einem Radius von 2 feldern erwischen.
    Abhängig davon ist die Blickrichtung (Movement-Typ).


    Bei Script-Offset kopiert ihr das vom XSE-Compiler erhaltene Offset hinein.
    Interessant wird es jetzt bei der Personen-ID.
    Wenn ihr dort eine schon gesettete Flag hineinschreibt, ist die Person verschwunden!
    "Unbekannt" ist in dem Fall einfach 2 nop's (00 bytes)


    Signposts
    Signposts haben zwei Funktion:


    -Ansprechen
    -versteckte Items
    (-Geheimbasen (nur in RSS))


    Unter Signpost-Typ könnt ihr auswählen, ob das Script erscheint, wenn ihr draufklickt oder
    wenn ihr zum Beispiel nach oben geht und das Script sofort ausgelöst wird.
    Interessant ist hier "verstecktes Item".


    Normales Script beim Anklicken


    Bei Unbekannt lässt ihr 0000 stehen und bei Script-Offset kopiert ihr das von XSE ausgespuckte Offset rein.


    Verstecktes Item


    Es wird empfohlen, immer Typ [07] zu nehmen.
    Bei Hidden-ID ist es eigentlich egal was man angibt, es sei denn man hat mehrere Items auf der Map.
    Wenn mehrere Items auf der Map sind, darf man nicht bei jedem z.B $00 angeben, sondern 2 versch. Werte :-)
    Anzahl ist glaub ich selbsterklärend ;-D


    Warps


    Bei Warp-Nummer müsst ihr die Nummer des Warps angeben, auf den ihr euch bei der anderen Map warpen wollt.
    Bei Bank gebt ihr die erste Nummer der Map an, die man hier ablesen kann

    [Originale Grafik nicht mehr vorhanden]
    Bei Map hingegen gebt ihr die zweite Nummer an.
    Wenn ich jetzt nach Alabastia will, wären das Bank: 3 Map: 0.


    Scriptfelder


    Da gibts jetzt wieder etwas mehr zu erklären.
    Also bei Scriptfeldern muss man nur drauftreten, damit das Script auslöst.
    Allerdings funktioniert das nur, wenn man eine variable und wert angibt..


    Bei Unbekannt kommt einfach 00.
    Bei der Var-Nummer könnt ihr theoretisch alles über 1000 und unter 8000 angeben.
    Empfohlen ist allerdings 4000-6000, sollte aber für ein Spiel reichen. ;-)
    Bei Wert kommt immer "$00". Als Anfänger braucht ihr nicht zu verstehen warum, wenn ihr
    den Anweisungen folgt.


    Wenn ihr also zum Beispiel jetzt die Var 5000 mit dem Wert 0 angegeben habt, schreibt ihr im Script setvar 0x5000 0x1.


    Bei dem Unbekannt danach kommt wieder 0000.
    Und schließlich beim "Script-Offset" das vom XSE-Compiler ausgespuckte Offset.


    Scripten


    Jetzt geht's ans Scripten.
    Personen, Schilder und spezielle Events.
    Fangt zuerst immer mit den Personen und Schildern an.
    Diese sind in der Regeln immer am Leichtesten und leider auch am Langweiligsten.^^
    Habt ihr das gemacht, könnt ihr euch den speziellen Events widmen.
    Wie zum Beispiel "Pokemon erhalten" oder ein Minispiel..


    Scripten ist eigentlich etwas sehr kreatives und fordert viel Gehirnschmalz.
    Es gibt Situationen, in denen man nicht einfach ein Tutorial zur Hand nimmt und das Problem ist gelöst..
    Wenn ihr jetzt zum Beispiel ein Minispiel scriptet:


    Ihr macht ein kleines Quiz.
    Eventuell mit ein paar multichoices, damit es professioneller aussieht usw.
    Wie zum Teufel frage ich aber die Antworten auf richtig oder falsch ab und wie
    mache ich ein Abfragungssystem, damit der Spieler gemäß seiner Antworten einen Preis bekommt?


    Hierfür verwenden wir setvar, addvar, subvar und compare (evtl giveitem für den Preis)


    Setvar benutzt man ja normalerweise bei Levelscripts oder Script-Feldern.
    Hier haben Vars aber eine ganz andere Funktion.
    Eine Var speichert hier sozusagen die Anzahl an richtigen Antworten.
    Wann immer eine Antwort richtig ist (mit compare abgefragt), macht ihr ein addvar 0xeure_var 0x1.
    Dies bewirkt, dass der Wert der Var um eins erhöht wird.
    Das spannende an der Sache sind dann noch die Buffers.


    Code
    buffernumber 0x0 0xeure_var


    Damit wird der Wert der Var (Wert enspricht richtigen Antworten) in Buffer 1 gespeichert.
    Dann macht ihr in einem Textscript: "[player] hat [buffer1] richtige Antworten genannt."
    Da seht ihr mal, was mit Scripting alles möglich ist! ;-)


    Hier findet ihr 2 Scripting-Tutorials, eins davon von mir:


    XSE Tut by pilo


    Was jetzt?


    Jetzt könnt ihr noch diverse Grafiken hacken, wie zum Beispiel den Title-Screen oder den Boot-Screen..
    Aber auch Trainersprites und Overworlds.


    Ich empfehle euch, Map für Map voranzugehen.
    Nachdem die eine Map gemappt wurde, macht auch die Scripts für diese.
    Nicht einfach alles Mappen und dann Scripten, denn so verliert man schnell die Motivation.
    Außerdem ist empfohlen, spezielle Grafiken für diese Map sofort nach den Scripts einzufügen.


    In den Folgenden Kapiteln wird es kleine Mini-Tutorials zu einzelnen Sachen geben, wie das Hacken der Textbox
    oder des Bootscreens.


    Für alle die ab jetzt Schluss machen: Ich hoffe euch hat die kleine Einführung in das Hacking gefallen.
    Ihr könnt mich immer anschreiben, falls ihr etwas nicht versteht oder mehr wissen wollt. ;-)


    Mini-Tutorials


    Bootscreen hacken


    Benötigte Programme:


    [list][*]Unlz GBA
    [*]Nameless Tilemap Editor
    [*]Irfanview


    Nun, der Bootscreen ist etwas tükisch, da der RAM uns nur eine begrenzte Tileanzahl für das Tileset zur Verfügung stellt.
    Wer jetzt nicht unbedingt Routinen (ASM) ändern will, sollte sich an das Tutorial halten.


    Ich würde gerne diesen Bootscreen einfügen:

    [Originale Grafik nicht mehr vorhanden]


    Der ist für meinen Hack und daher bitte ich euch, ihn nicht irgendwie zu benutzen :-P


    Habt ihr euren Bootscreen gezeichnet (Der GBA ist 240x160 Pixel), müsst ihr das Set verkleinern.
    Das macht ihr, indem ihr alle doppelten Tiles oder jene, die über die X oder Y-Achse
    gespiegelt werden können, entfernt.
    Wenn ihr dann fertig seid, sieht das Set ziemlich mickrig aus.^^


    Vergesst unbedingt nicht, links oben ein vollschwarzes 8x8 Tile zu machen!
    (falls schon schwarz z.b im Text vorhanden ist, ändert diese zu 24/24/24 RGB, fällt keinem auf und ihr tut euch einfacher!)


    Habt ihr also nun das Set, öffnet Irfanview.
    Image -> Decrease Colour Depth -> 16 Colours
    Damit reduzieren wir die Farben im Set auf 16.
    Speichert euer Bild.


    Jetzt geht auf Image -> Increase Colour Depth -> 256 Colours
    Speichert nun die Palette mit Image -> Palette -> Export Palette -> euername.pal
    SPEICHERT DAS BILD NICHT!
    Irfanview können wir wieder schließen..


    Kommen wir zur Tilemap.
    Startet den NTME (nameless tilemap editor) und öffnet euer Tileset.


    Nehmt jetzt euren ursprünglichen 240x160 Bootscreen zur Hand und versucht ihn im NTME nachzustellen.
    Zu guter letzt schweift ihr euren Blick dorthin, wo "(Tilemap 30x20)" steht.
    Mit Width, Height und dem Plus-Button macht ihr die Tilemap auf 32x32.
    Wenn ihr fertig seid, sollte da "(Tilemap 32x32)" stehen.
    Dann speichert die Tilemap und ihr könnt den NTME auch schon wieder schließen.


    Jetzt brauchen wir den unlz gba.
    Ihr geht ungefähr zur Nummer 212 im 16-Farben-Modus und Black/White.


    Geht nun auf "Import" und wählt euer Tileset aus.
    Sucht euch aber zuvor ein freies Offset im Hexeditor.
    Wo wir dabei sind: Jetzt könnt ihr dieses freie Offset in euer "Grafik-Offset"-Textdokument schreiben.
    Dann kannst du das Offset nicht versehentlich überschreiben ;-)


    Macht alle Haken bis auf "Export Palette"
    Habt ihr das gemacht, klickt auf OK und ihr bekommt eine Meldung, dass alles gut verlief.
    Drückt jetzt auf "Next".
    Ihr seht ein etwas misshandeltes Bild, das ist die Tilemap des Bootscreens.
    Richtig geraten, die werden wir jetzt ersetzen.
    File -> Load RAW


    Drückt nun auf Write to ROM, gebt erneut ein freies Offset ein, und drückt OK.
    Habt ihr das alles getan, schließt den Unlz GBA.


    Macht nun einen Test im VBA.
    Wenn ihr irgendwas falsch gemacht habt, wird der VBA steckenbleiben und nicht einmal der Titelbildschirm wird geladen.
    Also, VBA starten und hoffen.


    Yay, es hat funktioniert, allerdings müssen wir ja noch die farben ändern..


    Und hier kommt der Advance Palette Editor (APE) ins Spiel.
    Startet ihn, und öffnet eure ROM.


    Klickt auf "Von Offset laden" und gebt in dem Kästchen das Offset 402264 ein.

    Weil ich so nett war, habe ich euch die Research-Arbeit erspart. :-D


    Nun müsst ihr eure palette von irfanview importieren.
    Das geht, indem ihr auf den Import-Button drückt.
    Jetzt noch ein Klick auf "Ersetzen" und ihr könnt APE schließen!


    Und schon haben wir den Bootscreen erfolgreich gehackt! :3


    Ich hoffe das Mini-Tutorial hat euch geholfen![/b]

    [tabmenu][tab=Feedback zu deiner Map]
    Was die Voter an der Baumsetzung auszusetzen hatten, weiß ich nicht.. ich finde die Bäume sind gut gesetzt,
    manchmal in Gruppen, manchmal auch auf Abstand von den Anderen.. sehr natürlich finde ich :-)


    Bei der Dekoration wurde auch nicht übertrieben, außer vielleicht bei den Steinen.. Du könntest
    beispielsweise auch Muscheln oder Schirme und Luftmatratzen verwenden (gibt es als Tiles).


    Was mir besonders ins Auge sticht, sind die verschiedenen Arten von Steinen.
    Du verwendest auf der einen Seite die ganz normalen Steine von Red-Ex, auf der anderen Seite aber
    realistischere Steine (Liegt am Shading..), und das passt nicht so ganz ins Bild.. (Geschmackssache :-P)


    Alles in allem eine gelungene Map, die evtl. etwas Besseres als den 5.Platz erreichen hätte können =)


    [tab=Interessiert eh keinen.^^] Zu dem Wettbewerb: Ich finde es sowieso doof, dass Feedback nicht Pflicht ist.
    Außerdem ist anzumerken, dass hier jeder x-Beliebige voten konnte, auch Mapping-Noobs, die nichts verstehen..[/tabmenu]


    ~Laz0r


    Vorwort


    Ich hatte ja zuerst echt keinen Plan, wo ich die Rombase bloß hingeben könnte..
    Hab mich dann für den Romhacks-Bereich entschieden, da es in Tutorials nicht passt und unter
    Mapping würde es sofort gelöscht werden.^^
    Gehört hierher, in die Ressourcen. ~Majiata


    Was ist überhaupt eine Rombase?


    Eine Rombase ist ein Hack, der anderen Hackern das hacken erleichtern sollen. (lolz)
    Es können eigene Tiles eingefügt sein (s.g. Tilebases) oder andere Dinge, wie z.b der Titelbildschirm.
    Ich will heute eine Tilebase vorstellen :-)


    Screenshots



    Download


    Patch: Klick hier!
    >Anleitung zum Patchen< (by Silence)


    Credits


    Wenn ihr diese Rombase verwendet, müsst ihr den folgenen Personen Credits geben:


    • Laz0r
    • Kyledove
    • Sagaxxy
    Zitat von Damien

    Nur was ich meine sagt der Titel,ist das ich morgens bzw. heute gesehen habe im Chat nur ein beispiel da hat man doch tatsächlich über Gamehacks geredet wurde mir deutlich gemacht mit einen Link über ROMS.


    Der Link war von meinem XSE Tutorial, das hat rein gar nichts mit ROMs zu tun.
    Wenn du dich schon nicht auskennst, dann poste so etwas nicht.. -.-


    Über Gamehacking (modding wäre der bessere Begriff) zu reden ist nicht illegal, warum auch? o.o

    [tabmenu][tab=Miyoshi Town]
    Hallo,
    also von der Struktur her gefällt mir deine Map echt gut.
    Ich finde es gut, dass du versucht hast, die Geradlinigkeit zu brechen..
    Doch ich muss sagen, dass die Bäume ein bisschen zu weit voneinander entfernt sind
    und dass die Map ein wenig leer wirkt ;-)
    Schöne Tiles, und nette Idee mit der Miltank-Statue.
    Allerdings könntest du das "Bauernhof-Feeling" mit Feldern ein bisschen aufwerten :-P
    (Hohes Gras hinter Zäunen..)


    Achja, alles Gute nachträglich :>[/tabmenu]

    [tabmenu][tab=Route 3]
    Also im Großen und Ganzen ist die Map okay.
    Man sieht, dass du mit den Bäumen am Besten zurecht kommst.
    Da du versucht hast, die Bäume nicht einzeln stehen zu lassen.
    Allerdings muss ich sagen, dass du sehr linear mappst.
    Die Berge sind fallweise bis zu 10 tiles lang, ohne dass eine Kurve o.Ä kommt.
    Die Map ist auch viel zu leer, du könntest mehr Bäume oder andere Dekorationen verwenden.
    [tab=Lovea]Diese Map gefällt mir schon besser, weil du
    mehr Variation in die Map hereingebracht hast.
    Zwar immer noch linear, aber dafür nicht mehr so leer. :-)
    [tab=In the water]Die Map gefällt mir wirklich!
    Gut gefüllt, nicht so linear und viel Variation :-D
    Das einzige, was ich mir denke, ist: "Was wenn die OW's nicht da wären? .."[/tabmenu]


    Ist nur etwas kurz, weil mir atm nicht mehr eingefallen ist :-P
    ~Laz0r

    [tabmenu][tab=Wallpaper]
    Uii, eine richtig idyllische, kleine Stadt =)
    Ich bin ziemlich angetan von deinem natürlichen Stil.
    Du übertreibst einerseits nicht (z.B zu viele Blumen auf einem Fleck)
    andererseits tendierst du nicht, wie viele andere Mapper, dass eine Tileart gar nicht vorkommt.
    Ein einziger Fehler, der mir eigentlich sofort auffiel, ist diese seitliche Treppe.
    Im Gegensatz zu dem Berg ist die Treppe ein Monstrum :-P[tab=random Schlucht]
    Eigentlich gibt es an der Map nichts auszusetzen, allerdings bereitet mir ein Logikfehler
    (der mMn. offensichtlich ist) einen Brainfuck :-D
    Und zwar klatscht du den Berg auf ein halb-transparentes Wasser, darunter müsstest
    du diese Küstentiles setzen, damit es realistisch aussieht ;-)[/tabmenu]


    ~Laz0r

    Kategorie 1:
    1. Map (3 Punkte): Map 3
    2. Map (2 Punkte): Map 1
    3. Map (1 Punkt): Map 5


    Kategorie 2:
    1. Map (2 Punkte): Map 2
    2. Map (1 Punkt): Map 1




    Uff, das hat mich jetzt viel Kraft gekostet :-D
    Schönen Abend!

    Zitat

    Bei Wildbattle kommt bei mir nur der fadescreen, kann mir jemand sagen warum der kampf nicht startet?
    Ich habe das Script 1 zu 1 kopiert


    m7x


    Huhu, hast du XSE 1.0.0 oder 1.1.1?


    Für XSE 1.0.0


    Code
    wildbattle 0xParameter blablawaitstate


    Für XSE 1.1.1 nur


    Code
    wildbattle 0xParameter blabla


    XSE 1.1.1 hat nämlich den waitstate Befehl schon im wildbattle integriert ;)

    Also, das hat wenig mit Scripting zu tun ;)
    Die 30 Bälle und die 600 Schritte die man hat, werden durch eine Routine im ROM bestimmt..
    Ich kann mich ja mal dransetzen und versuchen, diese Routine zu verändern, garantieren kann ich aber nichts :P


    Es wäre wahrscheinlich sogar leichter, eine eigene ASM-Routine zu schreiben..
    Denn ich glaube kaum dass du Steine und Köder werfen willst, oder? :D

    Hi!


    Alternativ kannst du mal per Logging und anderen Funktionen des VBA nachschauen, auf welchen Offsets sich diese Grafiken befinden.
    Da ich mal vermute, dass du keinen Plan davon hast (was nicht schlimm ist^^) nimm den NSE 1.7.5.0.
    Geh auf den Reiter Options -> Plugins -> Icons.npi
    Dort hast du den ersten Frame aller Pokémon aufgelistet.


    Falls das nicht klappt, schreib mich an, ich researche dir die Dinge ;)


    E:/ Sehe gerade, dass BPED nicht unterstützt wird. Dann schreib mich halt an :D