<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>2</ID>
      <Description>"Two-timer / 時間管理大師"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : doukyuusei.exe
  Version: 
  Date   : 2022-04-16
  Author : bbfox@ https://opencheattables.org
}

[ENABLE]

aobscanmodule(INJECT__GET_DATETIME,doukyuusei.exe,0F B7 B0 A8 05 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(i_datetime_base_addr)

newmem:
  mov [i_datetime_base_addr], eax

code:
  movzx esi,word ptr [eax+000005A8]
  jmp return

align 10 cc
  i_datetime_base_addr:
  dd 0

INJECT__GET_DATETIME:
  jmp newmem
  nop 2
return:

registersymbol(i_datetime_base_addr)
registersymbol(INJECT__GET_DATETIME)

[DISABLE]

INJECT__GET_DATETIME:
  db 0F B7 B0 A8 05 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: doukyuusei.exe+A7FB2

doukyuusei.exe+A7F9Fo: CC                    - int 3 
doukyuusei.exe+A7FA0p: 55                    - push ebp
doukyuusei.exe+A7FA1e: 8B EC                 - mov ebp,esp
doukyuusei.exe+A7FA3n: 53                    - push ebx
doukyuusei.exe+A7FA4c: 56                    - push esi
doukyuusei.exe+A7FA5h: 57                    - push edi
doukyuusei.exe+A7FA6e: 8B F9                 - mov edi,ecx
doukyuusei.exe+A7FA8a: B9 64 00 00 00        - mov ecx,00000064
doukyuusei.exe+A7FADt: 8B 17                 - mov edx,[edi]
doukyuusei.exe+A7FAFt: 8B 42 68              - mov eax,[edx+68]
// ---------- INJECTING HERE ----------
doukyuusei.exe+A7FB2a: 0F B7 B0 A8 05 00 00  - movzx esi,word ptr [eax+000005A8]
// ---------- DONE INJECTING  ----------
doukyuusei.exe+A7FB9b: 66 89 77 04           - mov [edi+04],si
doukyuusei.exe+A7FBDl: 8B 42 68              - mov eax,[edx+68]
doukyuusei.exe+A7FC0e: 33 D2                 - xor edx,edx
doukyuusei.exe+A7FC2s: 0F B7 80 18 02 00 00  - movzx eax,word ptr [eax+00000218]
doukyuusei.exe+A7FC9.: 8B D8                 - mov ebx,eax
doukyuusei.exe+A7FCBo: 66 89 47 06           - mov [edi+06],ax
doukyuusei.exe+A7FCFr: 8B C6                 - mov eax,esi
doukyuusei.exe+A7FD1g: F7 F1                 - div ecx
doukyuusei.exe+A7FD3.: 0F B7 C0              - movzx eax,ax
doukyuusei.exe+A7FD6.: 8B C8                 - mov ecx,eax
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>8</ID>
          <Description>"Update datetime: move or load / 取得日期時間：移動或是讀檔"</Description>
          <Color>400080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Base"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>808080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_datetime_base_addr</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>3</ID>
          <Description>"Time (hhmm) / 時間 (時分)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_datetime_base_addr</Address>
          <Offsets>
            <Offset>5A8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>6</ID>
          <Description>"Month+Day / 日期 (月日)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_datetime_base_addr</Address>
          <Offsets>
            <Offset>2FC</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>10</ID>
          <Description>"Money / 100 (i.e. 500 = 50,000)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_datetime_base_addr</Address>
          <Offsets>
            <Offset>394</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>11</ID>
      <Description>"Get money value / 取得金錢"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : doukyuusei.exe
  Version: 
  Date   : 2022-04-16
  Author : bbfox@ https://opencheattables.org
}

[ENABLE]

