Post subject: Fire Emblem 4: Seisen no Keifu
Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I've made a couple of scripts for Fire Emblem 4 that might be useful to people. The first script contains an implementation of the game's RNG, and uses it to predict the next 16 values:
Language: lua

emu = snes9x function get_rng() return { step = memory.readbyte(0x7e04a2), table = memory.readbyterange(0x7e046b,0x37) } end function rand(rng) rng.step = rng.step + 1 if rng.step >= 0x37 then for i = 0, 0x36 do local j if i < 0x18 then j = i+0x1f else j = i-0x18 end rng.table[i+1] = rng.table[i+1] - rng.table[j+1] if rng.table[i+1] < 0 then rng.table[i+1] = rng.table[i+1] + 100 end end rng.step = 0 end local res = rng.table[rng.step+1]-1 if res < 0 then res = 99 end return res end while true do local rng = get_rng() for i = 1, 0x10 do gui.text(i*12, 0,string.format("%02x",rng.step)) gui.text(i*12,10,string.format("%2u",rand(rng))) end emu.frameadvance() end
The forum won't let me paste another code block in the same post due to a bug, so the other script will come in the next post. Edit: The reason for the code block problem was just me forgetting to disable HTML in the post. I should note that though the above RNG is simple, the actual code in the game is quite a bit scarier, with code paths for much more shuffling of the random table. However, this code never kicks in - the function that should randomly enable this extra shuffling depends solely on ROM values, and therefore always returns the same result, which leads to the extra shuffling always being skipped. If you want to see it for yourself, the RNG is at 80A73A, and a commented disassembly of it can be seen here.
Former player
Joined: 2/19/2007
Posts: 424
Location: UK
The other script is more directly useful during normal play. It displays the relationship status for the first-generation characters when the Y-button is pressed:
Language: lua

emu = snes9x function sword(x) if x >= 0x8000 then return x-0x10000 else return x end end nw, nm = 9, 15 wname = { "brg", "til", "fur", "syl", "lch", "dia", "edn", "ayr", "eth" } mname = { "sig", "noi", "alc", "adn", "fin", "cua", "mid", "lev", "hol", "azl", "jam", "cld", "beo", "lex", "deu" } function get_love() local love_skip = 3 local love_tab = 0x7e3be5 local love = {} for i = 1, nw do love[i] = {} end for w = 0, nw-1 do for m = 0, nm-1 do love[w+1][m+1] = sword(memory.readword(love_tab+2*(w*(nm+love_skip)+m))) end end return love end function love_color(score) if score >= 500 then return 0x00ff00ff elseif score > 400 then return 0xff8080 else return 0xffffff00 end end -- Display love table, hiding people who are not present -- (i.e. those with 0 for all scores) function show_love(love) local width, height = 16, 7 local bsub = 4 -- Check which are present of each sex, and which are already -- in love local mok, wok, mmax, wmax = {}, {}, {}, {} for w = 1, nw do wok[w] = 0 wmax[w] = 0 end for m = 1, nm do mok[m] = 0 mmax[m] = 0 end for w = 1, nw do for m = 1, nm do if love[w][m] ~= 0 then mok[m] = mok[m] + 1 wok[w] = wok[w] + 1 if(love[w][m] > mmax[m]) then mmax[m] = love[w][m] end if(love[w][m] > wmax[w]) then wmax[w] = love[w][m] end end end end wi = 0 for w = nw, 1, -1 do if wok[w] > 0 then wi = wi + 1 gui.fillbox(width*wi-2,0,width*(wi+1)-bsub,height,love_color(wmax[w])) gui.text(width*wi,0,string.format("%3s",wname[w])) mi = 0 for m = 1, nm do if mok[m] > 0 then mi = mi + 1 gui.fillbox(width*wi-2,height*mi,width*(wi+1)-bsub,height*(mi+1),love_color(love[w][m])) gui.text(width*wi,height*mi,string.format("%3d",love[w][m])) if wi==1 then gui.fillbox(-2,height*mi,width-bsub,height*(mi+1),love_color(mmax[m])) gui.text(0,height*mi,string.format("%3s",mname[m])) end end end end end end while true do local keys = joypad.get(1) if keys.Y then show_love(get_love()) end emu.frameadvance() end
Most of this code is simply drawing to the screen. The actual work is done in get_love().
Active player (276)
Joined: 4/30/2009
Posts: 791
Ah, now this will be interesting. Maybe I'll pick this up once the last touches of FE6 is done. Thanks amaurea.
Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I have also looked a bit at the rom, finding the definition of the first-generation characters, the classes, bloodlines and love growth values. Most of this is already documented at gamefaqs, though, but I'll put it here in the hope that it will be useful to somebody. It is in the form of a few short bash scripts: http://folk.uio.no/sigurdkn/fe4_blood http://folk.uio.no/sigurdkn/fe4_class http://folk.uio.no/sigurdkn/fe4_chars http://folk.uio.no/sigurdkn/fe4_affec These are mostly wrappers around hexdump, which extracts the relevant subset of the rom and formats it as a table. Running each of these on the rom produces: fe4_blood
          Growth boost                Holy weapon boost
 mhp str mag skl spd def res luc  str mag skl spd def res
  20  10   0  10   0   0   0  10    0   0  10  10   0  20 08 50 Baldo
  10   0  20   0   0   0  20   0    0   0  20  20  20  20 01 23 Narga
  20   0   0   0  30   0   0   0   10   0   0  10  10   0 01 24 Dain
  20  10   0   0  10  10   0   0   10   0  10   0  10   0 00 16 Noba
  20   0   0  30   0   0   0   0    0   0  10  20   0   0 03 36 Odo
  20   0   0   0   0   0   0  30   10   0   0  10   0   0 02 2c Ulir
  20   0   0   0   0  30   0   0    0   0   0   0  20  10 05 41 Neir
  20   0  30   0   0   0   0   0    0  10   0   0  10  10 06 46 Fala
  20   0   0  30   0   0   0   0    0   0  20  10   0   0 07 4b Tordo
  20   0   0   0  30   0   0   0    0   0  10  20   0   0 04 62 Holsety
  10   0  10   0   0   0  20  10    0   0   0   0   0   0 00 14 Blagi
  20  30   0   0   0   0   0   0    0   0  20   0   0  10 09 54 Hezul
  10   0  20   0   0   0  20   0    0   0   0   0   0   5 90 00 Loptus
