Skip to content

ajouter une nouvelle map au jeu

Maxime edited this page Apr 8, 2023 · 3 revisions

Date created: 2020-12-01

Ce tutoriel est pour ajouter une nouvelle carte au jeu. Ceci n'est PAS un didacticiel de création de carte - ce didacticiel montre les fichiers exacts qui doivent être modifiés pour ajouter une carte au jeu. Par conséquent, il est supposé que vous avez déjà créé votre propre carte personnalisée. J'utiliserai le nom "TestMap1" pour le didacticiel, mais vous devez échanger votre propre nom de carte.

1. Met ton fichier carte .blk (TestMap1.blk) dans le dossier /maps/

Cherchez une ligne où il y a écrit 'UNUSED'.

Vous devez faire attention à la ligne que vous allez utiliser, parce que vous aurez besoin de remplacer cette même ligne dans d'autre fichiers plus tard.

Pour ce tuto, je vais remplacer 'UNUSED_MAP_F4' avec ma map personnalisée.

Remplacez cette ligne par une ligne comme ceci:

-	mapconst UNUSED_MAP_F4,                  0,  0 ; $F4
+	mapconst TEST_MAP_1,                     6,  5 ; $F4
  • La première partie 'mapconst' est constante et ne peut être changée
  • La seconde partie 'TEST_MAP_1' est l'endroit où vous mettez le nom de la map
    • NOTE: Vous devriez suivre les mêmes règles de naming que les autres maps pour éviter tout problème pendant le processus
  • Les deux autres nombres après le nom sont la hauteur et la largeur de la map
    • Bien évidemment, ces valeurs doivent être les mêmes que celles que vous avez utilisées pour créer votre map
  • Tout ce qu'il y a après le point virgule est un commentaire décrivant le code, mais n'est pas compris par le compileur comme un code, ça permet de rendre le code plus compréhensif.

3. Créez le fichier suivant: /data/maps/headers/TestMap1.asm


	map_header TestMap1, TEST_MAP_1, CEMETERY, 0
	end_map_header

Changez 'CEMETERY' avec le nom du tileset que vous souhaitez/avez utilisé pour votre map.

Gardez le reste (ou changez TestMap1 avec le nom de votre map si vous avez décidé de mettre un autre nom).

Rappelez vous de suivre le schéma de naming--si ils ont tous des lettres capitales et des underscores, faites la même chose.

4. Create the following file: /data/maps/objects/TestMap1.asm

TestMap1_Object:
	db $0 ; border block

	def_warps
	warp  4, 11, 0, REDS_HOUSE_2F

	def_signs

	def_objects

	def_warps_to TEST_MAP_1
  • La première ligne, 'db $0' définit les blocs utilisés à l'extérieur des limites de la map
  • La prochaine section, 'def_warps' est là pour créer des warps(liens entre maps)
    • Le mot 'warp' est requis au début de chaque warp
    • Les deux nombres ensuite sont des coordonnées indiquant où se situe le warp sur la map
      • Utilisez un éditeur de map comme Polished Map pour trouver les coordonnées de la map.
    • Le troisième nombre est l'identifiant de 'warp' qui indique dans quelle map tu vas attérir après avoir pris le warp
      • Warps are counted in the order they are listed in the file, starting from 0
      • So the first warp in a file has an ID of 0, the second has an ID of 1, etc.
      • In my example, I'm warping from my TestMap1 to REDS_HOUSE_2F. If you open data/maps/objects/RedsHouse2F.asm and look at the list of warps, you'll only see one warp (the stairway going downstairs). This is the first (and only) warp on that map, so it's ID is 0
      • The name after the warp ID is the name of the map you are warping to
        • Notice the capitalization and underscores, this is required
  • The next section, 'def_signs' is for setting up signs that display text
    • This is not required and isn't covered in this tutorial
  • The next section, 'def_objects' is for setting up objects (NPCs, trainers, etc)
    • This is not required and isn't covered in this tutorial
  • At the end of the file you need the 'def_warps_to' line
    • I believe this sets up any maps that warp to your map, but I'm not sure

Remember that line I told you to remember earlier? You need to find that line in this file, and then replace it:

-	db $11 ; UNUSED_MAP_F4
+	db BANK(TestMap1_h)

You don't have to use 'UNUSED_MAP_F4', you can replace any map including maps that already exist in the game.

Just like the last file, find the corresponding line and then replace it:

-	dw SilphCo2F_h ; UNUSED_MAP_F4
+	dw TestMap1_h

7. Create the following file: /scripts/TestMap1.asm

TestMap1_Script:
	jp EnableAutoTextBoxDrawing

TestMap1_TextPointers:

	text_end ; unused

As far as I can tell, these two parts are required, even if you have no scripts or texts for the map

8. Edit /maps.asm

We need to include our map's files in this list somewhere. I decided to add mine after the last map in the file, which is Agatha's Room. Look for the line AgathasRoom_Blocks: INCBIN "maps/AgathasRoom.blk" and add the following underneath:

INCLUDE "data/maps/headers/AgathasRoom.asm"
INCLUDE "scripts/AgathasRoom.asm"
INCLUDE "data/maps/objects/AgathasRoom.asm"
AgathasRoom_Blocks: INCBIN "maps/AgathasRoom.blk"

+INCLUDE "data/maps/headers/TestMap1.asm"
+INCLUDE "scripts/TestMap1.asm"
+INCLUDE "data/maps/objects/TestMap1.asm"
+TestMap1_Blocks: INCBIN "maps/TestMap1.blk"

This step is a little complicated, and I honestly don't fully understand what this file does.

You'll need to find and replace any references to the map you've been replacing.

For example, I've been replacing 'UNUSED_MAP_F4', so I need to edit the following lines:

-	dw UnusedMapF4HS
+	dw NoHS

Later in the file, delete the following lines:

-UnusedMapF4HS:
-	db UNUSED_MAP_F4, $02, SHOW

That's all the required steps to add a new map. All you need to do is set up a warp to your map from another map.

At this point you'll probably want to add trainers, NPCs, text etc. There should already be some tutorials out there for those, but I may make my own tutorials later if need be.