aobscanmodule(INJECT_GET_MONEY,doukyuusei.exe,8B 80 94 03 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(i_money_base_addr)

newmem:
  mov [i_money_base_addr], eax

code:
  mov eax,[eax+00000394]
  jmp return

align 10 cc
  i_money_base_addr:
  dd 0

INJECT_GET_MONEY:
  jmp newmem
  nop
return:
registersymbol(i_money_base_addr)
registersymbol(INJECT_GET_MONEY)

[DISABLE]

INJECT_GET_MONEY:
  db 8B 80 94 03 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: doukyuusei.exe+D8B11

doukyuusei.exe+D8AF6: 1B D2                    - sbb edx,edx
doukyuusei.exe+D8AF8: 23 D0                    - and edx,eax
doukyuusei.exe+D8AFA: 52                       - push edx
doukyuusei.exe+D8AFB: 6A 47                    - push 47
doukyuusei.exe+D8AFD: 68 26 01 00 00           - push 00000126
doukyuusei.exe+D8B02: 6A 00                    - push 00
doukyuusei.exe+D8B04: 6A 00                    - push 00
doukyuusei.exe+D8B06: FF 56 4C                 - call dword ptr [esi+4C]
doukyuusei.exe+D8B09: 8B 47 68                 - mov eax,[edi+68]
doukyuusei.exe+D8B0C: BE E7 00 00 00           - mov esi,000000E7
// ---------- INJECTING HERE ----------
doukyuusei.exe+D8B11: 8B 80 94 03 00 00        - mov eax,[eax+00000394]
// ---------- DONE INJECTING  ----------
doukyuusei.exe+D8B17: 6B C8 64                 - imul ecx,eax,64
doukyuusei.exe+D8B1A: 8B 83 B8 00 00 00        - mov eax,[ebx+000000B8]
doukyuusei.exe+D8B20: 05 20 01 00 00           - add eax,00000120
doukyuusei.exe+D8B25: 89 45 98                 - mov [ebp-68],eax
doukyuusei.exe+D8B28: 8B D1                    - mov edx,ecx
doukyuusei.exe+D8B2A: 89 4D 8C                 - mov [ebp-74],ecx
doukyuusei.exe+D8B2D: B9 01 00 00 00           - mov ecx,00000001
doukyuusei.exe+D8B32: 89 55 9C                 - mov [ebp-64],edx
doukyuusei.exe+D8B35: 89 4D 90                 - mov [ebp-70],ecx
doukyuusei.exe+D8B38: 0F 1F 84 00 00 00 00 00  - nop dword ptr [eax+eax+00000000]
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>16</ID>
          <Description>"Update: move or load / 取得資料：移動或是讀檔"</Description>
          <Color>400080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>12</ID>
          <Description>"Base"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>808080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_money_base_addr</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>15</ID>
          <Description>"Money / 100"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_money_base_addr</Address>
          <Offsets>
            <Offset>394</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>13</ID>
          <Description>"Time (hhmm) / 時間 (時分)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_money_base_addr</Address>
          <Offsets>
            <Offset>5A8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>14</ID>
          <Description>"Month+Day / 日期 (月日)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_money_base_addr</Address>
          <Offsets>
            <Offset>2FC</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>21</ID>
      <Description>"Fill album flags /  開啟全部「Photography / highlight」 (v1.0.4 only)"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : doukyuusei.exe
  Version: 
  Date   : 2022-04-18
  Author :
}

define(address,"doukyuusei.exe"+114E49)
define(bytes,66 0F 6F 56 20)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000)

label(code)
label(return)
label(i_base_flag_addr)
label(i_base_highlight_flag_addr)

newmem:
  cmp dword ptr [i_base_flag_addr], 0
  jne code
  push eax
  push ecx
  lea eax, [esi+20]
  mov [i_base_flag_addr], eax
  mov ecx, a7
loop_fill:
  lea eax, [esi+20+680+ecx]
  mov byte ptr [eax], 1
  loop loop_fill

  lea eax, [esi+20+1048]
  mov [i_base_highlight_flag_addr], eax

  mov ecx, 10D