fe4_class
                                 |-- for generic enemies? -|
     hp? str mag skl spd def res  hp str mag skl spd def res swd spr axe bow sta fir thu wnd lit drk mov     skills     cls
  20  30   7   0   6   6   6   0 100  30  10  30  30  30  10   1   2   3   3   3   3   3   3   3   3   8   0 000100  10   0
  20  30   7   0   6   6   6   0 100  30  10  30  30  30  10   3   1   3   3   3   3   3   3   3   3   8   0 000100  10   1
  20  30   7   0   6   6   6   0 100  30  10  30  30  30  10   3   3   3   1   3   3   3   3   3   3   8   0 000100  10   2
  20  30   7   0   6   6   6   0 100  30  10  30  30  30  10   3   3   1   3   3   3   3   3   3   3   8   0 000100  10   3
  20  30   7   0   6   6   6   0 100  30  10  30  30  30  10   1   3   3   3   3   3   3   3   3   3   8   0 000100  10   4
  20  26   3   3   6   6   3   3 100  30  10  30  30  20  10   1   3   3   3   2   3   3   3   3   3   8   0 000102  10   5
  20  40  10   0   7   7   7   3 100  30  10  30  30  30  10   0   1   3   3   3   3   3   3   3   3   9   1 000104  30   6
  20  40  12   0   7   7   8   3 100  30  10  30  30  30  10   3   0   3   3   3   3   3   3   3   3   9   1 000100  30   7
  20  40  12   7  12  12  12   7 100  30  10  30  30  30  10   0   0   0   0   0   0   0   0   2   3   9   1 000900  30   8
  20  40   9   5   9   9   9   5 100  30  10  30  30  30  10   1   1   3   3   3   3   3   3   3   3   9   1 000100  30   9
  20  40   9   5   9   9   9   5 100  30  10  30  30  30  10   1   2   3   3   2   3   3   3   3   3   9   1 000100  30  10
  20  40  10   0   8   8   8   3 100  30  10  30  30  30  10   3   3   3   0   3   3   3   3   3   3   9   1 000100  30  11
  20  40   8   0  15  12   8   3 100  30  10  30  30  30  10   0   3   3   3   3   3   3   3   3   3   9   1 001100  30  12
  20  40   5  10   7   7   5   7 100  30  20  30  30  20  20   1   3   3   3   3   1   1   1   3   3   9   1 000100  30  13
  20  40  12   0   7   7  10   3 100  30  10  30  30  30  10   3   3   0   3   3   3   3   3   3   3   9   1 000100  30  14
   1  30   6   0   5  10   3   5 100  30  10  30  30  30  10   2   2   3   3   3   3   3   3   3   3   8   2 010100  10  15
  20  35   7   0   7  12   5   7 100  30  10  30  30  30  10   1   1   3   3   3   3   3   3   3   3   8   2 010100  30  16
  20  40   7   7  10  15   6  12 100  30  10  30  30  30  10   0   0   3   3   2   3   3   3   3   3   8   2 011100  50  17
   1  35   9   0   5   5   8   0 100  30  10  30  30  30  10   2   2   3   3   3   3   3   3   3   3   9   2 010100  10  18
  20  40  10   0   7   6  11   0 100  30  10  30  30  30  10   1   1   3   3   3   3   3   3   3   3   9   2 010100  30  19
  20  45  12   0   9   7  14   0 100  30  10  30  30  30  10   0   0   3   3   3   3   3   3   3   3   9   2 010900  50  20
   1  30   7   0  10  10   5   0 100  30  10  30  30  30  10   3   3   3   0   3   3   3   3   3   3   6   3 000800  10  21
   1  30   7   0  10  10   5   0 100  30  10  30  30  30  10   0   3   3   3   3   3   3   3   3   3   6   3 000800  10  22
  20  40  12   0  15  15   7   3 100  30  10  30  30  30  10   0   3   3   3   3   3   3   3   3   3   6   3 001800  30  23
  20  40  12   0  12  12   7   3 100  30  10  30  30  30  10   3   3   3   0   3   3   3   3   3   3   6   3 000800  30  24
  20  40  12   3  12  12   7   3 100  30  10  30  30  30  10   0   3   3   3   3   3   3   3   3   3   6   3 000800  30  25
  20  40  10   0   6   5  12   3 100  30  10  30  30  30  10   0   0   1   1   3   3   3   3   3   3   5   4 000200  30  26
  20  45  15  15  15  15  15  15 100  30  10  30  30  30  10   0   0   0   0   0   0   0   0   3   3   5   4 000208  60  27
  20  45  12   7   7   7  12   7 100  30  10  30  30  30  10   0   0   0   0   0   0   0   0   3   3   5   4 000200  50  28
  20  30   6   0   5   5   7   0 100  30  10  30  30  30  10   3   2   3   3   3   3   3   3   3   3   6   5 000000  10  29
  20  30   6   0   5   5   7   0 100  30  10  30  30  30  10   3   1   3   3   3   3   3   3   3   3   6   5 000000  10  30
  20  30   6   0   5   5   7   0 100  30  10  30  30  30  10   3   3   2   3   3   3   3   3   3   3   6   5 000000  10  31
  20  30   6   0   5   5   7   0 100  30  10  30  30  30  10   3   3   3   2   3   3   3   3   3   3   6   5 000000  10  32
  20  30   6   0   5   5   7   0 100  30  10  30  30  30  10   2   3   3   3   3   3   3   3   3   3   6   5 000000  10  33
  20  40   9   0   5   3  10   0 100  30  10  30  30  30  10   3   1   3   3   3   3   3   3   3   3   5   4 000000  20  34
  20  40   9   0   5   3  10   0 100  30  10  30  30  30  10   3   3   1   3   3   3   3   3   3   3   5   4 000000  20  35
  20  40   9   0   5   3  10   0 100  30  10  30  30  30  10   3   3   3   1   3   3   3   3   3   3   5   4 000000  20  36
  20  40   9   0   5   3  10   0 100  30  10  30  30  30  10   1   3   3   3   3   3   3   3   3   3   5   4 000000  20  37
  20  35   5   0   0   7   5   0 100  30   0  30  30  30  10   3   3   1   3   3   3   3   3   3   3   6   7 000000  10  38
  20  35   8   0   3  10   8   0 100  30   0  30  30  30  10   3   3   0   3   3   3   3   3   3   3   6   6 000000  20  39
  20  35   5   0   0   7   5   0 100  30   0  30  30  30  10   3   3   1   3   3   3   3   3   3   3   6  11 000000  50  40
  20  40  11   0   5  12  10   3 100  30   0  30  30  30  10   3   3   0   1   3   3   3   3   3   3   6   6 000000  30  41
  20  35   7   0   0   7   5   0 100  30   0  30  30  30  10   3   3   3   0   3   3   3   3   3   3   6   7 000000  10  42
  20  35   5   0   0   7   5   0 100  30   0  30  30  30  10   3   3   1   3   3   3   3   3   3   3   6   8 000000  50  43
  20  30   5   0   5   5   5   0 100  30  10  30  30  30  10   1   3   3   3   3   3   3   3   3   3   6   9 000000  60  44
  20  30   5  12  10  10   7   7 100  20  20  30  30  30  20   2   3   3   3   3   1   1   1   3   3   6   9 001000  30  45
  20  30   8   3   7   6   7   3 100  30  10  30  30  30  10   0   3   3   3   3   3   3   3   3   3   6   9 000000  50  46
  20  26   5   7   5   8   5   7 100  20  20  30  30  30  20   1   3   3   3   2   3   3   3   3   3   6   9 000008  50  47
  20  26   3  12   9  12   5  10 100  20  20  30  30  30  20   2   3   3   3   1   1   1   1   3   3   6   9 001000  30  48
  20  35   5  15  10  12  10  15 100  20  20  30  30  30  20   3   3   3   3   0   0   0   0   3   3   6   9 000008  60  49
  20  26   3   0   1   7   1   3 100  30  10  30  30  30  10   2   3   3   3   3   3   3   3   3   3   6   9 008000  10  50
  20  26   0   7   6   6   1   7 100  10  30  30  30  10  30   3   3   3   3   1   3   3   3   3   3   5  10 000000  10  51
  20  26   0   7   6   6   1   5 100  10  30  30  30  10  30   3   3   3   3   3   2   2   2   3   3   5  10 000000  10  52
  20  26   0  10   6   6   1   5 100  10  30  30  30  10  30   3   3   3   3   3   1   3   3   3   3   5  10 000000  10  53
  20  26   0   7   9   6   1   5 100  10  30  30  30  10  30   3   3   3   3   3   3   1   3   3   3   5  10 000000  10  54
  20  26   0   7   6   9   1   5 100  10  30  30  30  10  30   3   3   3   3   3   3   3   1   3   3   5  10 000000  10  55
  20  35   0  12   9   8   3   8 100  10  30  30  30  10  30   3   3   3   3   0   2   2   2   3   3   5  10 000000  30  56
  20  35   0  10   8   5   3   8 100  10  30  30  30  10  30   3   3   3   3   0   1   1   1   3   3   5  10 000000  30  57
  20  35   0  15  12  15   3  12 100  10  30  30  30  10  30   3   3   3   3   1   1   1   1   1   3   6  10 001000  50  58
  20  30   0   7   7  10   3   7 100  10  30  30  30  10  30   3   3   3   3   3   2   2   2   2   3   6  10 000000  20  59
  20  30   0   8   7   7   3  10 100  10  30  30  30  10  30   3   3   3   3   1   3   3   3   0   3   5  10 000000  20  60
  20  40   0  10   8   8   7  10 100  10  30  30  30  10  30   3   3   3   3   1   3   3   3   3   1   5  10 000000  30  61
  20  40   0  15  10  10  10  12 100  10  30  30  30  10  30   3   3   3   3   0   0   0   0   3   0   5  10 000800  50  62
  20  26   3   0   3   7   1   0 100  30  10  30  30  30  10   2   3   3   3   3   3   3   3   3   3   6  11 002000  50  63
  20  30   7   3   7  12   5   3 100  30  10  30  30  30  10   0   3   3   3   3   3   3   3   3   3   7  11 002800  60  64
  20  20   0   0   0  10   2   0 100   0   0  30  30   0   0   3   3   3   3   3   3   3   3   3   3   5  12 000000   0  65
  20  20   0   0   0   0   0   0 100   0   0  30  30   0   0   3   3   3   3   3   3   3   3   3   3   5  12 000000   0  66
  20  30   0   0   0   0   0   0 100  30  10  30  30  30   0   3   3   3   0   3   3   3   3   3   3   0  13 000000  10  67
  20  30   0   0   0   0  10   0 100  30  10  30  30  30   0   3   3   3   0   3   3   3   3   3   3   0  13 000000  10  68
  20  30   0   0   0   0   0   0 100  30  10  30  30  30   0   3   3   3   0   3   3   3   3   3   3   0  13 000000  10  69
  20  30   0   0   0   0   0   0 100  30  10  30  30  30   0   3   3   3   0   3   3   3   3   3   3   0  13 000000  10  70
  20  30   0  15  12  12  10  15   0   0   0   0   0   0   0   3   3   3   3   3   0   0   0   3   0   5  14 000000   0  71
