public static bool TryMapRamToRom(this IRomMapper mapper, int ramAddress, out int value)
        {
            ulong i = (uint)ramAddress;
            ulong o;
            bool  b = mapper.TryMapRamToRom(i, out o);

            value = (int)(uint)(o & 0xffffffffu);
            return(b);
        }
        public static bool TryMapRamToRom(this IRomMapper mapper, long ramAddress, out long value)
        {
            ulong i = (ulong)ramAddress;
            ulong o;
            bool  b = mapper.TryMapRamToRom(i, out o);

            value = (long)o;
            return(b);
        }
        public static long MapRamToRom(this IRomMapper mapper, long ramAddress)
        {
            long v;

            if (mapper.TryMapRamToRom(ramAddress, out v))
            {
                return(v);
            }
            throw new Exception("Address not mappable.");
        }
 public static void ReadStrings(List <MainDolString> output, IRomMapper dol, Stream stream, long start, long bytecount)
 {
     stream.Position = start;
     while (stream.Position < start + bytecount)
     {
         long p = stream.Position;
         uint a = stream.ReadUInt32().FromEndian(EndianUtils.Endianness.BigEndian);
         if (a != 0)
         {
             uint rom;
             if (dol.TryMapRamToRom(a, out rom))
             {
                 long tmp = stream.Position;
                 stream.Position = rom;
                 string s         = stream.ReadNulltermString(TextUtils.GameTextEncoding.ShiftJIS);
                 uint   bytesRead = (uint)(stream.Position - rom);
                 stream.Position = tmp;
                 output.Add(new MainDolString((uint)p, rom, s, bytesRead));
             }
         }
     }
 }