loop_fill2:
  lea eax, [esi+20+1048+ecx]
  mov byte ptr [eax], 1
  loop loop_fill2
  pop ecx
  pop eax

code:
  movdqa xmm2,[esi+20]
  jmp return

align 10 cc
  i_base_flag_addr:
  dd 0
  i_base_highlight_flag_addr:
  dd 0

address:
  jmp newmem
return:

registersymbol(i_base_flag_addr)
registersymbol(i_base_highlight_flag_addr)

[DISABLE]

address:
  db bytes
  // movdqa xmm2,[esi+20]
unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: doukyuusei.exe+114E49

doukyuusei.exe+114E25: 85 C0                 - test eax,eax
doukyuusei.exe+114E27: 0F 85 E3 00 00 00     - jne doukyuusei.exe+114F10
doukyuusei.exe+114E2D: 8B D1                 - mov edx,ecx
doukyuusei.exe+114E2F: 83 E1 7F              - and ecx,7F
doukyuusei.exe+114E32: C1 EA 07              - shr edx,07
doukyuusei.exe+114E35: 74 66                 - je doukyuusei.exe+114E9D
doukyuusei.exe+114E37: 8D A4 24 00 00 00 00  - lea esp,[esp+00000000]
doukyuusei.exe+114E3E: 8B FF                 - mov edi,edi
doukyuusei.exe+114E40: 66 0F 6F 06           - movdqa xmm0,[esi]
doukyuusei.exe+114E44: 66 0F 6F 4E 10        - movdqa xmm1,[esi+10]
// ---------- INJECTING HERE ----------
doukyuusei.exe+114E49: 66 0F 6F 56 20        - movdqa xmm2,[esi+20]
// ---------- DONE INJECTING  ----------
doukyuusei.exe+114E4E: 66 0F 6F 5E 30        - movdqa xmm3,[esi+30]
doukyuusei.exe+114E53: 66 0F 7F 07           - movdqa [edi],xmm0
doukyuusei.exe+114E57: 66 0F 7F 4F 10        - movdqa [edi+10],xmm1
doukyuusei.exe+114E5C: 66 0F 7F 57 20        - movdqa [edi+20],xmm2
doukyuusei.exe+114E61: 66 0F 7F 5F 30        - movdqa [edi+30],xmm3
doukyuusei.exe+114E66: 66 0F 6F 66 40        - movdqa xmm4,[esi+40]
doukyuusei.exe+114E6B: 66 0F 6F 6E 50        - movdqa xmm5,[esi+50]
doukyuusei.exe+114E70: 66 0F 6F 76 60        - movdqa xmm6,[esi+60]
doukyuusei.exe+114E75: 66 0F 6F 7E 70        - movdqa xmm7,[esi+70]
doukyuusei.exe+114E7A: 66 0F 7F 67 40        - movdqa [edi+40],xmm4
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>29</ID>
          <Description>"Use with caution!! / 小心使用，可能損毀存檔"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>23</ID>
          <Description>"Usage: backup save -&gt; Enable before flags list screen"</Description>
          <Color>400080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>24</ID>
          <Description>"      then click Fligs list icon -&gt; disable -&gt; save to new file -&gt; load old save"</Description>
          <Color>400080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>25</ID>
          <Description>"      Back to title and see if works"</Description>
          <Color>400080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>26</ID>
          <Description>"如何使用：備份存檔 -&gt; 在打開 flag list 前啟用 -&gt; 打開 Flag List"</Description>
          <Color>400080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>27</ID>
          <Description>"      停用 -&gt; 接著存新檔後 -&gt; 回到標題看是否成功"</Description>
          <Color>400080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>28</ID>
          <Description>"Remember to load old save / 記得讀舊存檔遊玩"</Description>
          <Color>400080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>22</ID>
          <Description>"Base"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>808080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_flag_addr</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>32</ID>
          <Description>"Base2"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>808080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_highlight_flag_addr</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