fe4_chars
             Starting stats                                                            Growth rates
    mhp str mag skl spd def res luc cls lvl ldr gld  id    nam    loc sex    mhp str mag skl spd def res luc skills    blood    items
 00  35   4   0   4   5   2   0   7   6   5   2   5   1 00   0 00   1   0 00  70  30   5  30  30  40   5  20 020000 02000000 07 2d ff Sigurd
 00  33   4   0   1   2   2   0   4   0   3   0   2   2 00   1 00   2   0 00  80  40   5  30  20  40   5  20 000500 00000000 09 ff ff Noiche
 00  32   2   0   3   4   1   0   4   0   2   0   2   3 00   2 00   3   0 00  70  30   5  40  30  30   5  30 420000 00000000 01 ff ff Alec
 00  36   4   0   0   1   3   0   3  37   3   0   2   4 00   3 00   4   0 00  90  50   5  10  20  40   5  10 000200 00000000 03 ff ff Adan
 00  32   2   0   2   4   1   0   8   1   1   0   2   5 00   4 00   5   0 00  70  30   5  40  30  30   5  50 820004 00000000 2e ff ff Finn
 00  34   4   0   3   3   2   0   5   7   4   2   5   6 00   5 00   6   0 00  70  30   5  30  20  30   5  10 040004 80000000 32 37 ff Cuan
 00  32   2   0   1   3   1   0   3   2   2   0   2   7 00   6 00   7   0 00  60  30   5  30  40  30   5  10 020400 00000000 47 ff ff Mideel
 00  34   1   5   5   6   2   2   7  59   6   0   8   8 00   7 00   8   0 00  50  10  30  40  30  20  10  20 040100 00000800 5a ff ff Levin
 00  40   7   0   7   7   6   1   1  22  12   0  10   9 00   8 00   9   0 00  90  30   5  50  30  30   5  20 001000 00010000 0c ff ff Holin
 00  30   0   3   1   3   1   1   2  52   1   0   5  10 00   9 00  10   0 00  50  10  10  20  50  20  10  20 020000 00400000 50 ff ff Azel
 00  36   4   0   4   4   4   0   4  21   6   1   5  11 00  10 00  11   0 00  90  50   0  10  30  30   5  40 040400 00000000 4e ff ff Jamuka
 00  34   0   9   5   7   2  12   9  56  20   0  10  12 00  11 00  12   0 00  50  10  20  20  30  20  10  30 000000 00002000 6c 71 ff Claude
 00  38   7   0   5   5   4   0   3   4   9   0   2  13 00  12 00  13   0 00  80  40   0  40  30  30   5  20 020400 00000000 08 ff ff Beowulf
 00  33   3   0   4   5   3   0   8   3   4   0   5  14 00  13 00  14   0 00  70  40   5  20  20  20   5  20 000202 00100000 3f ff ff Lex
 00  28   0   0   3   8   0   0  12  63   1   0  15  15 00  14 00  15   0 00  50  40  10  40  40  40  10  40 002010 00000000 04 ff ff Deu
 00  26   0   6   2   5   0   6   6  60   3   0   1  16 00  15 00  16   1 00  40  10  10  20  10  10  10  10 600000 08000001 72 60 ff Diadora
 00  28   2   5   5   6   1   3   8   5   1   0   4  17 00  16 00  17   1 00  40  20   5  20  30  20  10  10 000104 01000000 1c 62 ff Ethrin
 00  26   1   1   4   5   2   2   5  47   2   0  10  18 00  17 00  18   1 00  40  20   5  10  20  20  10  40 100000 00004000 15 63 ff Lachesis
 00  32   4   0   6   7   2   1   3  22   4   0   3  19 00  18 00  19   1 00  50  30   5  30  30  20   5  20 400800 00010000 0d ff ff Ayra
 00  32   4   1   5   6   4   2   7  16   6   1   8  20 00  19 00  20   1 00  50  20  10  20  30  30  10  20 020000 00000000 3c ff ff Fury
 00  28   0   3   6   4   0   4   9  54   3   0   5  21 00  20 00  21   1 00  40  10  20  30  40  10  10  50 010000 00000100 57 54 ff Tiltyu
 00  28   0   0   3   5   0   2   6  50   1   0   5  22 00  21 00  22   1 00  40  10  20  10  10  10  20  20 840000 00001000 1e ff ff Sylvia
 00  28   0   6   2   3   0   3  11  51   3   0   5  23 00  22 00  23   1 00  50  20  30  20  30  20   5  30 000000 00040000 65 ff ff Edin
 00  40   8   0  10   9   7   6   7  24  12   0  10  24 00  23 00  24   1 00  50  30  20  30  20  20   5  10 000000 00080000 49 ff ff Briggit
fe4_affec
 sig noi alc adn fin cua mid lev hol azl jam cld beo lex deu
   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0 Diadora
   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0 Ethrin
   0   2   2   2   2   0   2   2   2   2   2   3   2   2   2 Lachesis
   0   2   2   2   2   0   2   2   2   2   2   2   2   2   2 Ayra
   0   2   2   2   2   0   2   2   2   2   2   3   2   2   2 Fury
   0   3   3   3  10   0   3   3   3   3   3   3   3   3   3 Tiltyu
   0   3   3   3   3   0   3   2   3   3   3   1   3   3   3 Sylvia
   0   2   2   2   2   0   1   2   2   1   1   3   2   2   2 Edin
   0   4   4   4  10   0   3   4   3   3   3   4   4   4   2 Briggit
Most of the above information can be found in a more convenient format (but without any memory or rom addresses, despite the author clearly having disassembled the rom quite thoroughly) in this gamefaqs article.
Player (98)
Joined: 3/20/2008
Posts: 466
Location: Montreal, Quebec, Canada
These are great but I'm 1000x more interested in TASing FE5. Movement growth + movement stars = some pretty ridiculous antics like moving Leaf 30 spaces before getting danced.
Joined: 5/30/2006
Posts: 39
Vykan12 wrote:
These are great but I'm 1000x more interested in TASing FE5. Movement growth + movement stars = some pretty ridiculous antics like moving Leaf 30 spaces before getting danced.
There's already a TAS of Thracia 776 on Nico Video somewhere. I don't have the link and I think it was SSS instead of any%, but I bring it up because it's actually more boring to watch than you'd expect. Leaf and Dean with huge movement and re-move is great fun for a while, but the novelty wears off and things go downhill from there. Maybe that's just me though? Anyway, about Seisen, I have my doubts whether it would make a good choice for a TAS. I see it as being in a similar boat as 11, because the RNG in Seisen is mostly fixed and you can't mess with it quickly at all (as far as I know). So you'd basically be using a segmented run's strategies except with TAS precision. Then once you get a third of the way into Chapter 5, the game just falls apart with Rescue glitch spam. And while that will be amusing for a while, I think it'd be a little silly to think it won't get really old for many people. I'd love to see any run of this game, but I'm just not sure it's the best idea. (I secretly hope somebody can prove me wrong though!)
Player (98)
Joined: 3/20/2008
Posts: 466
Location: Montreal, Quebec, Canada
Anyway, about Seisen, I have my doubts whether it would make a good choice for a TAS.
Actually there's a nico run for that too (see this post). I was bored to tears by that run, and wouldn't imagine a more optimized TAS would be much better. At least a Thracia TAS doesn't have to cope with like 5-10 minute enemy phases (ugh FE4 C4).
Joined: 7/14/2007
Posts: 14
Seisen would be amazing to see once, but that's only becuase I played it to death years ago. I imagine it would be pretty boring for the layman. Way too much one-by-one manual moving of dudes across the map. Chapter 2, 3, and 4 all have a frustratingly large amount of backtracking (which for me usually turns into warp/return staff XP farming after getting bored of moving the units back on my own). FE3 might be better, really. Less boringness with movement star abuse. But much worse graphics and the units really aren't that distinguisable.